line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
/* |
3
|
|
|
|
|
|
|
* THIS FILE WAS GENERATED BY PDL::PP! Do not modify! |
4
|
|
|
|
|
|
|
*/ |
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
#define PDL_COMMENT(comment) |
7
|
|
|
|
|
|
|
PDL_COMMENT("This preprocessor symbol is used to add commentary in the PDL ") |
8
|
|
|
|
|
|
|
PDL_COMMENT("autogenerated code. Normally, one would use typical C-style ") |
9
|
|
|
|
|
|
|
PDL_COMMENT("multiline comments (i.e. /* comment */). However, because such ") |
10
|
|
|
|
|
|
|
PDL_COMMENT("comments do not nest, it's not possible for PDL::PP users to ") |
11
|
|
|
|
|
|
|
PDL_COMMENT("comment-out sections of code using multiline comments, as is ") |
12
|
|
|
|
|
|
|
PDL_COMMENT("often the practice when debugging, for example. So, when you ") |
13
|
|
|
|
|
|
|
PDL_COMMENT("see something like this: ") |
14
|
|
|
|
|
|
|
PDL_COMMENT(" ") |
15
|
|
|
|
|
|
|
PDL_COMMENT("Memory access") |
16
|
|
|
|
|
|
|
PDL_COMMENT(" ") |
17
|
|
|
|
|
|
|
PDL_COMMENT("just think of it as a C multiline comment like: ") |
18
|
|
|
|
|
|
|
PDL_COMMENT(" ") |
19
|
|
|
|
|
|
|
PDL_COMMENT(" /* Memory access */ ") |
20
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
#include "EXTERN.h" |
22
|
|
|
|
|
|
|
#include "perl.h" |
23
|
|
|
|
|
|
|
#include "XSUB.h" |
24
|
|
|
|
|
|
|
#include "pdl.h" |
25
|
|
|
|
|
|
|
#include "pdlcore.h" |
26
|
|
|
|
|
|
|
static Core* PDL; PDL_COMMENT("Structure hold core C functions") |
27
|
|
|
|
|
|
|
static int __pdl_debugging = 0; |
28
|
|
|
|
|
|
|
static int __pdl_boundscheck = 0; |
29
|
|
|
|
|
|
|
static SV* CoreSV; PDL_COMMENT("Gets pointer to perl var holding core structure") |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
#if ! 1 |
32
|
|
|
|
|
|
|
# define PP_INDTERM(max, at) at |
33
|
|
|
|
|
|
|
#else |
34
|
|
|
|
|
|
|
# define PP_INDTERM(max, at) (__pdl_boundscheck? PDL->safe_indterm(max,at, __FILE__, __LINE__) : at) |
35
|
|
|
|
|
|
|
#endif |
36
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
#include "cluster.h" |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
//#define CDEBUG 1 |
40
|
|
|
|
|
|
|
//#undef CDEBUG |
41
|
|
|
|
|
|
|
|
42
|
0
|
|
|
|
|
|
void print_pp_dbl(int nrows, int ncols, double **pp) { |
43
|
|
|
|
|
|
|
int i,j; |
44
|
0
|
0
|
|
|
|
|
for (i=0; i
|
45
|
0
|
|
|
|
|
|
printf(" %d:[ ", i); |
46
|
0
|
0
|
|
|
|
|
for (j=0; j
|
47
|
0
|
|
|
|
|
|
printf("%d=%lf ", j, pp[i][j]); |
48
|
|
|
|
|
|
|
} |
49
|
0
|
|
|
|
|
|
printf("]\n"); |
50
|
|
|
|
|
|
|
} |
51
|
0
|
|
|
|
|
|
} |
52
|
|
|
|
|
|
|
static |
53
|
57
|
|
|
|
|
|
void **pp_alloc(int nrows) |
54
|
|
|
|
|
|
|
{ |
55
|
57
|
|
|
|
|
|
return ((void **)malloc(nrows*sizeof(void**))); |
56
|
|
|
|
|
|
|
} |
57
|
|
|
|
|
|
|
static |
58
|
25
|
|
|
|
|
|
double **p2pp_dbl(int nrows, int ncols, double *p, double **matrix) |
59
|
|
|
|
|
|
|
{ |
60
|
|
|
|
|
|
|
int i; |
61
|
25
|
50
|
|
|
|
|
if (!(p && nrows && ncols)) return NULL; |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
62
|
25
|
50
|
|
|
|
|
if (!matrix) matrix = (double **)pp_alloc(nrows); |
63
|
215
|
100
|
|
|
|
|
for (i=0; i < nrows; i++) { |
64
|
190
|
|
|
|
|
|
matrix[i] = p + (i*ncols); |
65
|
|
|
|
|
|
|
#ifdef CDEBUG |
66
|
|
|
|
|
|
|
printf("p2pp_dbl(nr=%d,nc=%d,p=%p) : (p+%d*%d)=%p\n", nrows,ncols,p, i,ncols,matrix[i]); |
67
|
|
|
|
|
|
|
#endif |
68
|
|
|
|
|
|
|
} |
69
|
25
|
|
|
|
|
|
return matrix; |
70
|
|
|
|
|
|
|
} |
71
|
30
|
|
|
|
|
|
int **p2pp_int(int nrows, int ncols, int *p, int **matrix) |
72
|
|
|
|
|
|
|
{ |
73
|
|
|
|
|
|
|
int i; |
74
|
30
|
50
|
|
|
|
|
if (!(p && nrows && ncols)) return NULL; |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
75
|
30
|
50
|
|
|
|
|
if (!matrix) matrix = (int **)pp_alloc(nrows); |
76
|
230
|
100
|
|
|
|
|
for (i=0; i < nrows; i++) { |
77
|
200
|
|
|
|
|
|
matrix[i] = p + (i*ncols); |
78
|
|
|
|
|
|
|
} |
79
|
30
|
|
|
|
|
|
return matrix; |
80
|
|
|
|
|
|
|
} |
81
|
|
|
|
|
|
|
static |
82
|
2
|
|
|
|
|
|
double **p2pp_dbl_ragged(int nrows, int ncols, double *p, double **matrix) |
83
|
|
|
|
|
|
|
{ |
84
|
|
|
|
|
|
|
int i; |
85
|
2
|
50
|
|
|
|
|
if (!(p && nrows && ncols)) return NULL; |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
86
|
2
|
50
|
|
|
|
|
if (!matrix) matrix = (double **)pp_alloc(nrows); |
87
|
26
|
100
|
|
|
|
|
for (i=0; i < nrows; i++) { |
88
|
24
|
|
|
|
|
|
matrix[i] = p + (i*ncols); |
89
|
|
|
|
|
|
|
} |
90
|
2
|
|
|
|
|
|
return matrix; |
91
|
|
|
|
|
|
|
} |
92
|
|
|
|
|
|
|
static |
93
|
1
|
|
|
|
|
|
void pp2pdl_ragged_dbl(int nrows, int ncols, double **pp, double *p) |
94
|
|
|
|
|
|
|
{ |
95
|
|
|
|
|
|
|
int i,j; |
96
|
1
|
50
|
|
|
|
|
if (!(pp && nrows && ncols)) return; |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
97
|
5
|
100
|
|
|
|
|
for (i=0; i
|
98
|
10
|
100
|
|
|
|
|
for (j=0; j
|
99
|
6
|
|
|
|
|
|
p[i*ncols+j] = pp[i][j]; |
100
|
6
|
|
|
|
|
|
p[j*ncols+i] = pp[i][j]; |
101
|
|
|
|
|
|
|
} |
102
|
4
|
|
|
|
|
|
p[i*ncols+i] = 0; |
103
|
|
|
|
|
|
|
} |
104
|
|
|
|
|
|
|
} |
105
|
|
|
|
|
|
|
static |
106
|
0
|
|
|
|
|
|
void pp2pdl_dbl(int nrows, int ncols, double **pp, double *p) |
107
|
|
|
|
|
|
|
{ |
108
|
|
|
|
|
|
|
int i,j; |
109
|
0
|
0
|
|
|
|
|
if (!(pp && nrows && ncols)) return; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
110
|
0
|
0
|
|
|
|
|
for (i=0; i
|
111
|
0
|
0
|
|
|
|
|
for (j=0; j
|
112
|
0
|
|
|
|
|
|
p[i*ncols+j] = pp[i][j]; |
113
|
|
|
|
|
|
|
} |
114
|
|
|
|
|
|
|
} |
115
|
|
|
|
|
|
|
} |
116
|
|
|
|
|
|
|
static |
117
|
0
|
|
|
|
|
|
Node* p2node(int nnodes, int* tree, double *lnkdist) |
118
|
|
|
|
|
|
|
{ |
119
|
|
|
|
|
|
|
int i; |
120
|
0
|
|
|
|
|
|
Node *nod = NULL; |
121
|
0
|
0
|
|
|
|
|
if (!(nnodes && (tree || lnkdist))) return NULL; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
122
|
0
|
|
|
|
|
|
nod = (Node*)malloc(nnodes*sizeof(Node)); |
123
|
0
|
0
|
|
|
|
|
for (i=0; i < nnodes; ++i) { |
124
|
0
|
0
|
|
|
|
|
nod[i].left = tree ? tree[i*2+0] : 0; |
125
|
0
|
0
|
|
|
|
|
nod[i].right = tree ? tree[i*2+1] : 0; |
126
|
0
|
0
|
|
|
|
|
nod[i].distance = lnkdist ? lnkdist[i] : 0; |
127
|
|
|
|
|
|
|
} |
128
|
0
|
|
|
|
|
|
return nod; |
129
|
|
|
|
|
|
|
} |
130
|
|
|
|
|
|
|
|
131
|
8
|
|
|
|
|
|
void node2p(int nnodes, Node* nod, int* tree, double *lnkdist) |
132
|
|
|
|
|
|
|
{ |
133
|
|
|
|
|
|
|
int i; |
134
|
8
|
50
|
|
|
|
|
if (!(nnodes && nod && (tree || lnkdist))) return; |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
135
|
68
|
100
|
|
|
|
|
for (i=0; i < nnodes; ++i) { |
136
|
60
|
50
|
|
|
|
|
if (tree) { |
137
|
60
|
|
|
|
|
|
tree[i*2+0] = nod[i].left; |
138
|
60
|
|
|
|
|
|
tree[i*2+1] = nod[i].right; |
139
|
|
|
|
|
|
|
} |
140
|
60
|
50
|
|
|
|
|
if (lnkdist) { |
141
|
60
|
|
|
|
|
|
lnkdist[i] = nod[i].distance; |
142
|
|
|
|
|
|
|
} |
143
|
|
|
|
|
|
|
} |
144
|
8
|
|
|
|
|
|
return; |
145
|
|
|
|
|
|
|
} |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
typedef struct pdl_cmean_struct { |
148
|
|
|
|
|
|
|
PDL_TRANS_START(2); |
149
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_a_n;PDL_Indx __n_size; |
150
|
|
|
|
|
|
|
|
151
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
152
|
|
|
|
|
|
|
} pdl_cmean_struct; |
153
|
|
|
|
|
|
|
|
154
|
2
|
|
|
|
|
|
void pdl_cmean_redodims(pdl_trans *__tr ) { |
155
|
|
|
|
|
|
|
int __dim; |
156
|
2
|
|
|
|
|
|
pdl_cmean_struct *__privtrans = (pdl_cmean_struct *) __tr; |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
{ |
159
|
|
|
|
|
|
|
PDL_Indx __creating[2]; |
160
|
2
|
|
|
|
|
|
__privtrans->__n_size = -1; |
161
|
2
|
|
|
|
|
|
__creating[0] = 0; |
162
|
2
|
50
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
50
|
|
|
|
|
|
163
|
|
|
|
|
|
|
{ |
164
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
165
|
|
|
|
|
|
|
|
166
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
167
|
0
|
|
|
|
|
|
} break; case PDL_D: { |
168
|
2
|
50
|
|
|
|
|
PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
169
|
2
|
|
|
|
|
|
PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
170
|
|
|
|
|
|
|
|
171
|
2
|
50
|
|
|
|
|
PDL_Double * b_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
172
|
2
|
|
|
|
|
|
PDL_Double * b_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
173
|
|
|
|
|
|
|
|
174
|
2
|
|
|
|
|
|
{register PDL_Indx __inc_a_n = __privtrans->__inc_a_n; |
175
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
PDL_COMMENT("none") |
177
|
2
|
|
|
|
|
|
} break;} |
178
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
179
|
|
|
|
|
|
|
} |
180
|
|
|
|
|
|
|
} |
181
|
|
|
|
|
|
|
{ |
182
|
|
|
|
|
|
|
static char *__parnames[] = {"a","b"}; |
183
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,0}; |
184
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::cmean"; |
185
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
186
|
|
|
|
|
|
|
__funcname, __parnames, 2 |
187
|
|
|
|
|
|
|
}; |
188
|
|
|
|
|
|
|
|
189
|
2
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
190
|
|
|
|
|
|
|
__realdims,__creating,2, |
191
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
192
|
2
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
193
|
|
|
|
|
|
|
0 ); |
194
|
|
|
|
|
|
|
} |
195
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
196
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
197
|
|
|
|
|
|
|
} |
198
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
199
|
2
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
200
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
201
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
202
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in cmean:" "Wrong dims\n"); |
203
|
|
|
|
|
|
|
} |
204
|
|
|
|
|
|
|
} |
205
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
206
|
2
|
50
|
|
|
|
|
if(!__creating[1]) { |
207
|
|
|
|
|
|
|
} else { |
208
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
209
|
2
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
210
|
|
|
|
|
|
|
} |
211
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
212
|
2
|
|
|
|
|
|
void *hdrp = NULL; |
213
|
2
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
214
|
2
|
|
|
|
|
|
SV *hdr_copy = NULL; |
215
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
216
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
217
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
218
|
|
|
|
|
|
|
) { |
219
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
220
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
221
|
|
|
|
|
|
|
} |
222
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
223
|
0
|
0
|
|
|
|
|
!__creating[1] && |
224
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
225
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
226
|
|
|
|
|
|
|
) { |
227
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
228
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
229
|
|
|
|
|
|
|
} |
230
|
2
|
50
|
|
|
|
|
if (hdrp) { |
231
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
232
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
233
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
234
|
|
|
|
|
|
|
int count; |
235
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
236
|
0
|
|
|
|
|
|
dSP; |
237
|
0
|
|
|
|
|
|
ENTER ; |
238
|
0
|
|
|
|
|
|
SAVETMPS ; |
239
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
240
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
241
|
0
|
|
|
|
|
|
PUTBACK ; |
242
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
243
|
0
|
|
|
|
|
|
SPAGAIN ; |
244
|
0
|
0
|
|
|
|
|
if(count != 1) |
245
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
246
|
|
|
|
|
|
|
|
247
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
248
|
|
|
|
|
|
|
|
249
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
250
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
251
|
|
|
|
|
|
|
} |
252
|
|
|
|
|
|
|
|
253
|
0
|
0
|
|
|
|
|
FREETMPS ; |
254
|
0
|
|
|
|
|
|
LEAVE ; |
255
|
|
|
|
|
|
|
|
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
258
|
|
|
|
|
|
|
|
259
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
260
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
261
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
262
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
263
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
264
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
265
|
|
|
|
|
|
|
} |
266
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
267
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
268
|
|
|
|
|
|
|
|
269
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
270
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
271
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
272
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
273
|
2
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
274
|
0
|
|
|
|
|
|
__privtrans->__inc_a_n = 0; else |
275
|
2
|
|
|
|
|
|
__privtrans->__inc_a_n = __privtrans->pdls[0]->dimincs[0]; __privtrans->__ddone = 1; |
276
|
|
|
|
|
|
|
} |
277
|
2
|
|
|
|
|
|
} |
278
|
|
|
|
|
|
|
|
279
|
|
|
|
|
|
|
|
280
|
0
|
|
|
|
|
|
pdl_trans * pdl_cmean_copy(pdl_trans *__tr ) { |
281
|
|
|
|
|
|
|
int __dim; |
282
|
0
|
|
|
|
|
|
pdl_cmean_struct *__privtrans = (pdl_cmean_struct *) __tr; |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
{ |
285
|
0
|
|
|
|
|
|
pdl_cmean_struct *__copy = malloc(sizeof(pdl_cmean_struct)); |
286
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
287
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
288
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
289
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
290
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
291
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
292
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
293
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
294
|
|
|
|
|
|
|
{int i; |
295
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
296
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
297
|
|
|
|
|
|
|
} |
298
|
|
|
|
|
|
|
|
299
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
300
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_a_n=__copy->__inc_a_n;__copy->__n_size=__privtrans->__n_size; |
301
|
|
|
|
|
|
|
} |
302
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
303
|
|
|
|
|
|
|
} |
304
|
|
|
|
|
|
|
} |
305
|
|
|
|
|
|
|
|
306
|
|
|
|
|
|
|
|
307
|
2
|
|
|
|
|
|
void pdl_cmean_readdata(pdl_trans *__tr ) { |
308
|
|
|
|
|
|
|
int __dim; |
309
|
2
|
|
|
|
|
|
pdl_cmean_struct *__privtrans = (pdl_cmean_struct *) __tr; |
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
{ |
312
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
313
|
|
|
|
|
|
|
|
314
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
315
|
0
|
|
|
|
|
|
} break; case PDL_D: { |
316
|
2
|
50
|
|
|
|
|
PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
317
|
2
|
|
|
|
|
|
PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
318
|
|
|
|
|
|
|
|
319
|
2
|
50
|
|
|
|
|
PDL_Double * b_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
320
|
2
|
|
|
|
|
|
PDL_Double * b_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
321
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
|
323
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
324
|
2
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
325
|
2
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
326
|
2
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
327
|
2
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
328
|
2
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
329
|
2
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
330
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
331
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
332
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
333
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
334
|
2
|
|
|
|
|
|
a_datap += __offsp[0]; |
335
|
2
|
|
|
|
|
|
b_datap += __offsp[1]; |
336
|
4
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
337
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
338
|
2
|
|
|
|
|
|
__tind2++ |
339
|
2
|
|
|
|
|
|
,a_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
340
|
2
|
|
|
|
|
|
,b_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
341
|
|
|
|
|
|
|
) |
342
|
|
|
|
|
|
|
{ |
343
|
4
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
344
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
345
|
2
|
|
|
|
|
|
__tind1++ |
346
|
2
|
|
|
|
|
|
,a_datap += __tinc0_0 |
347
|
2
|
|
|
|
|
|
,b_datap += __tinc0_1 |
348
|
|
|
|
|
|
|
) |
349
|
2
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n; |
350
|
|
|
|
|
|
|
|
351
|
2
|
|
|
|
|
|
(b_datap)[0] PDL_COMMENT("ACCESS()") = mean(__privtrans->__n_size, a_datap); |
352
|
|
|
|
|
|
|
} |
353
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
354
|
|
|
|
|
|
|
} |
355
|
|
|
|
|
|
|
} |
356
|
2
|
|
|
|
|
|
a_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
357
|
2
|
|
|
|
|
|
b_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
358
|
2
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
359
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
360
|
|
|
|
|
|
|
} |
361
|
|
|
|
|
|
|
} |
362
|
|
|
|
|
|
|
} |
363
|
|
|
|
|
|
|
|
364
|
|
|
|
|
|
|
|
365
|
|
|
|
|
|
|
|
366
|
|
|
|
|
|
|
|
367
|
2
|
|
|
|
|
|
void pdl_cmean_free(pdl_trans *__tr ) { |
368
|
|
|
|
|
|
|
int __dim; |
369
|
2
|
|
|
|
|
|
pdl_cmean_struct *__privtrans = (pdl_cmean_struct *) __tr; |
370
|
|
|
|
|
|
|
|
371
|
|
|
|
|
|
|
{ |
372
|
|
|
|
|
|
|
|
373
|
2
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
374
|
|
|
|
|
|
|
|
375
|
2
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
376
|
2
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
377
|
|
|
|
|
|
|
;;; |
378
|
|
|
|
|
|
|
} |
379
|
|
|
|
|
|
|
|
380
|
|
|
|
|
|
|
} |
381
|
2
|
|
|
|
|
|
} |
382
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
|
386
|
|
|
|
|
|
|
static char pdl_cmean_vtable_flags[] = |
387
|
|
|
|
|
|
|
{ 0,PDL_TPDL_VAFFINE_OK}; |
388
|
|
|
|
|
|
|
pdl_transvtable pdl_cmean_vtable = { |
389
|
|
|
|
|
|
|
0,0, 1, 2, pdl_cmean_vtable_flags, |
390
|
|
|
|
|
|
|
pdl_cmean_redodims, pdl_cmean_readdata, NULL, |
391
|
|
|
|
|
|
|
pdl_cmean_free,NULL,NULL,pdl_cmean_copy, |
392
|
|
|
|
|
|
|
sizeof(pdl_cmean_struct),"pdl_cmean_vtable" |
393
|
|
|
|
|
|
|
}; |
394
|
|
|
|
|
|
|
|
395
|
|
|
|
|
|
|
typedef struct pdl_cmedian_struct { |
396
|
|
|
|
|
|
|
PDL_TRANS_START(2); |
397
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_a_n;PDL_Indx __n_size; |
398
|
|
|
|
|
|
|
|
399
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
400
|
|
|
|
|
|
|
} pdl_cmedian_struct; |
401
|
|
|
|
|
|
|
|
402
|
2
|
|
|
|
|
|
void pdl_cmedian_redodims(pdl_trans *__tr ) { |
403
|
|
|
|
|
|
|
int __dim; |
404
|
2
|
|
|
|
|
|
pdl_cmedian_struct *__privtrans = (pdl_cmedian_struct *) __tr; |
405
|
|
|
|
|
|
|
|
406
|
|
|
|
|
|
|
{ |
407
|
|
|
|
|
|
|
PDL_Indx __creating[2]; |
408
|
2
|
|
|
|
|
|
__privtrans->__n_size = -1; |
409
|
2
|
|
|
|
|
|
__creating[0] = 0; |
410
|
2
|
50
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
50
|
|
|
|
|
|
411
|
|
|
|
|
|
|
{ |
412
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
413
|
|
|
|
|
|
|
|
414
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
415
|
0
|
|
|
|
|
|
} break; case PDL_D: { |
416
|
2
|
50
|
|
|
|
|
PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
417
|
2
|
|
|
|
|
|
PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
418
|
|
|
|
|
|
|
|
419
|
2
|
50
|
|
|
|
|
PDL_Double * b_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
420
|
2
|
|
|
|
|
|
PDL_Double * b_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
421
|
|
|
|
|
|
|
|
422
|
2
|
|
|
|
|
|
{register PDL_Indx __inc_a_n = __privtrans->__inc_a_n; |
423
|
|
|
|
|
|
|
|
424
|
|
|
|
|
|
|
PDL_COMMENT("none") |
425
|
2
|
|
|
|
|
|
} break;} |
426
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
427
|
|
|
|
|
|
|
} |
428
|
|
|
|
|
|
|
} |
429
|
|
|
|
|
|
|
{ |
430
|
|
|
|
|
|
|
static char *__parnames[] = {"a","b"}; |
431
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,0}; |
432
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::cmedian"; |
433
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
434
|
|
|
|
|
|
|
__funcname, __parnames, 2 |
435
|
|
|
|
|
|
|
}; |
436
|
|
|
|
|
|
|
|
437
|
2
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
438
|
|
|
|
|
|
|
__realdims,__creating,2, |
439
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
440
|
2
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
441
|
|
|
|
|
|
|
0 ); |
442
|
|
|
|
|
|
|
} |
443
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
444
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
445
|
|
|
|
|
|
|
} |
446
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
447
|
2
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
448
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
449
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
450
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in cmedian:" "Wrong dims\n"); |
451
|
|
|
|
|
|
|
} |
452
|
|
|
|
|
|
|
} |
453
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
454
|
2
|
50
|
|
|
|
|
if(!__creating[1]) { |
455
|
|
|
|
|
|
|
} else { |
456
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
457
|
2
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
458
|
|
|
|
|
|
|
} |
459
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
460
|
2
|
|
|
|
|
|
void *hdrp = NULL; |
461
|
2
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
462
|
2
|
|
|
|
|
|
SV *hdr_copy = NULL; |
463
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
464
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
465
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
466
|
|
|
|
|
|
|
) { |
467
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
468
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
469
|
|
|
|
|
|
|
} |
470
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
471
|
0
|
0
|
|
|
|
|
!__creating[1] && |
472
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
473
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
474
|
|
|
|
|
|
|
) { |
475
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
476
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
477
|
|
|
|
|
|
|
} |
478
|
2
|
50
|
|
|
|
|
if (hdrp) { |
479
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
480
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
481
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
482
|
|
|
|
|
|
|
int count; |
483
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
484
|
0
|
|
|
|
|
|
dSP; |
485
|
0
|
|
|
|
|
|
ENTER ; |
486
|
0
|
|
|
|
|
|
SAVETMPS ; |
487
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
488
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
489
|
0
|
|
|
|
|
|
PUTBACK ; |
490
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
491
|
0
|
|
|
|
|
|
SPAGAIN ; |
492
|
0
|
0
|
|
|
|
|
if(count != 1) |
493
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
494
|
|
|
|
|
|
|
|
495
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
496
|
|
|
|
|
|
|
|
497
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
498
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
499
|
|
|
|
|
|
|
} |
500
|
|
|
|
|
|
|
|
501
|
0
|
0
|
|
|
|
|
FREETMPS ; |
502
|
0
|
|
|
|
|
|
LEAVE ; |
503
|
|
|
|
|
|
|
|
504
|
|
|
|
|
|
|
|
505
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
506
|
|
|
|
|
|
|
|
507
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
508
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
509
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
510
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
511
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
512
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
513
|
|
|
|
|
|
|
} |
514
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
515
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
516
|
|
|
|
|
|
|
|
517
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
518
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
519
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
520
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
521
|
2
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
522
|
0
|
|
|
|
|
|
__privtrans->__inc_a_n = 0; else |
523
|
2
|
|
|
|
|
|
__privtrans->__inc_a_n = __privtrans->pdls[0]->dimincs[0]; __privtrans->__ddone = 1; |
524
|
|
|
|
|
|
|
} |
525
|
2
|
|
|
|
|
|
} |
526
|
|
|
|
|
|
|
|
527
|
|
|
|
|
|
|
|
528
|
0
|
|
|
|
|
|
pdl_trans * pdl_cmedian_copy(pdl_trans *__tr ) { |
529
|
|
|
|
|
|
|
int __dim; |
530
|
0
|
|
|
|
|
|
pdl_cmedian_struct *__privtrans = (pdl_cmedian_struct *) __tr; |
531
|
|
|
|
|
|
|
|
532
|
|
|
|
|
|
|
{ |
533
|
0
|
|
|
|
|
|
pdl_cmedian_struct *__copy = malloc(sizeof(pdl_cmedian_struct)); |
534
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
535
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
536
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
537
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
538
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
539
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
540
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
541
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
542
|
|
|
|
|
|
|
{int i; |
543
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
544
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
545
|
|
|
|
|
|
|
} |
546
|
|
|
|
|
|
|
|
547
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
548
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_a_n=__copy->__inc_a_n;__copy->__n_size=__privtrans->__n_size; |
549
|
|
|
|
|
|
|
} |
550
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
551
|
|
|
|
|
|
|
} |
552
|
|
|
|
|
|
|
} |
553
|
|
|
|
|
|
|
|
554
|
|
|
|
|
|
|
|
555
|
2
|
|
|
|
|
|
void pdl_cmedian_readdata(pdl_trans *__tr ) { |
556
|
|
|
|
|
|
|
int __dim; |
557
|
2
|
|
|
|
|
|
pdl_cmedian_struct *__privtrans = (pdl_cmedian_struct *) __tr; |
558
|
|
|
|
|
|
|
|
559
|
|
|
|
|
|
|
{ |
560
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
561
|
|
|
|
|
|
|
|
562
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
563
|
0
|
|
|
|
|
|
} break; case PDL_D: { |
564
|
2
|
50
|
|
|
|
|
PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
565
|
2
|
|
|
|
|
|
PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
566
|
|
|
|
|
|
|
|
567
|
2
|
50
|
|
|
|
|
PDL_Double * b_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
568
|
2
|
|
|
|
|
|
PDL_Double * b_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
569
|
|
|
|
|
|
|
|
570
|
|
|
|
|
|
|
|
571
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
572
|
2
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
573
|
2
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
574
|
2
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
575
|
2
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
576
|
2
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
577
|
2
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
578
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
579
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
580
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
581
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
582
|
2
|
|
|
|
|
|
a_datap += __offsp[0]; |
583
|
2
|
|
|
|
|
|
b_datap += __offsp[1]; |
584
|
4
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
585
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
586
|
2
|
|
|
|
|
|
__tind2++ |
587
|
2
|
|
|
|
|
|
,a_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
588
|
2
|
|
|
|
|
|
,b_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
589
|
|
|
|
|
|
|
) |
590
|
|
|
|
|
|
|
{ |
591
|
4
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
592
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
593
|
2
|
|
|
|
|
|
__tind1++ |
594
|
2
|
|
|
|
|
|
,a_datap += __tinc0_0 |
595
|
2
|
|
|
|
|
|
,b_datap += __tinc0_1 |
596
|
|
|
|
|
|
|
) |
597
|
2
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n; |
598
|
|
|
|
|
|
|
|
599
|
2
|
|
|
|
|
|
(b_datap)[0] PDL_COMMENT("ACCESS()") = median(__privtrans->__n_size, a_datap); |
600
|
|
|
|
|
|
|
} |
601
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
602
|
|
|
|
|
|
|
} |
603
|
|
|
|
|
|
|
} |
604
|
2
|
|
|
|
|
|
a_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
605
|
2
|
|
|
|
|
|
b_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
606
|
2
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
607
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
608
|
|
|
|
|
|
|
} |
609
|
|
|
|
|
|
|
} |
610
|
|
|
|
|
|
|
} |
611
|
|
|
|
|
|
|
|
612
|
|
|
|
|
|
|
|
613
|
|
|
|
|
|
|
|
614
|
|
|
|
|
|
|
|
615
|
2
|
|
|
|
|
|
void pdl_cmedian_free(pdl_trans *__tr ) { |
616
|
|
|
|
|
|
|
int __dim; |
617
|
2
|
|
|
|
|
|
pdl_cmedian_struct *__privtrans = (pdl_cmedian_struct *) __tr; |
618
|
|
|
|
|
|
|
|
619
|
|
|
|
|
|
|
{ |
620
|
|
|
|
|
|
|
|
621
|
2
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
622
|
|
|
|
|
|
|
|
623
|
2
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
624
|
2
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
625
|
|
|
|
|
|
|
;;; |
626
|
|
|
|
|
|
|
} |
627
|
|
|
|
|
|
|
|
628
|
|
|
|
|
|
|
} |
629
|
2
|
|
|
|
|
|
} |
630
|
|
|
|
|
|
|
|
631
|
|
|
|
|
|
|
|
632
|
|
|
|
|
|
|
|
633
|
|
|
|
|
|
|
|
634
|
|
|
|
|
|
|
static char pdl_cmedian_vtable_flags[] = |
635
|
|
|
|
|
|
|
{ 0,PDL_TPDL_VAFFINE_OK}; |
636
|
|
|
|
|
|
|
pdl_transvtable pdl_cmedian_vtable = { |
637
|
|
|
|
|
|
|
0,0, 1, 2, pdl_cmedian_vtable_flags, |
638
|
|
|
|
|
|
|
pdl_cmedian_redodims, pdl_cmedian_readdata, NULL, |
639
|
|
|
|
|
|
|
pdl_cmedian_free,NULL,NULL,pdl_cmedian_copy, |
640
|
|
|
|
|
|
|
sizeof(pdl_cmedian_struct),"pdl_cmedian_vtable" |
641
|
|
|
|
|
|
|
}; |
642
|
|
|
|
|
|
|
|
643
|
|
|
|
|
|
|
typedef struct pdl_calculate_weights_struct { |
644
|
|
|
|
|
|
|
PDL_TRANS_START(6); |
645
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_oweights_d;PDL_Indx __n_size;PDL_Indx __d_size; |
646
|
|
|
|
|
|
|
char *distFlag; |
647
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
648
|
|
|
|
|
|
|
} pdl_calculate_weights_struct; |
649
|
|
|
|
|
|
|
|
650
|
0
|
|
|
|
|
|
void pdl_calculate_weights_redodims(pdl_trans *__tr ) { |
651
|
|
|
|
|
|
|
int __dim; |
652
|
0
|
|
|
|
|
|
pdl_calculate_weights_struct *__privtrans = (pdl_calculate_weights_struct *) __tr; |
653
|
|
|
|
|
|
|
|
654
|
|
|
|
|
|
|
{ |
655
|
|
|
|
|
|
|
PDL_Indx __creating[6]; |
656
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
657
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
658
|
0
|
|
|
|
|
|
__creating[0] = 0; |
659
|
0
|
|
|
|
|
|
__creating[1] = 0; |
660
|
0
|
|
|
|
|
|
__creating[2] = 0; |
661
|
0
|
|
|
|
|
|
__creating[3] = 0; |
662
|
0
|
|
|
|
|
|
__creating[4] = 0; |
663
|
0
|
0
|
|
|
|
|
__creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]); |
|
|
0
|
|
|
|
|
|
664
|
|
|
|
|
|
|
{ |
665
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
666
|
|
|
|
|
|
|
|
667
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
668
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
669
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
670
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
671
|
|
|
|
|
|
|
|
672
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
673
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
674
|
|
|
|
|
|
|
|
675
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
676
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
677
|
|
|
|
|
|
|
|
678
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
679
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
680
|
|
|
|
|
|
|
|
681
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
682
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
683
|
|
|
|
|
|
|
|
684
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
685
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
686
|
|
|
|
|
|
|
|
687
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
688
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
689
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
690
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
691
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
692
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
693
|
|
|
|
|
|
|
|
694
|
|
|
|
|
|
|
PDL_COMMENT("none") |
695
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
696
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
697
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
698
|
|
|
|
|
|
|
|
699
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
700
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
701
|
|
|
|
|
|
|
|
702
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
703
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
704
|
|
|
|
|
|
|
|
705
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
706
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
707
|
|
|
|
|
|
|
|
708
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
709
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
710
|
|
|
|
|
|
|
|
711
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
712
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
713
|
|
|
|
|
|
|
|
714
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
715
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
716
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
717
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
718
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
719
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
720
|
|
|
|
|
|
|
|
721
|
|
|
|
|
|
|
PDL_COMMENT("none") |
722
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
723
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
724
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
725
|
|
|
|
|
|
|
|
726
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
727
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
728
|
|
|
|
|
|
|
|
729
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
730
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
731
|
|
|
|
|
|
|
|
732
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
733
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
734
|
|
|
|
|
|
|
|
735
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
736
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
737
|
|
|
|
|
|
|
|
738
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
739
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
740
|
|
|
|
|
|
|
|
741
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
742
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
743
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
744
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
745
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
746
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
747
|
|
|
|
|
|
|
|
748
|
|
|
|
|
|
|
PDL_COMMENT("none") |
749
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
750
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
751
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
752
|
|
|
|
|
|
|
|
753
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
754
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
755
|
|
|
|
|
|
|
|
756
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
757
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
758
|
|
|
|
|
|
|
|
759
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
760
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
761
|
|
|
|
|
|
|
|
762
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
763
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
764
|
|
|
|
|
|
|
|
765
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
766
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
767
|
|
|
|
|
|
|
|
768
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
769
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
770
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
771
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
772
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
773
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
774
|
|
|
|
|
|
|
|
775
|
|
|
|
|
|
|
PDL_COMMENT("none") |
776
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
777
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
778
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
779
|
|
|
|
|
|
|
|
780
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
781
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
782
|
|
|
|
|
|
|
|
783
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
784
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
785
|
|
|
|
|
|
|
|
786
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
787
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
788
|
|
|
|
|
|
|
|
789
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
790
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
791
|
|
|
|
|
|
|
|
792
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
793
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
794
|
|
|
|
|
|
|
|
795
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
796
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
797
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
798
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
799
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
800
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
801
|
|
|
|
|
|
|
|
802
|
|
|
|
|
|
|
PDL_COMMENT("none") |
803
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
804
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
805
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
806
|
|
|
|
|
|
|
|
807
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
808
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
809
|
|
|
|
|
|
|
|
810
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
811
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
812
|
|
|
|
|
|
|
|
813
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
814
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
815
|
|
|
|
|
|
|
|
816
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
817
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
818
|
|
|
|
|
|
|
|
819
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
820
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
821
|
|
|
|
|
|
|
|
822
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
823
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
824
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
825
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
826
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
827
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
828
|
|
|
|
|
|
|
|
829
|
|
|
|
|
|
|
PDL_COMMENT("none") |
830
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
831
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
832
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
833
|
|
|
|
|
|
|
|
834
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
835
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
836
|
|
|
|
|
|
|
|
837
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
838
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
839
|
|
|
|
|
|
|
|
840
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
841
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
842
|
|
|
|
|
|
|
|
843
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
844
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
845
|
|
|
|
|
|
|
|
846
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
847
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
848
|
|
|
|
|
|
|
|
849
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
850
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
851
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
852
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
853
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
854
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
855
|
|
|
|
|
|
|
|
856
|
|
|
|
|
|
|
PDL_COMMENT("none") |
857
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
858
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
859
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
860
|
|
|
|
|
|
|
|
861
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
862
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
863
|
|
|
|
|
|
|
|
864
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
865
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
866
|
|
|
|
|
|
|
|
867
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
868
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
869
|
|
|
|
|
|
|
|
870
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
871
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
872
|
|
|
|
|
|
|
|
873
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
874
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
875
|
|
|
|
|
|
|
|
876
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
877
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
878
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
879
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
880
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
881
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
882
|
|
|
|
|
|
|
|
883
|
|
|
|
|
|
|
PDL_COMMENT("none") |
884
|
0
|
|
|
|
|
|
} break;} |
885
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
886
|
|
|
|
|
|
|
} |
887
|
|
|
|
|
|
|
} |
888
|
|
|
|
|
|
|
{ |
889
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","cutoff","exponent","oweights"}; |
890
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,0,0,1}; |
891
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::calculate_weights"; |
892
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
893
|
|
|
|
|
|
|
__funcname, __parnames, 6 |
894
|
|
|
|
|
|
|
}; |
895
|
|
|
|
|
|
|
|
896
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
897
|
|
|
|
|
|
|
__realdims,__creating,6, |
898
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
899
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
900
|
|
|
|
|
|
|
0 ); |
901
|
|
|
|
|
|
|
} |
902
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
903
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
904
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
905
|
|
|
|
|
|
|
} |
906
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
907
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
908
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
909
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
910
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in calculate_weights:" "Wrong dims\n"); |
911
|
|
|
|
|
|
|
} |
912
|
|
|
|
|
|
|
} |
913
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
914
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
915
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
916
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
917
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in calculate_weights:" "Wrong dims\n"); |
918
|
|
|
|
|
|
|
} |
919
|
|
|
|
|
|
|
} |
920
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
921
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
922
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
923
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
924
|
|
|
|
|
|
|
} |
925
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
926
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
927
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
928
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
929
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in calculate_weights:" "Wrong dims\n"); |
930
|
|
|
|
|
|
|
} |
931
|
|
|
|
|
|
|
} |
932
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
933
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
934
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
935
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
936
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in calculate_weights:" "Wrong dims\n"); |
937
|
|
|
|
|
|
|
} |
938
|
|
|
|
|
|
|
} |
939
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
940
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
941
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
942
|
|
|
|
|
|
|
} |
943
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
944
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
945
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
946
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
947
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in calculate_weights:" "Wrong dims\n"); |
948
|
|
|
|
|
|
|
} |
949
|
|
|
|
|
|
|
} |
950
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
951
|
0
|
0
|
|
|
|
|
if(!__creating[5]) { |
952
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
953
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
954
|
|
|
|
|
|
|
} |
955
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
956
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[5]))->dims[0]; |
957
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
958
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
959
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in calculate_weights:" "Wrong dims\n"); |
960
|
|
|
|
|
|
|
} |
961
|
|
|
|
|
|
|
} |
962
|
|
|
|
|
|
|
} else { |
963
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size; |
964
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0); |
965
|
|
|
|
|
|
|
} |
966
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
967
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
968
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
969
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
970
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
971
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
972
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
973
|
|
|
|
|
|
|
) { |
974
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
975
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
976
|
|
|
|
|
|
|
} |
977
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
978
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
979
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
980
|
|
|
|
|
|
|
) { |
981
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
982
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
983
|
|
|
|
|
|
|
} |
984
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
985
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
986
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
987
|
|
|
|
|
|
|
) { |
988
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
989
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
990
|
|
|
|
|
|
|
} |
991
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
992
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
993
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
994
|
|
|
|
|
|
|
) { |
995
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
996
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
997
|
|
|
|
|
|
|
} |
998
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
999
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
1000
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
1001
|
|
|
|
|
|
|
) { |
1002
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
1003
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
1004
|
|
|
|
|
|
|
} |
1005
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
1006
|
0
|
0
|
|
|
|
|
!__creating[5] && |
1007
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
1008
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
1009
|
|
|
|
|
|
|
) { |
1010
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
1011
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
1012
|
|
|
|
|
|
|
} |
1013
|
0
|
0
|
|
|
|
|
if (hdrp) { |
1014
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
1015
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
1016
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
1017
|
|
|
|
|
|
|
int count; |
1018
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
1019
|
0
|
|
|
|
|
|
dSP; |
1020
|
0
|
|
|
|
|
|
ENTER ; |
1021
|
0
|
|
|
|
|
|
SAVETMPS ; |
1022
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
1023
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
1024
|
0
|
|
|
|
|
|
PUTBACK ; |
1025
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
1026
|
0
|
|
|
|
|
|
SPAGAIN ; |
1027
|
0
|
0
|
|
|
|
|
if(count != 1) |
1028
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
1029
|
|
|
|
|
|
|
|
1030
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
1031
|
|
|
|
|
|
|
|
1032
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
1033
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
1034
|
|
|
|
|
|
|
} |
1035
|
|
|
|
|
|
|
|
1036
|
0
|
0
|
|
|
|
|
FREETMPS ; |
1037
|
0
|
|
|
|
|
|
LEAVE ; |
1038
|
|
|
|
|
|
|
|
1039
|
|
|
|
|
|
|
|
1040
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
1041
|
|
|
|
|
|
|
|
1042
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[5]->hdrsv != hdrp ){ |
1043
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
1044
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv ); |
1045
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
1046
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
1047
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->hdrsv = hdr_copy; |
1048
|
|
|
|
|
|
|
} |
1049
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
1050
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->state |= PDL_HDRCPY; |
1051
|
|
|
|
|
|
|
|
1052
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
1053
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
1054
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
1055
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
1056
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
1057
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
1058
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
1059
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
1060
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
1061
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
1062
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
1063
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
1064
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
1065
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
1066
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
1067
|
0
|
|
|
|
|
|
__privtrans->__inc_oweights_d = 0; else |
1068
|
0
|
0
|
|
|
|
|
__privtrans->__inc_oweights_d = PDL_REPRINC(__privtrans->pdls[5],0); __privtrans->__ddone = 1; |
1069
|
|
|
|
|
|
|
} |
1070
|
0
|
|
|
|
|
|
} |
1071
|
|
|
|
|
|
|
|
1072
|
|
|
|
|
|
|
|
1073
|
0
|
|
|
|
|
|
pdl_trans * pdl_calculate_weights_copy(pdl_trans *__tr ) { |
1074
|
|
|
|
|
|
|
int __dim; |
1075
|
0
|
|
|
|
|
|
pdl_calculate_weights_struct *__privtrans = (pdl_calculate_weights_struct *) __tr; |
1076
|
|
|
|
|
|
|
|
1077
|
|
|
|
|
|
|
{ |
1078
|
0
|
|
|
|
|
|
pdl_calculate_weights_struct *__copy = malloc(sizeof(pdl_calculate_weights_struct)); |
1079
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
1080
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
1081
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
1082
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
1083
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
1084
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
1085
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
1086
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
1087
|
|
|
|
|
|
|
{int i; |
1088
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
1089
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
1090
|
|
|
|
|
|
|
} |
1091
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);; |
1092
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
1093
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_oweights_d=__copy->__inc_oweights_d;__copy->__n_size=__privtrans->__n_size;__copy->__d_size=__privtrans->__d_size; |
1094
|
|
|
|
|
|
|
} |
1095
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
1096
|
|
|
|
|
|
|
} |
1097
|
|
|
|
|
|
|
} |
1098
|
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
|
|
1100
|
0
|
|
|
|
|
|
void pdl_calculate_weights_readdata(pdl_trans *__tr ) { |
1101
|
|
|
|
|
|
|
int __dim; |
1102
|
0
|
|
|
|
|
|
pdl_calculate_weights_struct *__privtrans = (pdl_calculate_weights_struct *) __tr; |
1103
|
|
|
|
|
|
|
|
1104
|
|
|
|
|
|
|
{ |
1105
|
0
|
|
|
|
|
|
{register PDL_Indx __d_size = __privtrans->__d_size; |
1106
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
1107
|
|
|
|
|
|
|
|
1108
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
1109
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
1110
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1111
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1112
|
|
|
|
|
|
|
|
1113
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1114
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1115
|
|
|
|
|
|
|
|
1116
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1117
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1118
|
|
|
|
|
|
|
|
1119
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1120
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1121
|
|
|
|
|
|
|
|
1122
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1123
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1124
|
|
|
|
|
|
|
|
1125
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1126
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1127
|
|
|
|
|
|
|
|
1128
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1129
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1130
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1131
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1132
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1133
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1134
|
|
|
|
|
|
|
|
1135
|
|
|
|
|
|
|
|
1136
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1137
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1138
|
0
|
|
|
|
|
|
int transpose=0; |
1139
|
|
|
|
|
|
|
int i; |
1140
|
|
|
|
|
|
|
double *owp; |
1141
|
|
|
|
|
|
|
|
1142
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1143
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1144
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1145
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1146
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1147
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1148
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1149
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1150
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1151
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1152
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1153
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1154
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1155
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1156
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1157
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1158
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1159
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1160
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1161
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1162
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1163
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1164
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1165
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1166
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1167
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1168
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1169
|
0
|
|
|
|
|
|
__tind2++ |
1170
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1171
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1172
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1173
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1174
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1175
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1176
|
|
|
|
|
|
|
) |
1177
|
|
|
|
|
|
|
{ |
1178
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1179
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1180
|
0
|
|
|
|
|
|
__tind1++ |
1181
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1182
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1183
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1184
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1185
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1186
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1187
|
|
|
|
|
|
|
) |
1188
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1189
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1190
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1191
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1192
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1193
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1194
|
0
|
0
|
|
|
|
|
if (owp) { |
1195
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1196
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1197
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1198
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1199
|
0
|
|
|
|
|
|
free(owp); |
1200
|
|
|
|
|
|
|
} |
1201
|
|
|
|
|
|
|
|
1202
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1203
|
|
|
|
|
|
|
} |
1204
|
|
|
|
|
|
|
} |
1205
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1206
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1207
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1208
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1209
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1210
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1211
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1212
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1213
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1214
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1215
|
|
|
|
|
|
|
|
1216
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
1217
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1218
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1219
|
|
|
|
|
|
|
|
1220
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1221
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1222
|
|
|
|
|
|
|
|
1223
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1224
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1225
|
|
|
|
|
|
|
|
1226
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1227
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1228
|
|
|
|
|
|
|
|
1229
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1230
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1231
|
|
|
|
|
|
|
|
1232
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1233
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1234
|
|
|
|
|
|
|
|
1235
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1236
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1237
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1238
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1239
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1240
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1241
|
|
|
|
|
|
|
|
1242
|
|
|
|
|
|
|
|
1243
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1244
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1245
|
0
|
|
|
|
|
|
int transpose=0; |
1246
|
|
|
|
|
|
|
int i; |
1247
|
|
|
|
|
|
|
double *owp; |
1248
|
|
|
|
|
|
|
|
1249
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1250
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1251
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1252
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1253
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1254
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1255
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1256
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1257
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1258
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1259
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1260
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1261
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1262
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1263
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1264
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1265
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1266
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1267
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1268
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1269
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1270
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1271
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1272
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1273
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1274
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1275
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1276
|
0
|
|
|
|
|
|
__tind2++ |
1277
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1278
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1279
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1280
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1281
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1282
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1283
|
|
|
|
|
|
|
) |
1284
|
|
|
|
|
|
|
{ |
1285
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1286
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1287
|
0
|
|
|
|
|
|
__tind1++ |
1288
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1289
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1290
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1291
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1292
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1293
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1294
|
|
|
|
|
|
|
) |
1295
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1296
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1297
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1298
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1299
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1300
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1301
|
0
|
0
|
|
|
|
|
if (owp) { |
1302
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1303
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1304
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1305
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1306
|
0
|
|
|
|
|
|
free(owp); |
1307
|
|
|
|
|
|
|
} |
1308
|
|
|
|
|
|
|
|
1309
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1310
|
|
|
|
|
|
|
} |
1311
|
|
|
|
|
|
|
} |
1312
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1313
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1314
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1315
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1316
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1317
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1318
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1319
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1320
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1321
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1322
|
|
|
|
|
|
|
|
1323
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
1324
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1325
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1326
|
|
|
|
|
|
|
|
1327
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1328
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1329
|
|
|
|
|
|
|
|
1330
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1331
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1332
|
|
|
|
|
|
|
|
1333
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1334
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1335
|
|
|
|
|
|
|
|
1336
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1337
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1338
|
|
|
|
|
|
|
|
1339
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1340
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1341
|
|
|
|
|
|
|
|
1342
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1344
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1345
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1346
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1347
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1348
|
|
|
|
|
|
|
|
1349
|
|
|
|
|
|
|
|
1350
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1351
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1352
|
0
|
|
|
|
|
|
int transpose=0; |
1353
|
|
|
|
|
|
|
int i; |
1354
|
|
|
|
|
|
|
double *owp; |
1355
|
|
|
|
|
|
|
|
1356
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1357
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1358
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1359
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1360
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1361
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1362
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1363
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1364
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1365
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1366
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1367
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1368
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1369
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1370
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1371
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1372
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1373
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1374
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1375
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1376
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1377
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1378
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1379
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1380
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1381
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1382
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1383
|
0
|
|
|
|
|
|
__tind2++ |
1384
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1385
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1386
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1387
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1388
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1389
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1390
|
|
|
|
|
|
|
) |
1391
|
|
|
|
|
|
|
{ |
1392
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1393
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1394
|
0
|
|
|
|
|
|
__tind1++ |
1395
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1396
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1397
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1398
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1399
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1400
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1401
|
|
|
|
|
|
|
) |
1402
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1403
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1404
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1405
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1406
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1407
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1408
|
0
|
0
|
|
|
|
|
if (owp) { |
1409
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1410
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1411
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1412
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1413
|
0
|
|
|
|
|
|
free(owp); |
1414
|
|
|
|
|
|
|
} |
1415
|
|
|
|
|
|
|
|
1416
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1417
|
|
|
|
|
|
|
} |
1418
|
|
|
|
|
|
|
} |
1419
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1420
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1421
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1422
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1423
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1424
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1425
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1426
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1427
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1428
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1429
|
|
|
|
|
|
|
|
1430
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
1431
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1432
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1433
|
|
|
|
|
|
|
|
1434
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1435
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1436
|
|
|
|
|
|
|
|
1437
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1438
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1439
|
|
|
|
|
|
|
|
1440
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1441
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1442
|
|
|
|
|
|
|
|
1443
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1444
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1445
|
|
|
|
|
|
|
|
1446
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1447
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1448
|
|
|
|
|
|
|
|
1449
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1450
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1451
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1452
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1453
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1454
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1455
|
|
|
|
|
|
|
|
1456
|
|
|
|
|
|
|
|
1457
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1458
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1459
|
0
|
|
|
|
|
|
int transpose=0; |
1460
|
|
|
|
|
|
|
int i; |
1461
|
|
|
|
|
|
|
double *owp; |
1462
|
|
|
|
|
|
|
|
1463
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1464
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1465
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1466
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1467
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1468
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1469
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1470
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1471
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1472
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1473
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1474
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1475
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1476
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1477
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1478
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1479
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1480
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1481
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1482
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1483
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1484
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1485
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1486
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1487
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1488
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1489
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1490
|
0
|
|
|
|
|
|
__tind2++ |
1491
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1492
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1493
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1494
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1495
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1496
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1497
|
|
|
|
|
|
|
) |
1498
|
|
|
|
|
|
|
{ |
1499
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1500
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1501
|
0
|
|
|
|
|
|
__tind1++ |
1502
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1503
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1504
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1505
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1506
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1507
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1508
|
|
|
|
|
|
|
) |
1509
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1510
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1511
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1512
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1513
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1514
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1515
|
0
|
0
|
|
|
|
|
if (owp) { |
1516
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1517
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1518
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1519
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1520
|
0
|
|
|
|
|
|
free(owp); |
1521
|
|
|
|
|
|
|
} |
1522
|
|
|
|
|
|
|
|
1523
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1524
|
|
|
|
|
|
|
} |
1525
|
|
|
|
|
|
|
} |
1526
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1527
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1528
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1529
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1530
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1531
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1532
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1533
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1534
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1535
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1536
|
|
|
|
|
|
|
|
1537
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
1538
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1539
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1540
|
|
|
|
|
|
|
|
1541
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1542
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1543
|
|
|
|
|
|
|
|
1544
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1545
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1546
|
|
|
|
|
|
|
|
1547
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1548
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1549
|
|
|
|
|
|
|
|
1550
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1551
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1552
|
|
|
|
|
|
|
|
1553
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1554
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1555
|
|
|
|
|
|
|
|
1556
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1557
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1558
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1559
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1560
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1561
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1562
|
|
|
|
|
|
|
|
1563
|
|
|
|
|
|
|
|
1564
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1565
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1566
|
0
|
|
|
|
|
|
int transpose=0; |
1567
|
|
|
|
|
|
|
int i; |
1568
|
|
|
|
|
|
|
double *owp; |
1569
|
|
|
|
|
|
|
|
1570
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1571
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1572
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1573
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1574
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1575
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1576
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1577
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1578
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1579
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1580
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1581
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1582
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1583
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1584
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1585
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1586
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1587
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1588
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1589
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1590
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1591
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1592
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1593
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1594
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1595
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1596
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1597
|
0
|
|
|
|
|
|
__tind2++ |
1598
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1599
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1600
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1601
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1602
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1603
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1604
|
|
|
|
|
|
|
) |
1605
|
|
|
|
|
|
|
{ |
1606
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1607
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1608
|
0
|
|
|
|
|
|
__tind1++ |
1609
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1610
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1611
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1612
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1613
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1614
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1615
|
|
|
|
|
|
|
) |
1616
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1617
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1618
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1619
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1620
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1621
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1622
|
0
|
0
|
|
|
|
|
if (owp) { |
1623
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1624
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1625
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1626
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1627
|
0
|
|
|
|
|
|
free(owp); |
1628
|
|
|
|
|
|
|
} |
1629
|
|
|
|
|
|
|
|
1630
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1631
|
|
|
|
|
|
|
} |
1632
|
|
|
|
|
|
|
} |
1633
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1634
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1635
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1636
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1637
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1638
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1639
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1640
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1641
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1642
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1643
|
|
|
|
|
|
|
|
1644
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
1645
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1646
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1647
|
|
|
|
|
|
|
|
1648
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1649
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1650
|
|
|
|
|
|
|
|
1651
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1652
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1653
|
|
|
|
|
|
|
|
1654
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1655
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1656
|
|
|
|
|
|
|
|
1657
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1658
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1659
|
|
|
|
|
|
|
|
1660
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1661
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1662
|
|
|
|
|
|
|
|
1663
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1664
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1665
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1666
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1667
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1668
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1669
|
|
|
|
|
|
|
|
1670
|
|
|
|
|
|
|
|
1671
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1672
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1673
|
0
|
|
|
|
|
|
int transpose=0; |
1674
|
|
|
|
|
|
|
int i; |
1675
|
|
|
|
|
|
|
double *owp; |
1676
|
|
|
|
|
|
|
|
1677
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1678
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1679
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1680
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1681
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1682
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1683
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1684
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1685
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1686
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1687
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1688
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1689
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1690
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1691
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1692
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1693
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1694
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1695
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1696
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1697
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1698
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1699
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1700
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1701
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1702
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1703
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1704
|
0
|
|
|
|
|
|
__tind2++ |
1705
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1706
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1707
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1708
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1709
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1710
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1711
|
|
|
|
|
|
|
) |
1712
|
|
|
|
|
|
|
{ |
1713
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1714
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1715
|
0
|
|
|
|
|
|
__tind1++ |
1716
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1717
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1718
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1719
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1720
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1721
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1722
|
|
|
|
|
|
|
) |
1723
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1724
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1725
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1726
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1727
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1728
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1729
|
0
|
0
|
|
|
|
|
if (owp) { |
1730
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1731
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1732
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1733
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1734
|
0
|
|
|
|
|
|
free(owp); |
1735
|
|
|
|
|
|
|
} |
1736
|
|
|
|
|
|
|
|
1737
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1738
|
|
|
|
|
|
|
} |
1739
|
|
|
|
|
|
|
} |
1740
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1741
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1742
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1743
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1744
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1745
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1746
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1747
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1748
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1749
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1750
|
|
|
|
|
|
|
|
1751
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
1752
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1753
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1754
|
|
|
|
|
|
|
|
1755
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1756
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1757
|
|
|
|
|
|
|
|
1758
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1759
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1760
|
|
|
|
|
|
|
|
1761
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1762
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1763
|
|
|
|
|
|
|
|
1764
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1765
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1766
|
|
|
|
|
|
|
|
1767
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1768
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1769
|
|
|
|
|
|
|
|
1770
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1771
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1772
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1773
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1774
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1775
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1776
|
|
|
|
|
|
|
|
1777
|
|
|
|
|
|
|
|
1778
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1779
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1780
|
0
|
|
|
|
|
|
int transpose=0; |
1781
|
|
|
|
|
|
|
int i; |
1782
|
|
|
|
|
|
|
double *owp; |
1783
|
|
|
|
|
|
|
|
1784
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1785
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1786
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1787
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1788
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1789
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1790
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1791
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1792
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1793
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1794
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1795
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1796
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1797
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1798
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1799
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1800
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1801
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1802
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1803
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1804
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1805
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1806
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1807
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1808
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1809
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1810
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1811
|
0
|
|
|
|
|
|
__tind2++ |
1812
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1813
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1814
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1815
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1816
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1817
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1818
|
|
|
|
|
|
|
) |
1819
|
|
|
|
|
|
|
{ |
1820
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1821
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1822
|
0
|
|
|
|
|
|
__tind1++ |
1823
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1824
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1825
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1826
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1827
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1828
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1829
|
|
|
|
|
|
|
) |
1830
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1831
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1832
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1833
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1834
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1835
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1836
|
0
|
0
|
|
|
|
|
if (owp) { |
1837
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1838
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1839
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1840
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1841
|
0
|
|
|
|
|
|
free(owp); |
1842
|
|
|
|
|
|
|
} |
1843
|
|
|
|
|
|
|
|
1844
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1845
|
|
|
|
|
|
|
} |
1846
|
|
|
|
|
|
|
} |
1847
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1848
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1849
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1850
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1851
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1852
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1853
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1854
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1855
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1856
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1857
|
|
|
|
|
|
|
|
1858
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
1859
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
1860
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
1861
|
|
|
|
|
|
|
|
1862
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
1863
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
1864
|
|
|
|
|
|
|
|
1865
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
1866
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
1867
|
|
|
|
|
|
|
|
1868
|
0
|
0
|
|
|
|
|
PDL_Double * cutoff_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
1869
|
0
|
|
|
|
|
|
PDL_Double * cutoff_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
1870
|
|
|
|
|
|
|
|
1871
|
0
|
0
|
|
|
|
|
PDL_Double * exponent_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
1872
|
0
|
|
|
|
|
|
PDL_Double * exponent_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
1873
|
|
|
|
|
|
|
|
1874
|
0
|
0
|
|
|
|
|
PDL_Double * oweights_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
1875
|
0
|
|
|
|
|
|
PDL_Double * oweights_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
1876
|
|
|
|
|
|
|
|
1877
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
1878
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
1879
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
1880
|
0
|
|
|
|
|
|
register PDL_Indx __inc_oweights_d = __privtrans->__inc_oweights_d; |
1881
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
1882
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
1883
|
|
|
|
|
|
|
|
1884
|
|
|
|
|
|
|
|
1885
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
1886
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
1887
|
0
|
|
|
|
|
|
int transpose=0; |
1888
|
|
|
|
|
|
|
int i; |
1889
|
|
|
|
|
|
|
double *owp; |
1890
|
|
|
|
|
|
|
|
1891
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
1892
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
1893
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
1894
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
1895
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
1896
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
1897
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
1898
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
1899
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
1900
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
1901
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
1902
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
1903
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
1904
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
1905
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
1906
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
1907
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
1908
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
1909
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
1910
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
1911
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
1912
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
1913
|
0
|
|
|
|
|
|
cutoff_datap += __offsp[3]; |
1914
|
0
|
|
|
|
|
|
exponent_datap += __offsp[4]; |
1915
|
0
|
|
|
|
|
|
oweights_datap += __offsp[5]; |
1916
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
1917
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
1918
|
0
|
|
|
|
|
|
__tind2++ |
1919
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
1920
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
1921
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
1922
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
1923
|
0
|
|
|
|
|
|
,exponent_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
1924
|
0
|
|
|
|
|
|
,oweights_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
1925
|
|
|
|
|
|
|
) |
1926
|
|
|
|
|
|
|
{ |
1927
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
1928
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
1929
|
0
|
|
|
|
|
|
__tind1++ |
1930
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
1931
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
1932
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
1933
|
0
|
|
|
|
|
|
,cutoff_datap += __tinc0_3 |
1934
|
0
|
|
|
|
|
|
,exponent_datap += __tinc0_4 |
1935
|
0
|
|
|
|
|
|
,oweights_datap += __tinc0_5 |
1936
|
|
|
|
|
|
|
) |
1937
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
1938
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
1939
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
1940
|
0
|
|
|
|
|
|
owp = calculate_weights(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
1941
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, |
1942
|
|
|
|
|
|
|
(cutoff_datap)[0] PDL_COMMENT("ACCESS()") , (exponent_datap)[0] PDL_COMMENT("ACCESS()") ); |
1943
|
0
|
0
|
|
|
|
|
if (owp) { |
1944
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
1945
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
1946
|
0
|
0
|
|
|
|
|
(oweights_datap)[0+(__inc_oweights_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") = owp[d]; |
1947
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
1948
|
0
|
|
|
|
|
|
free(owp); |
1949
|
|
|
|
|
|
|
} |
1950
|
|
|
|
|
|
|
|
1951
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
1952
|
|
|
|
|
|
|
} |
1953
|
|
|
|
|
|
|
} |
1954
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
1955
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
1956
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
1957
|
0
|
|
|
|
|
|
cutoff_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
1958
|
0
|
|
|
|
|
|
exponent_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
1959
|
0
|
|
|
|
|
|
oweights_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
1960
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
1961
|
|
|
|
|
|
|
/*-- cleanup --*/ |
1962
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
1963
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
1964
|
|
|
|
|
|
|
|
1965
|
0
|
|
|
|
|
|
} break;} |
1966
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
1967
|
|
|
|
|
|
|
} |
1968
|
|
|
|
|
|
|
} |
1969
|
|
|
|
|
|
|
} |
1970
|
|
|
|
|
|
|
|
1971
|
|
|
|
|
|
|
|
1972
|
|
|
|
|
|
|
|
1973
|
|
|
|
|
|
|
|
1974
|
0
|
|
|
|
|
|
void pdl_calculate_weights_free(pdl_trans *__tr ) { |
1975
|
|
|
|
|
|
|
int __dim; |
1976
|
0
|
|
|
|
|
|
pdl_calculate_weights_struct *__privtrans = (pdl_calculate_weights_struct *) __tr; |
1977
|
|
|
|
|
|
|
|
1978
|
|
|
|
|
|
|
{ |
1979
|
|
|
|
|
|
|
|
1980
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
1981
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);; |
1982
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
1983
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
1984
|
|
|
|
|
|
|
;;;;;;;;; |
1985
|
|
|
|
|
|
|
} |
1986
|
|
|
|
|
|
|
|
1987
|
|
|
|
|
|
|
} |
1988
|
0
|
|
|
|
|
|
} |
1989
|
|
|
|
|
|
|
|
1990
|
|
|
|
|
|
|
|
1991
|
|
|
|
|
|
|
|
1992
|
|
|
|
|
|
|
|
1993
|
|
|
|
|
|
|
static char pdl_calculate_weights_vtable_flags[] = |
1994
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
1995
|
|
|
|
|
|
|
pdl_transvtable pdl_calculate_weights_vtable = { |
1996
|
|
|
|
|
|
|
0,0, 5, 6, pdl_calculate_weights_vtable_flags, |
1997
|
|
|
|
|
|
|
pdl_calculate_weights_redodims, pdl_calculate_weights_readdata, NULL, |
1998
|
|
|
|
|
|
|
pdl_calculate_weights_free,NULL,NULL,pdl_calculate_weights_copy, |
1999
|
|
|
|
|
|
|
sizeof(pdl_calculate_weights_struct),"pdl_calculate_weights_vtable" |
2000
|
|
|
|
|
|
|
}; |
2001
|
|
|
|
|
|
|
|
2002
|
|
|
|
|
|
|
typedef struct pdl_clusterdistance_struct { |
2003
|
|
|
|
|
|
|
PDL_TRANS_START(8); |
2004
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_index1_n1;PDL_Indx __inc_index2_n2;PDL_Indx __n_size;PDL_Indx __n2_size;PDL_Indx __d_size;PDL_Indx __n1_size; |
2005
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
2006
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
2007
|
|
|
|
|
|
|
} pdl_clusterdistance_struct; |
2008
|
|
|
|
|
|
|
|
2009
|
6
|
|
|
|
|
|
void pdl_clusterdistance_redodims(pdl_trans *__tr ) { |
2010
|
|
|
|
|
|
|
int __dim; |
2011
|
6
|
|
|
|
|
|
pdl_clusterdistance_struct *__privtrans = (pdl_clusterdistance_struct *) __tr; |
2012
|
|
|
|
|
|
|
|
2013
|
|
|
|
|
|
|
{ |
2014
|
|
|
|
|
|
|
PDL_Indx __creating[8]; |
2015
|
6
|
|
|
|
|
|
__privtrans->__n_size = -1; |
2016
|
6
|
|
|
|
|
|
__privtrans->__n2_size = -1; |
2017
|
6
|
|
|
|
|
|
__privtrans->__d_size = -1; |
2018
|
6
|
|
|
|
|
|
__privtrans->__n1_size = -1; |
2019
|
6
|
|
|
|
|
|
__creating[0] = 0; |
2020
|
6
|
|
|
|
|
|
__creating[1] = 0; |
2021
|
6
|
|
|
|
|
|
__creating[2] = 0; |
2022
|
6
|
|
|
|
|
|
__creating[3] = 0; |
2023
|
6
|
|
|
|
|
|
__creating[4] = 0; |
2024
|
6
|
|
|
|
|
|
__creating[5] = 0; |
2025
|
6
|
|
|
|
|
|
__creating[6] = 0; |
2026
|
6
|
50
|
|
|
|
|
__creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]); |
|
|
50
|
|
|
|
|
|
2027
|
|
|
|
|
|
|
{ |
2028
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
2029
|
|
|
|
|
|
|
|
2030
|
6
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
2031
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
2032
|
6
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2033
|
6
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2034
|
|
|
|
|
|
|
|
2035
|
6
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2036
|
6
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2037
|
|
|
|
|
|
|
|
2038
|
6
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2039
|
6
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2040
|
|
|
|
|
|
|
|
2041
|
6
|
50
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2042
|
6
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2043
|
|
|
|
|
|
|
|
2044
|
6
|
50
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2045
|
6
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2046
|
|
|
|
|
|
|
|
2047
|
6
|
50
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2048
|
6
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2049
|
|
|
|
|
|
|
|
2050
|
6
|
50
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2051
|
6
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2052
|
|
|
|
|
|
|
|
2053
|
6
|
50
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2054
|
6
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2055
|
|
|
|
|
|
|
|
2056
|
6
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2057
|
6
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2058
|
6
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2059
|
6
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2060
|
6
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2061
|
6
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2062
|
6
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2063
|
|
|
|
|
|
|
|
2064
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2065
|
6
|
|
|
|
|
|
} } break; case PDL_S: { |
2066
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2067
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2068
|
|
|
|
|
|
|
|
2069
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2070
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2071
|
|
|
|
|
|
|
|
2072
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2073
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2074
|
|
|
|
|
|
|
|
2075
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2076
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2077
|
|
|
|
|
|
|
|
2078
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2079
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2080
|
|
|
|
|
|
|
|
2081
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2082
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2083
|
|
|
|
|
|
|
|
2084
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2085
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2086
|
|
|
|
|
|
|
|
2087
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2088
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2089
|
|
|
|
|
|
|
|
2090
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2091
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2092
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2093
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2094
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2095
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2096
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2097
|
|
|
|
|
|
|
|
2098
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2099
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
2100
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2101
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2102
|
|
|
|
|
|
|
|
2103
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2104
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2105
|
|
|
|
|
|
|
|
2106
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2107
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2108
|
|
|
|
|
|
|
|
2109
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2110
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2111
|
|
|
|
|
|
|
|
2112
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2113
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2114
|
|
|
|
|
|
|
|
2115
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2116
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2117
|
|
|
|
|
|
|
|
2118
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2119
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2120
|
|
|
|
|
|
|
|
2121
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2122
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2123
|
|
|
|
|
|
|
|
2124
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2125
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2126
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2127
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2128
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2129
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2130
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2131
|
|
|
|
|
|
|
|
2132
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2133
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
2134
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2135
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2136
|
|
|
|
|
|
|
|
2137
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2138
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2139
|
|
|
|
|
|
|
|
2140
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2141
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2142
|
|
|
|
|
|
|
|
2143
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2144
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2145
|
|
|
|
|
|
|
|
2146
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2147
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2148
|
|
|
|
|
|
|
|
2149
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2150
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2151
|
|
|
|
|
|
|
|
2152
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2153
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2154
|
|
|
|
|
|
|
|
2155
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2156
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2157
|
|
|
|
|
|
|
|
2158
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2159
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2160
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2161
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2162
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2163
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2164
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2165
|
|
|
|
|
|
|
|
2166
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2167
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
2168
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2169
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2170
|
|
|
|
|
|
|
|
2171
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2172
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2173
|
|
|
|
|
|
|
|
2174
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2175
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2176
|
|
|
|
|
|
|
|
2177
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2178
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2179
|
|
|
|
|
|
|
|
2180
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2181
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2182
|
|
|
|
|
|
|
|
2183
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2184
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2185
|
|
|
|
|
|
|
|
2186
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2187
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2188
|
|
|
|
|
|
|
|
2189
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2190
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2191
|
|
|
|
|
|
|
|
2192
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2193
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2194
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2195
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2196
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2197
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2198
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2199
|
|
|
|
|
|
|
|
2200
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2201
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
2202
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2203
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2204
|
|
|
|
|
|
|
|
2205
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2206
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2207
|
|
|
|
|
|
|
|
2208
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2209
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2210
|
|
|
|
|
|
|
|
2211
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2212
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2213
|
|
|
|
|
|
|
|
2214
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2215
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2216
|
|
|
|
|
|
|
|
2217
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2218
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2219
|
|
|
|
|
|
|
|
2220
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2221
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2222
|
|
|
|
|
|
|
|
2223
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2224
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2225
|
|
|
|
|
|
|
|
2226
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2227
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2228
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2229
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2230
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2231
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2232
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2233
|
|
|
|
|
|
|
|
2234
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2235
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
2236
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2237
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2238
|
|
|
|
|
|
|
|
2239
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2240
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2241
|
|
|
|
|
|
|
|
2242
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2243
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2244
|
|
|
|
|
|
|
|
2245
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2246
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2247
|
|
|
|
|
|
|
|
2248
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2249
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2250
|
|
|
|
|
|
|
|
2251
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2252
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2253
|
|
|
|
|
|
|
|
2254
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2255
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2256
|
|
|
|
|
|
|
|
2257
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2258
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2259
|
|
|
|
|
|
|
|
2260
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2261
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2262
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2263
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2264
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2265
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2266
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2267
|
|
|
|
|
|
|
|
2268
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2269
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
2270
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2271
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2272
|
|
|
|
|
|
|
|
2273
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2274
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2275
|
|
|
|
|
|
|
|
2276
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2277
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2278
|
|
|
|
|
|
|
|
2279
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2280
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2281
|
|
|
|
|
|
|
|
2282
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2283
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2284
|
|
|
|
|
|
|
|
2285
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2286
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2287
|
|
|
|
|
|
|
|
2288
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2289
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2290
|
|
|
|
|
|
|
|
2291
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2292
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2293
|
|
|
|
|
|
|
|
2294
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2295
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2296
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2297
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2298
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2299
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2300
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2301
|
|
|
|
|
|
|
|
2302
|
|
|
|
|
|
|
PDL_COMMENT("none") |
2303
|
0
|
|
|
|
|
|
} break;} |
2304
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
2305
|
|
|
|
|
|
|
} |
2306
|
|
|
|
|
|
|
} |
2307
|
|
|
|
|
|
|
{ |
2308
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","n1","n2","index1","index2","dist"}; |
2309
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,0,0,1,1,0}; |
2310
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterdistance"; |
2311
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
2312
|
|
|
|
|
|
|
__funcname, __parnames, 8 |
2313
|
|
|
|
|
|
|
}; |
2314
|
|
|
|
|
|
|
|
2315
|
6
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
2316
|
|
|
|
|
|
|
__realdims,__creating,8, |
2317
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
2318
|
6
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
2319
|
|
|
|
|
|
|
0 ); |
2320
|
|
|
|
|
|
|
} |
2321
|
6
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
2322
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
2323
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
2324
|
|
|
|
|
|
|
} |
2325
|
6
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
2326
|
6
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
2327
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
2328
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
2329
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2330
|
|
|
|
|
|
|
} |
2331
|
|
|
|
|
|
|
} |
2332
|
6
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
2333
|
6
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
2334
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
2335
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
2336
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2337
|
|
|
|
|
|
|
} |
2338
|
|
|
|
|
|
|
} |
2339
|
6
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
2340
|
6
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
2341
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
2342
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
2343
|
|
|
|
|
|
|
} |
2344
|
6
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
2345
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
2346
|
6
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
2347
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
2348
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2349
|
|
|
|
|
|
|
} |
2350
|
|
|
|
|
|
|
} |
2351
|
6
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
2352
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
2353
|
6
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
2354
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
2355
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2356
|
|
|
|
|
|
|
} |
2357
|
|
|
|
|
|
|
} |
2358
|
6
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
2359
|
6
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
2360
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
2361
|
|
|
|
|
|
|
} |
2362
|
6
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
2363
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
2364
|
6
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
2365
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
2366
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2367
|
|
|
|
|
|
|
} |
2368
|
|
|
|
|
|
|
} |
2369
|
6
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
2370
|
6
|
50
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
2371
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__n1_size <= 1) __privtrans->__n1_size = 1; |
|
|
0
|
|
|
|
|
|
2372
|
|
|
|
|
|
|
} |
2373
|
6
|
50
|
|
|
|
|
if(__privtrans->__n1_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__n1_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
2374
|
6
|
|
|
|
|
|
__privtrans->__n1_size = ((__privtrans->pdls[5]))->dims[0]; |
2375
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__n1_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
2376
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
2377
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2378
|
|
|
|
|
|
|
} |
2379
|
|
|
|
|
|
|
} |
2380
|
6
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[5]))); |
2381
|
6
|
50
|
|
|
|
|
if(((__privtrans->pdls[6]))->ndims < 1) { |
2382
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[6]))->ndims < 1 && __privtrans->__n2_size <= 1) __privtrans->__n2_size = 1; |
|
|
0
|
|
|
|
|
|
2383
|
|
|
|
|
|
|
} |
2384
|
6
|
50
|
|
|
|
|
if(__privtrans->__n2_size == -1 || (((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__n2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
2385
|
6
|
|
|
|
|
|
__privtrans->__n2_size = ((__privtrans->pdls[6]))->dims[0]; |
2386
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__n2_size != ((__privtrans->pdls[6]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
2387
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->dims[0] != 1) { |
2388
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistance:" "Wrong dims\n"); |
2389
|
|
|
|
|
|
|
} |
2390
|
|
|
|
|
|
|
} |
2391
|
6
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[6]))); |
2392
|
6
|
50
|
|
|
|
|
if(!__creating[7]) { |
2393
|
|
|
|
|
|
|
} else { |
2394
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
2395
|
6
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0); |
2396
|
|
|
|
|
|
|
} |
2397
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
2398
|
6
|
|
|
|
|
|
void *hdrp = NULL; |
2399
|
6
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
2400
|
6
|
|
|
|
|
|
SV *hdr_copy = NULL; |
2401
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2402
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
2403
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
2404
|
|
|
|
|
|
|
) { |
2405
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
2406
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
2407
|
|
|
|
|
|
|
} |
2408
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2409
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
2410
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
2411
|
|
|
|
|
|
|
) { |
2412
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
2413
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
2414
|
|
|
|
|
|
|
} |
2415
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2416
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
2417
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
2418
|
|
|
|
|
|
|
) { |
2419
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
2420
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
2421
|
|
|
|
|
|
|
} |
2422
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2423
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
2424
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
2425
|
|
|
|
|
|
|
) { |
2426
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
2427
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
2428
|
|
|
|
|
|
|
} |
2429
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2430
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
2431
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
2432
|
|
|
|
|
|
|
) { |
2433
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
2434
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
2435
|
|
|
|
|
|
|
} |
2436
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2437
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
2438
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
2439
|
|
|
|
|
|
|
) { |
2440
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
2441
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
2442
|
|
|
|
|
|
|
} |
2443
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2444
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
2445
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
2446
|
|
|
|
|
|
|
) { |
2447
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
2448
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
2449
|
|
|
|
|
|
|
} |
2450
|
6
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
2451
|
0
|
0
|
|
|
|
|
!__creating[7] && |
2452
|
0
|
0
|
|
|
|
|
__privtrans->pdls[7]->hdrsv && |
2453
|
0
|
|
|
|
|
|
(__privtrans->pdls[7]->state & PDL_HDRCPY) |
2454
|
|
|
|
|
|
|
) { |
2455
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[7]->hdrsv; |
2456
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0); |
2457
|
|
|
|
|
|
|
} |
2458
|
6
|
50
|
|
|
|
|
if (hdrp) { |
2459
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
2460
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
2461
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
2462
|
|
|
|
|
|
|
int count; |
2463
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
2464
|
0
|
|
|
|
|
|
dSP; |
2465
|
0
|
|
|
|
|
|
ENTER ; |
2466
|
0
|
|
|
|
|
|
SAVETMPS ; |
2467
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
2468
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
2469
|
0
|
|
|
|
|
|
PUTBACK ; |
2470
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
2471
|
0
|
|
|
|
|
|
SPAGAIN ; |
2472
|
0
|
0
|
|
|
|
|
if(count != 1) |
2473
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
2474
|
|
|
|
|
|
|
|
2475
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
2476
|
|
|
|
|
|
|
|
2477
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
2478
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
2479
|
|
|
|
|
|
|
} |
2480
|
|
|
|
|
|
|
|
2481
|
0
|
0
|
|
|
|
|
FREETMPS ; |
2482
|
0
|
|
|
|
|
|
LEAVE ; |
2483
|
|
|
|
|
|
|
|
2484
|
|
|
|
|
|
|
|
2485
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
2486
|
|
|
|
|
|
|
|
2487
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[7]->hdrsv != hdrp ){ |
2488
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
2489
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv ); |
2490
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
2491
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
2492
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->hdrsv = hdr_copy; |
2493
|
|
|
|
|
|
|
} |
2494
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
2495
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->state |= PDL_HDRCPY; |
2496
|
|
|
|
|
|
|
|
2497
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
2498
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
2499
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
2500
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
2501
|
6
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
2502
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
2503
|
6
|
50
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
2504
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
2505
|
6
|
50
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
2506
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
2507
|
6
|
50
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
2508
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
2509
|
6
|
50
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
2510
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
2511
|
6
|
50
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
100
|
|
|
|
|
|
2512
|
2
|
|
|
|
|
|
__privtrans->__inc_index1_n1 = 0; else |
2513
|
6
|
50
|
|
|
|
|
__privtrans->__inc_index1_n1 = __privtrans->pdls[5]->dimincs[0];if(__privtrans->pdls[6]->ndims <= 0 || __privtrans->pdls[6]->dims[0] <= 1) |
|
|
100
|
|
|
|
|
|
2514
|
4
|
|
|
|
|
|
__privtrans->__inc_index2_n2 = 0; else |
2515
|
2
|
|
|
|
|
|
__privtrans->__inc_index2_n2 = __privtrans->pdls[6]->dimincs[0]; __privtrans->__ddone = 1; |
2516
|
|
|
|
|
|
|
} |
2517
|
6
|
|
|
|
|
|
} |
2518
|
|
|
|
|
|
|
|
2519
|
|
|
|
|
|
|
|
2520
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterdistance_copy(pdl_trans *__tr ) { |
2521
|
|
|
|
|
|
|
int __dim; |
2522
|
0
|
|
|
|
|
|
pdl_clusterdistance_struct *__privtrans = (pdl_clusterdistance_struct *) __tr; |
2523
|
|
|
|
|
|
|
|
2524
|
|
|
|
|
|
|
{ |
2525
|
0
|
|
|
|
|
|
pdl_clusterdistance_struct *__copy = malloc(sizeof(pdl_clusterdistance_struct)); |
2526
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
2527
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
2528
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
2529
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
2530
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
2531
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
2532
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
2533
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
2534
|
|
|
|
|
|
|
{int i; |
2535
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
2536
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
2537
|
|
|
|
|
|
|
} |
2538
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
2539
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
2540
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_index1_n1=__copy->__inc_index1_n1;__privtrans->__inc_index2_n2=__copy->__inc_index2_n2;__copy->__n_size=__privtrans->__n_size;__copy->__n2_size=__privtrans->__n2_size;__copy->__d_size=__privtrans->__d_size;__copy->__n1_size=__privtrans->__n1_size; |
2541
|
|
|
|
|
|
|
} |
2542
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
2543
|
|
|
|
|
|
|
} |
2544
|
|
|
|
|
|
|
} |
2545
|
|
|
|
|
|
|
|
2546
|
|
|
|
|
|
|
|
2547
|
6
|
|
|
|
|
|
void pdl_clusterdistance_readdata(pdl_trans *__tr ) { |
2548
|
|
|
|
|
|
|
int __dim; |
2549
|
6
|
|
|
|
|
|
pdl_clusterdistance_struct *__privtrans = (pdl_clusterdistance_struct *) __tr; |
2550
|
|
|
|
|
|
|
|
2551
|
|
|
|
|
|
|
{ |
2552
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
2553
|
|
|
|
|
|
|
|
2554
|
6
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
2555
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
2556
|
6
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2557
|
6
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2558
|
|
|
|
|
|
|
|
2559
|
6
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2560
|
6
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2561
|
|
|
|
|
|
|
|
2562
|
6
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2563
|
6
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2564
|
|
|
|
|
|
|
|
2565
|
6
|
50
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2566
|
6
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2567
|
|
|
|
|
|
|
|
2568
|
6
|
50
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2569
|
6
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2570
|
|
|
|
|
|
|
|
2571
|
6
|
50
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2572
|
6
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2573
|
|
|
|
|
|
|
|
2574
|
6
|
50
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2575
|
6
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2576
|
|
|
|
|
|
|
|
2577
|
6
|
50
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2578
|
6
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2579
|
|
|
|
|
|
|
|
2580
|
6
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2581
|
6
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2582
|
6
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2583
|
6
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2584
|
6
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2585
|
6
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2586
|
6
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2587
|
|
|
|
|
|
|
|
2588
|
|
|
|
|
|
|
|
2589
|
6
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
2590
|
6
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
2591
|
6
|
|
|
|
|
|
int transpose=0; |
2592
|
|
|
|
|
|
|
double retval; |
2593
|
|
|
|
|
|
|
|
2594
|
|
|
|
|
|
|
|
2595
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
2596
|
6
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
2597
|
6
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
2598
|
6
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
2599
|
6
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
2600
|
6
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
2601
|
6
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
2602
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
2603
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
2604
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
2605
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
2606
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
2607
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
2608
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
2609
|
6
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
2610
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
2611
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
2612
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
2613
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
2614
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
2615
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
2616
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
2617
|
6
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
2618
|
6
|
|
|
|
|
|
data_datap += __offsp[0]; |
2619
|
6
|
|
|
|
|
|
mask_datap += __offsp[1]; |
2620
|
6
|
|
|
|
|
|
weight_datap += __offsp[2]; |
2621
|
6
|
|
|
|
|
|
n1_datap += __offsp[3]; |
2622
|
6
|
|
|
|
|
|
n2_datap += __offsp[4]; |
2623
|
6
|
|
|
|
|
|
index1_datap += __offsp[5]; |
2624
|
6
|
|
|
|
|
|
index2_datap += __offsp[6]; |
2625
|
6
|
|
|
|
|
|
dist_datap += __offsp[7]; |
2626
|
12
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
2627
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
2628
|
6
|
|
|
|
|
|
__tind2++ |
2629
|
6
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
2630
|
6
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
2631
|
6
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
2632
|
6
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
2633
|
6
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
2634
|
6
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
2635
|
6
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
2636
|
6
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
2637
|
|
|
|
|
|
|
) |
2638
|
|
|
|
|
|
|
{ |
2639
|
12
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
2640
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
2641
|
6
|
|
|
|
|
|
__tind1++ |
2642
|
6
|
|
|
|
|
|
,data_datap += __tinc0_0 |
2643
|
6
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
2644
|
6
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
2645
|
6
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
2646
|
6
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
2647
|
6
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
2648
|
6
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
2649
|
6
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
2650
|
|
|
|
|
|
|
) |
2651
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
2652
|
6
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
2653
|
6
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
2654
|
6
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
2655
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
2656
|
12
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
2657
|
6
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
2658
|
|
|
|
|
|
|
|
2659
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
2660
|
|
|
|
|
|
|
} |
2661
|
|
|
|
|
|
|
} |
2662
|
6
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
2663
|
6
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
2664
|
6
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
2665
|
6
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
2666
|
6
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
2667
|
6
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
2668
|
6
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
2669
|
6
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
2670
|
6
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
2671
|
|
|
|
|
|
|
|
2672
|
|
|
|
|
|
|
/*-- cleanup --*/ |
2673
|
6
|
50
|
|
|
|
|
if (datapp) free(datapp); |
2674
|
6
|
50
|
|
|
|
|
if (maskpp) free(maskpp); |
2675
|
|
|
|
|
|
|
|
2676
|
6
|
|
|
|
|
|
} } break; case PDL_S: { |
2677
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2678
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2679
|
|
|
|
|
|
|
|
2680
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2681
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2682
|
|
|
|
|
|
|
|
2683
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2684
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2685
|
|
|
|
|
|
|
|
2686
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2687
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2688
|
|
|
|
|
|
|
|
2689
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2690
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2691
|
|
|
|
|
|
|
|
2692
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2693
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2694
|
|
|
|
|
|
|
|
2695
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2696
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2697
|
|
|
|
|
|
|
|
2698
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2699
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2700
|
|
|
|
|
|
|
|
2701
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2702
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2703
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2704
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2705
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2706
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2707
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2708
|
|
|
|
|
|
|
|
2709
|
|
|
|
|
|
|
|
2710
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
2711
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
2712
|
0
|
|
|
|
|
|
int transpose=0; |
2713
|
|
|
|
|
|
|
double retval; |
2714
|
|
|
|
|
|
|
|
2715
|
|
|
|
|
|
|
|
2716
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
2717
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
2718
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
2719
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
2720
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
2721
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
2722
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
2723
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
2724
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
2725
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
2726
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
2727
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
2728
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
2729
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
2730
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
2731
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
2732
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
2733
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
2734
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
2735
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
2736
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
2737
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
2738
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
2739
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
2740
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
2741
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
2742
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
2743
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
2744
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
2745
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
2746
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
2747
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
2748
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
2749
|
0
|
|
|
|
|
|
__tind2++ |
2750
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
2751
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
2752
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
2753
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
2754
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
2755
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
2756
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
2757
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
2758
|
|
|
|
|
|
|
) |
2759
|
|
|
|
|
|
|
{ |
2760
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
2761
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
2762
|
0
|
|
|
|
|
|
__tind1++ |
2763
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
2764
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
2765
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
2766
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
2767
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
2768
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
2769
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
2770
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
2771
|
|
|
|
|
|
|
) |
2772
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
2773
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
2774
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
2775
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
2776
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
2777
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
2778
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
2779
|
|
|
|
|
|
|
|
2780
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
2781
|
|
|
|
|
|
|
} |
2782
|
|
|
|
|
|
|
} |
2783
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
2784
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
2785
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
2786
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
2787
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
2788
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
2789
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
2790
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
2791
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
2792
|
|
|
|
|
|
|
|
2793
|
|
|
|
|
|
|
/*-- cleanup --*/ |
2794
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
2795
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
2796
|
|
|
|
|
|
|
|
2797
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
2798
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2799
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2800
|
|
|
|
|
|
|
|
2801
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2802
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2803
|
|
|
|
|
|
|
|
2804
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2805
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2806
|
|
|
|
|
|
|
|
2807
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2808
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2809
|
|
|
|
|
|
|
|
2810
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2811
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2812
|
|
|
|
|
|
|
|
2813
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2814
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2815
|
|
|
|
|
|
|
|
2816
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2817
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2818
|
|
|
|
|
|
|
|
2819
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2820
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2821
|
|
|
|
|
|
|
|
2822
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2823
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2824
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2825
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2826
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2827
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2828
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2829
|
|
|
|
|
|
|
|
2830
|
|
|
|
|
|
|
|
2831
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
2832
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
2833
|
0
|
|
|
|
|
|
int transpose=0; |
2834
|
|
|
|
|
|
|
double retval; |
2835
|
|
|
|
|
|
|
|
2836
|
|
|
|
|
|
|
|
2837
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
2838
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
2839
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
2840
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
2841
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
2842
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
2843
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
2844
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
2845
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
2846
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
2847
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
2848
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
2849
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
2850
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
2851
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
2852
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
2853
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
2854
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
2855
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
2856
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
2857
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
2858
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
2859
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
2860
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
2861
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
2862
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
2863
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
2864
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
2865
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
2866
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
2867
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
2868
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
2869
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
2870
|
0
|
|
|
|
|
|
__tind2++ |
2871
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
2872
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
2873
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
2874
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
2875
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
2876
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
2877
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
2878
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
2879
|
|
|
|
|
|
|
) |
2880
|
|
|
|
|
|
|
{ |
2881
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
2882
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
2883
|
0
|
|
|
|
|
|
__tind1++ |
2884
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
2885
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
2886
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
2887
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
2888
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
2889
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
2890
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
2891
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
2892
|
|
|
|
|
|
|
) |
2893
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
2894
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
2895
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
2896
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
2897
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
2898
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
2899
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
2900
|
|
|
|
|
|
|
|
2901
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
2902
|
|
|
|
|
|
|
} |
2903
|
|
|
|
|
|
|
} |
2904
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
2905
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
2906
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
2907
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
2908
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
2909
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
2910
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
2911
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
2912
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
2913
|
|
|
|
|
|
|
|
2914
|
|
|
|
|
|
|
/*-- cleanup --*/ |
2915
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
2916
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
2917
|
|
|
|
|
|
|
|
2918
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
2919
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
2920
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
2921
|
|
|
|
|
|
|
|
2922
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
2923
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
2924
|
|
|
|
|
|
|
|
2925
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
2926
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
2927
|
|
|
|
|
|
|
|
2928
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
2929
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
2930
|
|
|
|
|
|
|
|
2931
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
2932
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
2933
|
|
|
|
|
|
|
|
2934
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
2935
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
2936
|
|
|
|
|
|
|
|
2937
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
2938
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
2939
|
|
|
|
|
|
|
|
2940
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
2941
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
2942
|
|
|
|
|
|
|
|
2943
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
2944
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
2945
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
2946
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
2947
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
2948
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
2949
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
2950
|
|
|
|
|
|
|
|
2951
|
|
|
|
|
|
|
|
2952
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
2953
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
2954
|
0
|
|
|
|
|
|
int transpose=0; |
2955
|
|
|
|
|
|
|
double retval; |
2956
|
|
|
|
|
|
|
|
2957
|
|
|
|
|
|
|
|
2958
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
2959
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
2960
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
2961
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
2962
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
2963
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
2964
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
2965
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
2966
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
2967
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
2968
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
2969
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
2970
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
2971
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
2972
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
2973
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
2974
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
2975
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
2976
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
2977
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
2978
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
2979
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
2980
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
2981
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
2982
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
2983
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
2984
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
2985
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
2986
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
2987
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
2988
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
2989
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
2990
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
2991
|
0
|
|
|
|
|
|
__tind2++ |
2992
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
2993
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
2994
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
2995
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
2996
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
2997
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
2998
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
2999
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
3000
|
|
|
|
|
|
|
) |
3001
|
|
|
|
|
|
|
{ |
3002
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
3003
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
3004
|
0
|
|
|
|
|
|
__tind1++ |
3005
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
3006
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
3007
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
3008
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
3009
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
3010
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
3011
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
3012
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
3013
|
|
|
|
|
|
|
) |
3014
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
3015
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
3016
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
3017
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
3018
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
3019
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
3020
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
3021
|
|
|
|
|
|
|
|
3022
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
3023
|
|
|
|
|
|
|
} |
3024
|
|
|
|
|
|
|
} |
3025
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
3026
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
3027
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
3028
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
3029
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
3030
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
3031
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
3032
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
3033
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
3034
|
|
|
|
|
|
|
|
3035
|
|
|
|
|
|
|
/*-- cleanup --*/ |
3036
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
3037
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
3038
|
|
|
|
|
|
|
|
3039
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
3040
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3041
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3042
|
|
|
|
|
|
|
|
3043
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3044
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3045
|
|
|
|
|
|
|
|
3046
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3047
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3048
|
|
|
|
|
|
|
|
3049
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3050
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
3051
|
|
|
|
|
|
|
|
3052
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
3053
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
3054
|
|
|
|
|
|
|
|
3055
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
3056
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
3057
|
|
|
|
|
|
|
|
3058
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
3059
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
3060
|
|
|
|
|
|
|
|
3061
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
3062
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
3063
|
|
|
|
|
|
|
|
3064
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
3065
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3066
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3067
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3068
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3069
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3070
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
3071
|
|
|
|
|
|
|
|
3072
|
|
|
|
|
|
|
|
3073
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
3074
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
3075
|
0
|
|
|
|
|
|
int transpose=0; |
3076
|
|
|
|
|
|
|
double retval; |
3077
|
|
|
|
|
|
|
|
3078
|
|
|
|
|
|
|
|
3079
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
3080
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
3081
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
3082
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
3083
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
3084
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
3085
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
3086
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
3087
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
3088
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
3089
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
3090
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
3091
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
3092
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
3093
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
3094
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
3095
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
3096
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
3097
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
3098
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
3099
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
3100
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
3101
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
3102
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
3103
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
3104
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
3105
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
3106
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
3107
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
3108
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
3109
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
3110
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
3111
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
3112
|
0
|
|
|
|
|
|
__tind2++ |
3113
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
3114
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
3115
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
3116
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
3117
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
3118
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
3119
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
3120
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
3121
|
|
|
|
|
|
|
) |
3122
|
|
|
|
|
|
|
{ |
3123
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
3124
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
3125
|
0
|
|
|
|
|
|
__tind1++ |
3126
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
3127
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
3128
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
3129
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
3130
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
3131
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
3132
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
3133
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
3134
|
|
|
|
|
|
|
) |
3135
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
3136
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
3137
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
3138
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
3139
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
3140
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
3141
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
3142
|
|
|
|
|
|
|
|
3143
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
3144
|
|
|
|
|
|
|
} |
3145
|
|
|
|
|
|
|
} |
3146
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
3147
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
3148
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
3149
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
3150
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
3151
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
3152
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
3153
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
3154
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
3155
|
|
|
|
|
|
|
|
3156
|
|
|
|
|
|
|
/*-- cleanup --*/ |
3157
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
3158
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
3159
|
|
|
|
|
|
|
|
3160
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
3161
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3162
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3163
|
|
|
|
|
|
|
|
3164
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3165
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3166
|
|
|
|
|
|
|
|
3167
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3168
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3169
|
|
|
|
|
|
|
|
3170
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3171
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
3172
|
|
|
|
|
|
|
|
3173
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
3174
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
3175
|
|
|
|
|
|
|
|
3176
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
3177
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
3178
|
|
|
|
|
|
|
|
3179
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
3180
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
3181
|
|
|
|
|
|
|
|
3182
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
3183
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
3184
|
|
|
|
|
|
|
|
3185
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
3186
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3187
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3188
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3189
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3190
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3191
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
3192
|
|
|
|
|
|
|
|
3193
|
|
|
|
|
|
|
|
3194
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
3195
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
3196
|
0
|
|
|
|
|
|
int transpose=0; |
3197
|
|
|
|
|
|
|
double retval; |
3198
|
|
|
|
|
|
|
|
3199
|
|
|
|
|
|
|
|
3200
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
3201
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
3202
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
3203
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
3204
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
3205
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
3206
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
3207
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
3208
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
3209
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
3210
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
3211
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
3212
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
3213
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
3214
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
3215
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
3216
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
3217
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
3218
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
3219
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
3220
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
3221
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
3222
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
3223
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
3224
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
3225
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
3226
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
3227
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
3228
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
3229
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
3230
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
3231
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
3232
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
3233
|
0
|
|
|
|
|
|
__tind2++ |
3234
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
3235
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
3236
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
3237
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
3238
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
3239
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
3240
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
3241
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
3242
|
|
|
|
|
|
|
) |
3243
|
|
|
|
|
|
|
{ |
3244
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
3245
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
3246
|
0
|
|
|
|
|
|
__tind1++ |
3247
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
3248
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
3249
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
3250
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
3251
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
3252
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
3253
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
3254
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
3255
|
|
|
|
|
|
|
) |
3256
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
3257
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
3258
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
3259
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
3260
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
3261
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
3262
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
3263
|
|
|
|
|
|
|
|
3264
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
3265
|
|
|
|
|
|
|
} |
3266
|
|
|
|
|
|
|
} |
3267
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
3268
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
3269
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
3270
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
3271
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
3272
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
3273
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
3274
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
3275
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
3276
|
|
|
|
|
|
|
|
3277
|
|
|
|
|
|
|
/*-- cleanup --*/ |
3278
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
3279
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
3280
|
|
|
|
|
|
|
|
3281
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
3282
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3283
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3284
|
|
|
|
|
|
|
|
3285
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3286
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3287
|
|
|
|
|
|
|
|
3288
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3289
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3290
|
|
|
|
|
|
|
|
3291
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3292
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
3293
|
|
|
|
|
|
|
|
3294
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
3295
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
3296
|
|
|
|
|
|
|
|
3297
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
3298
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
3299
|
|
|
|
|
|
|
|
3300
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
3301
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
3302
|
|
|
|
|
|
|
|
3303
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
3304
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
3305
|
|
|
|
|
|
|
|
3306
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
3307
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3308
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3309
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3310
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3311
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3312
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
3313
|
|
|
|
|
|
|
|
3314
|
|
|
|
|
|
|
|
3315
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
3316
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
3317
|
0
|
|
|
|
|
|
int transpose=0; |
3318
|
|
|
|
|
|
|
double retval; |
3319
|
|
|
|
|
|
|
|
3320
|
|
|
|
|
|
|
|
3321
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
3322
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
3323
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
3324
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
3325
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
3326
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
3327
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
3328
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
3329
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
3330
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
3331
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
3332
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
3333
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
3334
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
3335
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
3336
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
3337
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
3338
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
3339
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
3340
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
3341
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
3342
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
3343
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
3344
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
3345
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
3346
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
3347
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
3348
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
3349
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
3350
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
3351
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
3352
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
3353
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
3354
|
0
|
|
|
|
|
|
__tind2++ |
3355
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
3356
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
3357
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
3358
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
3359
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
3360
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
3361
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
3362
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
3363
|
|
|
|
|
|
|
) |
3364
|
|
|
|
|
|
|
{ |
3365
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
3366
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
3367
|
0
|
|
|
|
|
|
__tind1++ |
3368
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
3369
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
3370
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
3371
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
3372
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
3373
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
3374
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
3375
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
3376
|
|
|
|
|
|
|
) |
3377
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
3378
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
3379
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
3380
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
3381
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
3382
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
3383
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
3384
|
|
|
|
|
|
|
|
3385
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
3386
|
|
|
|
|
|
|
} |
3387
|
|
|
|
|
|
|
} |
3388
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
3389
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
3390
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
3391
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
3392
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
3393
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
3394
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
3395
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
3396
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
3397
|
|
|
|
|
|
|
|
3398
|
|
|
|
|
|
|
/*-- cleanup --*/ |
3399
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
3400
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
3401
|
|
|
|
|
|
|
|
3402
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
3403
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3404
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3405
|
|
|
|
|
|
|
|
3406
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3407
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3408
|
|
|
|
|
|
|
|
3409
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3410
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3411
|
|
|
|
|
|
|
|
3412
|
0
|
0
|
|
|
|
|
PDL_Long * n1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3413
|
0
|
|
|
|
|
|
PDL_Long * n1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
3414
|
|
|
|
|
|
|
|
3415
|
0
|
0
|
|
|
|
|
PDL_Long * n2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
3416
|
0
|
|
|
|
|
|
PDL_Long * n2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
3417
|
|
|
|
|
|
|
|
3418
|
0
|
0
|
|
|
|
|
PDL_Long * index1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
3419
|
0
|
|
|
|
|
|
PDL_Long * index1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
3420
|
|
|
|
|
|
|
|
3421
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
3422
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
3423
|
|
|
|
|
|
|
|
3424
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
3425
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
3426
|
|
|
|
|
|
|
|
3427
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_index1_n1 = __privtrans->__inc_index1_n1; |
3428
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3429
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3430
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3431
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3432
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3433
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
3434
|
|
|
|
|
|
|
|
3435
|
|
|
|
|
|
|
|
3436
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
3437
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
3438
|
0
|
|
|
|
|
|
int transpose=0; |
3439
|
|
|
|
|
|
|
double retval; |
3440
|
|
|
|
|
|
|
|
3441
|
|
|
|
|
|
|
|
3442
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
3443
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
3444
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
3445
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
3446
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
3447
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
3448
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
3449
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
3450
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
3451
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
3452
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
3453
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
3454
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
3455
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
3456
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
3457
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
3458
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
3459
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
3460
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
3461
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
3462
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
3463
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
3464
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
3465
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
3466
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
3467
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
3468
|
0
|
|
|
|
|
|
n1_datap += __offsp[3]; |
3469
|
0
|
|
|
|
|
|
n2_datap += __offsp[4]; |
3470
|
0
|
|
|
|
|
|
index1_datap += __offsp[5]; |
3471
|
0
|
|
|
|
|
|
index2_datap += __offsp[6]; |
3472
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
3473
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
3474
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
3475
|
0
|
|
|
|
|
|
__tind2++ |
3476
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
3477
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
3478
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
3479
|
0
|
|
|
|
|
|
,n1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
3480
|
0
|
|
|
|
|
|
,n2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
3481
|
0
|
|
|
|
|
|
,index1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
3482
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
3483
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
3484
|
|
|
|
|
|
|
) |
3485
|
|
|
|
|
|
|
{ |
3486
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
3487
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
3488
|
0
|
|
|
|
|
|
__tind1++ |
3489
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
3490
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
3491
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
3492
|
0
|
|
|
|
|
|
,n1_datap += __tinc0_3 |
3493
|
0
|
|
|
|
|
|
,n2_datap += __tinc0_4 |
3494
|
0
|
|
|
|
|
|
,index1_datap += __tinc0_5 |
3495
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_6 |
3496
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
3497
|
|
|
|
|
|
|
) |
3498
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
3499
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
3500
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
3501
|
0
|
|
|
|
|
|
retval = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
3502
|
|
|
|
|
|
|
weight_datap, (n1_datap)[0] PDL_COMMENT("ACCESS()") , (n2_datap)[0] PDL_COMMENT("ACCESS()") , index1_datap, index2_datap, |
3503
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
3504
|
0
|
|
|
|
|
|
(dist_datap)[0] PDL_COMMENT("ACCESS()") = retval; |
3505
|
|
|
|
|
|
|
|
3506
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
3507
|
|
|
|
|
|
|
} |
3508
|
|
|
|
|
|
|
} |
3509
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
3510
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
3511
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
3512
|
0
|
|
|
|
|
|
n1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
3513
|
0
|
|
|
|
|
|
n2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
3514
|
0
|
|
|
|
|
|
index1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
3515
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
3516
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
3517
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
3518
|
|
|
|
|
|
|
|
3519
|
|
|
|
|
|
|
/*-- cleanup --*/ |
3520
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
3521
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
3522
|
|
|
|
|
|
|
|
3523
|
0
|
|
|
|
|
|
} break;} |
3524
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
3525
|
|
|
|
|
|
|
} |
3526
|
|
|
|
|
|
|
} |
3527
|
|
|
|
|
|
|
} |
3528
|
|
|
|
|
|
|
|
3529
|
|
|
|
|
|
|
|
3530
|
|
|
|
|
|
|
|
3531
|
|
|
|
|
|
|
|
3532
|
6
|
|
|
|
|
|
void pdl_clusterdistance_free(pdl_trans *__tr ) { |
3533
|
|
|
|
|
|
|
int __dim; |
3534
|
6
|
|
|
|
|
|
pdl_clusterdistance_struct *__privtrans = (pdl_clusterdistance_struct *) __tr; |
3535
|
|
|
|
|
|
|
|
3536
|
|
|
|
|
|
|
{ |
3537
|
|
|
|
|
|
|
|
3538
|
6
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
3539
|
6
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
3540
|
6
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
3541
|
6
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
3542
|
|
|
|
|
|
|
;;;;;;;;;;;; |
3543
|
|
|
|
|
|
|
} |
3544
|
|
|
|
|
|
|
|
3545
|
|
|
|
|
|
|
} |
3546
|
6
|
|
|
|
|
|
} |
3547
|
|
|
|
|
|
|
|
3548
|
|
|
|
|
|
|
|
3549
|
|
|
|
|
|
|
|
3550
|
|
|
|
|
|
|
|
3551
|
|
|
|
|
|
|
static char pdl_clusterdistance_vtable_flags[] = |
3552
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,0,0,PDL_TPDL_VAFFINE_OK}; |
3553
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterdistance_vtable = { |
3554
|
|
|
|
|
|
|
0,0, 7, 8, pdl_clusterdistance_vtable_flags, |
3555
|
|
|
|
|
|
|
pdl_clusterdistance_redodims, pdl_clusterdistance_readdata, NULL, |
3556
|
|
|
|
|
|
|
pdl_clusterdistance_free,NULL,NULL,pdl_clusterdistance_copy, |
3557
|
|
|
|
|
|
|
sizeof(pdl_clusterdistance_struct),"pdl_clusterdistance_vtable" |
3558
|
|
|
|
|
|
|
}; |
3559
|
|
|
|
|
|
|
|
3560
|
|
|
|
|
|
|
typedef struct pdl_distancematrix_struct { |
3561
|
|
|
|
|
|
|
PDL_TRANS_START(4); |
3562
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_dists_n0;PDL_Indx __inc_dists_n1;PDL_Indx __d_size;PDL_Indx __n_size; |
3563
|
|
|
|
|
|
|
char *distFlag; |
3564
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
3565
|
|
|
|
|
|
|
} pdl_distancematrix_struct; |
3566
|
|
|
|
|
|
|
|
3567
|
1
|
|
|
|
|
|
void pdl_distancematrix_redodims(pdl_trans *__tr ) { |
3568
|
|
|
|
|
|
|
int __dim; |
3569
|
1
|
|
|
|
|
|
pdl_distancematrix_struct *__privtrans = (pdl_distancematrix_struct *) __tr; |
3570
|
|
|
|
|
|
|
|
3571
|
|
|
|
|
|
|
{ |
3572
|
|
|
|
|
|
|
PDL_Indx __creating[4]; |
3573
|
1
|
|
|
|
|
|
__privtrans->__d_size = -1; |
3574
|
1
|
|
|
|
|
|
__privtrans->__n_size = -1; |
3575
|
1
|
|
|
|
|
|
__creating[0] = 0; |
3576
|
1
|
|
|
|
|
|
__creating[1] = 0; |
3577
|
1
|
|
|
|
|
|
__creating[2] = 0; |
3578
|
1
|
50
|
|
|
|
|
__creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]); |
|
|
50
|
|
|
|
|
|
3579
|
|
|
|
|
|
|
{ |
3580
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
3581
|
|
|
|
|
|
|
|
3582
|
1
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
3583
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
3584
|
1
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3585
|
1
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3586
|
|
|
|
|
|
|
|
3587
|
1
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3588
|
1
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3589
|
|
|
|
|
|
|
|
3590
|
1
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3591
|
1
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3592
|
|
|
|
|
|
|
|
3593
|
1
|
50
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3594
|
1
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3595
|
|
|
|
|
|
|
|
3596
|
1
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3597
|
1
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3598
|
1
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3599
|
1
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3600
|
1
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3601
|
1
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3602
|
1
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3603
|
|
|
|
|
|
|
|
3604
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3605
|
1
|
|
|
|
|
|
} } break; case PDL_S: { |
3606
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3607
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3608
|
|
|
|
|
|
|
|
3609
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3610
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3611
|
|
|
|
|
|
|
|
3612
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3613
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3614
|
|
|
|
|
|
|
|
3615
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3616
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3617
|
|
|
|
|
|
|
|
3618
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3619
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3620
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3621
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3622
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3623
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3624
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3625
|
|
|
|
|
|
|
|
3626
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3627
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
3628
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3629
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3630
|
|
|
|
|
|
|
|
3631
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3632
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3633
|
|
|
|
|
|
|
|
3634
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3635
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3636
|
|
|
|
|
|
|
|
3637
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3638
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3639
|
|
|
|
|
|
|
|
3640
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3641
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3642
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3643
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3644
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3645
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3646
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3647
|
|
|
|
|
|
|
|
3648
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3649
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
3650
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3651
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3652
|
|
|
|
|
|
|
|
3653
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3654
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3655
|
|
|
|
|
|
|
|
3656
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3657
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3658
|
|
|
|
|
|
|
|
3659
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3660
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3661
|
|
|
|
|
|
|
|
3662
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3663
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3664
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3665
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3666
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3667
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3668
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3669
|
|
|
|
|
|
|
|
3670
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3671
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
3672
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3673
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3674
|
|
|
|
|
|
|
|
3675
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3676
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3677
|
|
|
|
|
|
|
|
3678
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3679
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3680
|
|
|
|
|
|
|
|
3681
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3682
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3683
|
|
|
|
|
|
|
|
3684
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3685
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3686
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3687
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3688
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3689
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3690
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3691
|
|
|
|
|
|
|
|
3692
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3693
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
3694
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3695
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3696
|
|
|
|
|
|
|
|
3697
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3698
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3699
|
|
|
|
|
|
|
|
3700
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3701
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3702
|
|
|
|
|
|
|
|
3703
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3704
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3705
|
|
|
|
|
|
|
|
3706
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3707
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3708
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3709
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3710
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3711
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3712
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3713
|
|
|
|
|
|
|
|
3714
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3715
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
3716
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3717
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3718
|
|
|
|
|
|
|
|
3719
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3720
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3721
|
|
|
|
|
|
|
|
3722
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3723
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3724
|
|
|
|
|
|
|
|
3725
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3726
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3727
|
|
|
|
|
|
|
|
3728
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3729
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3730
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3731
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3732
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3733
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3734
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3735
|
|
|
|
|
|
|
|
3736
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3737
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
3738
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3739
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3740
|
|
|
|
|
|
|
|
3741
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3742
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3743
|
|
|
|
|
|
|
|
3744
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3745
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3746
|
|
|
|
|
|
|
|
3747
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3748
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3749
|
|
|
|
|
|
|
|
3750
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3751
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3752
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3753
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3754
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3755
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3756
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
3757
|
|
|
|
|
|
|
|
3758
|
|
|
|
|
|
|
PDL_COMMENT("none") |
3759
|
0
|
|
|
|
|
|
} break;} |
3760
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
3761
|
|
|
|
|
|
|
} |
3762
|
|
|
|
|
|
|
} |
3763
|
|
|
|
|
|
|
{ |
3764
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","dists"}; |
3765
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,2}; |
3766
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::distancematrix"; |
3767
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
3768
|
|
|
|
|
|
|
__funcname, __parnames, 4 |
3769
|
|
|
|
|
|
|
}; |
3770
|
|
|
|
|
|
|
|
3771
|
1
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
3772
|
|
|
|
|
|
|
__realdims,__creating,4, |
3773
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
3774
|
1
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
3775
|
|
|
|
|
|
|
0 ); |
3776
|
|
|
|
|
|
|
} |
3777
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
3778
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
3779
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
3780
|
|
|
|
|
|
|
} |
3781
|
1
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
3782
|
1
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
3783
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
3784
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
3785
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3786
|
|
|
|
|
|
|
} |
3787
|
|
|
|
|
|
|
} |
3788
|
1
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
3789
|
1
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
3790
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
3791
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
3792
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3793
|
|
|
|
|
|
|
} |
3794
|
|
|
|
|
|
|
} |
3795
|
1
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
3796
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
3797
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
3798
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
3799
|
|
|
|
|
|
|
} |
3800
|
1
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
3801
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
3802
|
1
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
3803
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
3804
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3805
|
|
|
|
|
|
|
} |
3806
|
|
|
|
|
|
|
} |
3807
|
1
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
3808
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
3809
|
1
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
3810
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
3811
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3812
|
|
|
|
|
|
|
} |
3813
|
|
|
|
|
|
|
} |
3814
|
1
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
3815
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
3816
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
3817
|
|
|
|
|
|
|
} |
3818
|
1
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
3819
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
3820
|
1
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
3821
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
3822
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3823
|
|
|
|
|
|
|
} |
3824
|
|
|
|
|
|
|
} |
3825
|
1
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
3826
|
1
|
50
|
|
|
|
|
if(!__creating[3]) { |
3827
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 2) { |
3828
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
3829
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
3830
|
|
|
|
|
|
|
} |
3831
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
3832
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[3]))->dims[0]; |
3833
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
3834
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
3835
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3836
|
|
|
|
|
|
|
} |
3837
|
|
|
|
|
|
|
} |
3838
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
3839
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[3]))->dims[1]; |
3840
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[3]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
3841
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[1] != 1) { |
3842
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in distancematrix:" "Wrong dims\n"); |
3843
|
|
|
|
|
|
|
} |
3844
|
|
|
|
|
|
|
} |
3845
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
3846
|
|
|
|
|
|
|
} else { |
3847
|
1
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size;dims[1] = __privtrans->__n_size; |
3848
|
1
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0); |
3849
|
|
|
|
|
|
|
} |
3850
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
3851
|
1
|
|
|
|
|
|
void *hdrp = NULL; |
3852
|
1
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
3853
|
1
|
|
|
|
|
|
SV *hdr_copy = NULL; |
3854
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
3855
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
3856
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
3857
|
|
|
|
|
|
|
) { |
3858
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
3859
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
3860
|
|
|
|
|
|
|
} |
3861
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
3862
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
3863
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
3864
|
|
|
|
|
|
|
) { |
3865
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
3866
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
3867
|
|
|
|
|
|
|
} |
3868
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
3869
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
3870
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
3871
|
|
|
|
|
|
|
) { |
3872
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
3873
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
3874
|
|
|
|
|
|
|
} |
3875
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
3876
|
0
|
0
|
|
|
|
|
!__creating[3] && |
3877
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
3878
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
3879
|
|
|
|
|
|
|
) { |
3880
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
3881
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
3882
|
|
|
|
|
|
|
} |
3883
|
1
|
50
|
|
|
|
|
if (hdrp) { |
3884
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
3885
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
3886
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
3887
|
|
|
|
|
|
|
int count; |
3888
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
3889
|
0
|
|
|
|
|
|
dSP; |
3890
|
0
|
|
|
|
|
|
ENTER ; |
3891
|
0
|
|
|
|
|
|
SAVETMPS ; |
3892
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
3893
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
3894
|
0
|
|
|
|
|
|
PUTBACK ; |
3895
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
3896
|
0
|
|
|
|
|
|
SPAGAIN ; |
3897
|
0
|
0
|
|
|
|
|
if(count != 1) |
3898
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
3899
|
|
|
|
|
|
|
|
3900
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
3901
|
|
|
|
|
|
|
|
3902
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
3903
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
3904
|
|
|
|
|
|
|
} |
3905
|
|
|
|
|
|
|
|
3906
|
0
|
0
|
|
|
|
|
FREETMPS ; |
3907
|
0
|
|
|
|
|
|
LEAVE ; |
3908
|
|
|
|
|
|
|
|
3909
|
|
|
|
|
|
|
|
3910
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
3911
|
|
|
|
|
|
|
|
3912
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[3]->hdrsv != hdrp ){ |
3913
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
3914
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv ); |
3915
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
3916
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
3917
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->hdrsv = hdr_copy; |
3918
|
|
|
|
|
|
|
} |
3919
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
3920
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->state |= PDL_HDRCPY; |
3921
|
|
|
|
|
|
|
|
3922
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
3923
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
3924
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
3925
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
3926
|
1
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
3927
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
3928
|
1
|
50
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
3929
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
3930
|
1
|
50
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
3931
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
3932
|
1
|
50
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
3933
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
3934
|
1
|
50
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
3935
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
3936
|
1
|
50
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
3937
|
0
|
|
|
|
|
|
__privtrans->__inc_dists_n0 = 0; else |
3938
|
1
|
50
|
|
|
|
|
__privtrans->__inc_dists_n0 = __privtrans->pdls[3]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 1 || __privtrans->pdls[3]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
3939
|
0
|
|
|
|
|
|
__privtrans->__inc_dists_n1 = 0; else |
3940
|
1
|
|
|
|
|
|
__privtrans->__inc_dists_n1 = __privtrans->pdls[3]->dimincs[1]; __privtrans->__ddone = 1; |
3941
|
|
|
|
|
|
|
} |
3942
|
1
|
|
|
|
|
|
} |
3943
|
|
|
|
|
|
|
|
3944
|
|
|
|
|
|
|
|
3945
|
0
|
|
|
|
|
|
pdl_trans * pdl_distancematrix_copy(pdl_trans *__tr ) { |
3946
|
|
|
|
|
|
|
int __dim; |
3947
|
0
|
|
|
|
|
|
pdl_distancematrix_struct *__privtrans = (pdl_distancematrix_struct *) __tr; |
3948
|
|
|
|
|
|
|
|
3949
|
|
|
|
|
|
|
{ |
3950
|
0
|
|
|
|
|
|
pdl_distancematrix_struct *__copy = malloc(sizeof(pdl_distancematrix_struct)); |
3951
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
3952
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
3953
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
3954
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
3955
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
3956
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
3957
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
3958
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
3959
|
|
|
|
|
|
|
{int i; |
3960
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
3961
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
3962
|
|
|
|
|
|
|
} |
3963
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);; |
3964
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
3965
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_dists_n0=__copy->__inc_dists_n0;__privtrans->__inc_dists_n1=__copy->__inc_dists_n1;__copy->__d_size=__privtrans->__d_size;__copy->__n_size=__privtrans->__n_size; |
3966
|
|
|
|
|
|
|
} |
3967
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
3968
|
|
|
|
|
|
|
} |
3969
|
|
|
|
|
|
|
} |
3970
|
|
|
|
|
|
|
|
3971
|
|
|
|
|
|
|
|
3972
|
1
|
|
|
|
|
|
void pdl_distancematrix_readdata(pdl_trans *__tr ) { |
3973
|
|
|
|
|
|
|
int __dim; |
3974
|
1
|
|
|
|
|
|
pdl_distancematrix_struct *__privtrans = (pdl_distancematrix_struct *) __tr; |
3975
|
|
|
|
|
|
|
|
3976
|
|
|
|
|
|
|
{ |
3977
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
3978
|
|
|
|
|
|
|
|
3979
|
1
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
3980
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
3981
|
1
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
3982
|
1
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
3983
|
|
|
|
|
|
|
|
3984
|
1
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
3985
|
1
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
3986
|
|
|
|
|
|
|
|
3987
|
1
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
3988
|
1
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
3989
|
|
|
|
|
|
|
|
3990
|
1
|
50
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
3991
|
1
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
3992
|
|
|
|
|
|
|
|
3993
|
1
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
3994
|
1
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
3995
|
1
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
3996
|
1
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
3997
|
1
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
3998
|
1
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
3999
|
1
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4000
|
|
|
|
|
|
|
|
4001
|
|
|
|
|
|
|
|
4002
|
1
|
|
|
|
|
|
int transpose = 0; |
4003
|
1
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4004
|
1
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4005
|
|
|
|
|
|
|
double **retval; |
4006
|
|
|
|
|
|
|
|
4007
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4008
|
1
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4009
|
1
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4010
|
1
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4011
|
1
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4012
|
1
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4013
|
1
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4014
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4015
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4016
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4017
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4018
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4019
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4020
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4021
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4022
|
1
|
|
|
|
|
|
data_datap += __offsp[0]; |
4023
|
1
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4024
|
1
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4025
|
1
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4026
|
2
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
4027
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4028
|
1
|
|
|
|
|
|
__tind2++ |
4029
|
1
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4030
|
1
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4031
|
1
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4032
|
1
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4033
|
|
|
|
|
|
|
) |
4034
|
|
|
|
|
|
|
{ |
4035
|
2
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
4036
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4037
|
1
|
|
|
|
|
|
__tind1++ |
4038
|
1
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4039
|
1
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4040
|
1
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4041
|
1
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4042
|
|
|
|
|
|
|
) |
4043
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4044
|
1
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4045
|
1
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4046
|
1
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4047
|
1
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4048
|
1
|
50
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4049
|
1
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4050
|
1
|
50
|
|
|
|
|
if (retval) free(retval); |
4051
|
|
|
|
|
|
|
|
4052
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4053
|
|
|
|
|
|
|
} |
4054
|
|
|
|
|
|
|
} |
4055
|
1
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4056
|
1
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4057
|
1
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4058
|
1
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4059
|
1
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4060
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4061
|
1
|
50
|
|
|
|
|
if (datapp) free(datapp); |
4062
|
1
|
50
|
|
|
|
|
if (maskpp) free(maskpp); |
4063
|
|
|
|
|
|
|
|
4064
|
1
|
|
|
|
|
|
} } break; case PDL_S: { |
4065
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4066
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4067
|
|
|
|
|
|
|
|
4068
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4069
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4070
|
|
|
|
|
|
|
|
4071
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4072
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4073
|
|
|
|
|
|
|
|
4074
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4075
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4076
|
|
|
|
|
|
|
|
4077
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4078
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4079
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4080
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4081
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4082
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4083
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4084
|
|
|
|
|
|
|
|
4085
|
|
|
|
|
|
|
|
4086
|
0
|
|
|
|
|
|
int transpose = 0; |
4087
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4088
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4089
|
|
|
|
|
|
|
double **retval; |
4090
|
|
|
|
|
|
|
|
4091
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4092
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4093
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4094
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4095
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4096
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4097
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4098
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4099
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4100
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4101
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4102
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4103
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4104
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4105
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4106
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4107
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4108
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4109
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4110
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4111
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4112
|
0
|
|
|
|
|
|
__tind2++ |
4113
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4114
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4115
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4116
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4117
|
|
|
|
|
|
|
) |
4118
|
|
|
|
|
|
|
{ |
4119
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4120
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4121
|
0
|
|
|
|
|
|
__tind1++ |
4122
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4123
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4124
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4125
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4126
|
|
|
|
|
|
|
) |
4127
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4128
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4129
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4130
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4131
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4132
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4133
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4134
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4135
|
|
|
|
|
|
|
|
4136
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4137
|
|
|
|
|
|
|
} |
4138
|
|
|
|
|
|
|
} |
4139
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4140
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4141
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4142
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4143
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4144
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4145
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4146
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4147
|
|
|
|
|
|
|
|
4148
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
4149
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4150
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4151
|
|
|
|
|
|
|
|
4152
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4153
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4154
|
|
|
|
|
|
|
|
4155
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4156
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4157
|
|
|
|
|
|
|
|
4158
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4159
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4160
|
|
|
|
|
|
|
|
4161
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4162
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4163
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4164
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4165
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4166
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4167
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4168
|
|
|
|
|
|
|
|
4169
|
|
|
|
|
|
|
|
4170
|
0
|
|
|
|
|
|
int transpose = 0; |
4171
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4172
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4173
|
|
|
|
|
|
|
double **retval; |
4174
|
|
|
|
|
|
|
|
4175
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4176
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4177
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4178
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4179
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4180
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4181
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4182
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4183
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4184
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4185
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4186
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4187
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4188
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4189
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4190
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4191
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4192
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4193
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4194
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4195
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4196
|
0
|
|
|
|
|
|
__tind2++ |
4197
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4198
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4199
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4200
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4201
|
|
|
|
|
|
|
) |
4202
|
|
|
|
|
|
|
{ |
4203
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4204
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4205
|
0
|
|
|
|
|
|
__tind1++ |
4206
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4207
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4208
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4209
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4210
|
|
|
|
|
|
|
) |
4211
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4212
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4213
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4214
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4215
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4216
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4217
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4218
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4219
|
|
|
|
|
|
|
|
4220
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4221
|
|
|
|
|
|
|
} |
4222
|
|
|
|
|
|
|
} |
4223
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4224
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4225
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4226
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4227
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4228
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4229
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4230
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4231
|
|
|
|
|
|
|
|
4232
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
4233
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4234
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4235
|
|
|
|
|
|
|
|
4236
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4237
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4238
|
|
|
|
|
|
|
|
4239
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4240
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4241
|
|
|
|
|
|
|
|
4242
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4243
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4244
|
|
|
|
|
|
|
|
4245
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4246
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4247
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4248
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4249
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4250
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4251
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4252
|
|
|
|
|
|
|
|
4253
|
|
|
|
|
|
|
|
4254
|
0
|
|
|
|
|
|
int transpose = 0; |
4255
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4256
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4257
|
|
|
|
|
|
|
double **retval; |
4258
|
|
|
|
|
|
|
|
4259
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4260
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4261
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4262
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4263
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4264
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4265
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4266
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4267
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4268
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4269
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4270
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4271
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4272
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4273
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4274
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4275
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4276
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4277
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4278
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4279
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4280
|
0
|
|
|
|
|
|
__tind2++ |
4281
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4282
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4283
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4284
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4285
|
|
|
|
|
|
|
) |
4286
|
|
|
|
|
|
|
{ |
4287
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4288
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4289
|
0
|
|
|
|
|
|
__tind1++ |
4290
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4291
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4292
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4293
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4294
|
|
|
|
|
|
|
) |
4295
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4296
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4297
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4298
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4299
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4300
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4301
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4302
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4303
|
|
|
|
|
|
|
|
4304
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4305
|
|
|
|
|
|
|
} |
4306
|
|
|
|
|
|
|
} |
4307
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4308
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4309
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4310
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4311
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4312
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4313
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4314
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4315
|
|
|
|
|
|
|
|
4316
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
4317
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4318
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4319
|
|
|
|
|
|
|
|
4320
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4321
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4322
|
|
|
|
|
|
|
|
4323
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4324
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4325
|
|
|
|
|
|
|
|
4326
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4327
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4328
|
|
|
|
|
|
|
|
4329
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4330
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4331
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4332
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4333
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4334
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4335
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4336
|
|
|
|
|
|
|
|
4337
|
|
|
|
|
|
|
|
4338
|
0
|
|
|
|
|
|
int transpose = 0; |
4339
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4340
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4341
|
|
|
|
|
|
|
double **retval; |
4342
|
|
|
|
|
|
|
|
4343
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4344
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4345
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4346
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4347
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4348
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4349
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4350
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4351
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4352
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4353
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4354
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4355
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4356
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4357
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4358
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4359
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4360
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4361
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4362
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4363
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4364
|
0
|
|
|
|
|
|
__tind2++ |
4365
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4366
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4367
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4368
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4369
|
|
|
|
|
|
|
) |
4370
|
|
|
|
|
|
|
{ |
4371
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4372
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4373
|
0
|
|
|
|
|
|
__tind1++ |
4374
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4375
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4376
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4377
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4378
|
|
|
|
|
|
|
) |
4379
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4380
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4381
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4382
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4383
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4384
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4385
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4386
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4387
|
|
|
|
|
|
|
|
4388
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4389
|
|
|
|
|
|
|
} |
4390
|
|
|
|
|
|
|
} |
4391
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4392
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4393
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4394
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4395
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4396
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4397
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4398
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4399
|
|
|
|
|
|
|
|
4400
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
4401
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4402
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4403
|
|
|
|
|
|
|
|
4404
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4405
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4406
|
|
|
|
|
|
|
|
4407
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4408
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4409
|
|
|
|
|
|
|
|
4410
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4411
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4412
|
|
|
|
|
|
|
|
4413
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4414
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4415
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4416
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4417
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4418
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4419
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4420
|
|
|
|
|
|
|
|
4421
|
|
|
|
|
|
|
|
4422
|
0
|
|
|
|
|
|
int transpose = 0; |
4423
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4424
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4425
|
|
|
|
|
|
|
double **retval; |
4426
|
|
|
|
|
|
|
|
4427
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4428
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4429
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4430
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4431
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4432
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4433
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4434
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4435
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4436
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4437
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4438
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4439
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4440
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4441
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4442
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4443
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4444
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4445
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4446
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4447
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4448
|
0
|
|
|
|
|
|
__tind2++ |
4449
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4450
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4451
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4452
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4453
|
|
|
|
|
|
|
) |
4454
|
|
|
|
|
|
|
{ |
4455
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4456
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4457
|
0
|
|
|
|
|
|
__tind1++ |
4458
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4459
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4460
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4461
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4462
|
|
|
|
|
|
|
) |
4463
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4464
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4465
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4466
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4467
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4468
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4469
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4470
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4471
|
|
|
|
|
|
|
|
4472
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4473
|
|
|
|
|
|
|
} |
4474
|
|
|
|
|
|
|
} |
4475
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4476
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4477
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4478
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4479
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4480
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4481
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4482
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4483
|
|
|
|
|
|
|
|
4484
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
4485
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4486
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4487
|
|
|
|
|
|
|
|
4488
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4489
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4490
|
|
|
|
|
|
|
|
4491
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4492
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4493
|
|
|
|
|
|
|
|
4494
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4495
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4496
|
|
|
|
|
|
|
|
4497
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4498
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4499
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4500
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4501
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4502
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4503
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4504
|
|
|
|
|
|
|
|
4505
|
|
|
|
|
|
|
|
4506
|
0
|
|
|
|
|
|
int transpose = 0; |
4507
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4508
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4509
|
|
|
|
|
|
|
double **retval; |
4510
|
|
|
|
|
|
|
|
4511
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4512
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4513
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4514
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4515
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4516
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4517
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4518
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4519
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4520
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4521
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4522
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4523
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4524
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4525
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4526
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4527
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4528
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4529
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4530
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4531
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4532
|
0
|
|
|
|
|
|
__tind2++ |
4533
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4534
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4535
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4536
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4537
|
|
|
|
|
|
|
) |
4538
|
|
|
|
|
|
|
{ |
4539
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4540
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4541
|
0
|
|
|
|
|
|
__tind1++ |
4542
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4543
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4544
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4545
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4546
|
|
|
|
|
|
|
) |
4547
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4548
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4549
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4550
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4551
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4552
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4553
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4554
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4555
|
|
|
|
|
|
|
|
4556
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4557
|
|
|
|
|
|
|
} |
4558
|
|
|
|
|
|
|
} |
4559
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4560
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4561
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4562
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4563
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4564
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4565
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4566
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4567
|
|
|
|
|
|
|
|
4568
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
4569
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4570
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4571
|
|
|
|
|
|
|
|
4572
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4573
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4574
|
|
|
|
|
|
|
|
4575
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4576
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
4577
|
|
|
|
|
|
|
|
4578
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4579
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4580
|
|
|
|
|
|
|
|
4581
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4583
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
4584
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n0 = __privtrans->__inc_dists_n0; |
4585
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_n1 = __privtrans->__inc_dists_n1; |
4586
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4587
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4588
|
|
|
|
|
|
|
|
4589
|
|
|
|
|
|
|
|
4590
|
0
|
|
|
|
|
|
int transpose = 0; |
4591
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
4592
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
4593
|
|
|
|
|
|
|
double **retval; |
4594
|
|
|
|
|
|
|
|
4595
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
4596
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
4597
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
4598
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
4599
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
4600
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
4601
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
4602
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
4603
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
4604
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
4605
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
4606
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
4607
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
4608
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
4609
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
4610
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
4611
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
4612
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
4613
|
0
|
|
|
|
|
|
dists_datap += __offsp[3]; |
4614
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
4615
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
4616
|
0
|
|
|
|
|
|
__tind2++ |
4617
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
4618
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
4619
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
4620
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
4621
|
|
|
|
|
|
|
) |
4622
|
|
|
|
|
|
|
{ |
4623
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
4624
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
4625
|
0
|
|
|
|
|
|
__tind1++ |
4626
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
4627
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
4628
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
4629
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_3 |
4630
|
|
|
|
|
|
|
) |
4631
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
4632
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
4633
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
4634
|
0
|
|
|
|
|
|
retval = distancematrix(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
4635
|
0
|
|
|
|
|
|
weight_datap, *__privtrans->distFlag, transpose); |
4636
|
0
|
0
|
|
|
|
|
if (!retval) barf("Cluster matrix allocation failed!"); |
4637
|
0
|
|
|
|
|
|
pp2pdl_ragged_dbl(__privtrans->__n_size, __privtrans->__n_size, retval, dists_datap); |
4638
|
0
|
0
|
|
|
|
|
if (retval) free(retval); |
4639
|
|
|
|
|
|
|
|
4640
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
4641
|
|
|
|
|
|
|
} |
4642
|
|
|
|
|
|
|
} |
4643
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
4644
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
4645
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
4646
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
4647
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
4648
|
|
|
|
|
|
|
/*-- cleanup --*/ |
4649
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
4650
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
4651
|
|
|
|
|
|
|
|
4652
|
0
|
|
|
|
|
|
} break;} |
4653
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
4654
|
|
|
|
|
|
|
} |
4655
|
|
|
|
|
|
|
} |
4656
|
|
|
|
|
|
|
} |
4657
|
|
|
|
|
|
|
|
4658
|
|
|
|
|
|
|
|
4659
|
|
|
|
|
|
|
|
4660
|
|
|
|
|
|
|
|
4661
|
1
|
|
|
|
|
|
void pdl_distancematrix_free(pdl_trans *__tr ) { |
4662
|
|
|
|
|
|
|
int __dim; |
4663
|
1
|
|
|
|
|
|
pdl_distancematrix_struct *__privtrans = (pdl_distancematrix_struct *) __tr; |
4664
|
|
|
|
|
|
|
|
4665
|
|
|
|
|
|
|
{ |
4666
|
|
|
|
|
|
|
|
4667
|
1
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
4668
|
1
|
|
|
|
|
|
free(__privtrans->distFlag);; |
4669
|
1
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
4670
|
1
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
4671
|
|
|
|
|
|
|
;;;;;;;;;; |
4672
|
|
|
|
|
|
|
} |
4673
|
|
|
|
|
|
|
|
4674
|
|
|
|
|
|
|
} |
4675
|
1
|
|
|
|
|
|
} |
4676
|
|
|
|
|
|
|
|
4677
|
|
|
|
|
|
|
|
4678
|
|
|
|
|
|
|
|
4679
|
|
|
|
|
|
|
|
4680
|
|
|
|
|
|
|
static char pdl_distancematrix_vtable_flags[] = |
4681
|
|
|
|
|
|
|
{ 0,0,0,0}; |
4682
|
|
|
|
|
|
|
pdl_transvtable pdl_distancematrix_vtable = { |
4683
|
|
|
|
|
|
|
0,0, 3, 4, pdl_distancematrix_vtable_flags, |
4684
|
|
|
|
|
|
|
pdl_distancematrix_redodims, pdl_distancematrix_readdata, NULL, |
4685
|
|
|
|
|
|
|
pdl_distancematrix_free,NULL,NULL,pdl_distancematrix_copy, |
4686
|
|
|
|
|
|
|
sizeof(pdl_distancematrix_struct),"pdl_distancematrix_vtable" |
4687
|
|
|
|
|
|
|
}; |
4688
|
|
|
|
|
|
|
|
4689
|
|
|
|
|
|
|
typedef struct pdl_getclustercentroids_struct { |
4690
|
|
|
|
|
|
|
PDL_TRANS_START(5); |
4691
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_clusterids_n;PDL_Indx __inc_cdata_d;PDL_Indx __inc_cdata_k;PDL_Indx __inc_cmask_d;PDL_Indx __inc_cmask_k;PDL_Indx __d_size;PDL_Indx __k_size;PDL_Indx __n_size; |
4692
|
|
|
|
|
|
|
char *ctrMethodFlag; |
4693
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
4694
|
|
|
|
|
|
|
} pdl_getclustercentroids_struct; |
4695
|
|
|
|
|
|
|
|
4696
|
0
|
|
|
|
|
|
void pdl_getclustercentroids_redodims(pdl_trans *__tr ) { |
4697
|
|
|
|
|
|
|
int __dim; |
4698
|
0
|
|
|
|
|
|
pdl_getclustercentroids_struct *__privtrans = (pdl_getclustercentroids_struct *) __tr; |
4699
|
|
|
|
|
|
|
|
4700
|
|
|
|
|
|
|
{ |
4701
|
|
|
|
|
|
|
PDL_Indx __creating[5]; |
4702
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
4703
|
0
|
|
|
|
|
|
__privtrans->__k_size = -1; |
4704
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
4705
|
0
|
|
|
|
|
|
__creating[0] = 0; |
4706
|
0
|
|
|
|
|
|
__creating[1] = 0; |
4707
|
0
|
|
|
|
|
|
__creating[2] = 0; |
4708
|
0
|
0
|
|
|
|
|
__creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]); |
|
|
0
|
|
|
|
|
|
4709
|
0
|
0
|
|
|
|
|
__creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]); |
|
|
0
|
|
|
|
|
|
4710
|
|
|
|
|
|
|
{ |
4711
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
4712
|
|
|
|
|
|
|
|
4713
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
4714
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
4715
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4716
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4717
|
|
|
|
|
|
|
|
4718
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4719
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4720
|
|
|
|
|
|
|
|
4721
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4722
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4723
|
|
|
|
|
|
|
|
4724
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4725
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4726
|
|
|
|
|
|
|
|
4727
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4728
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4729
|
|
|
|
|
|
|
|
4730
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4731
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4732
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4733
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4734
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4735
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4736
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4737
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4738
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4739
|
|
|
|
|
|
|
|
4740
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4741
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
4742
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4743
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4744
|
|
|
|
|
|
|
|
4745
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4746
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4747
|
|
|
|
|
|
|
|
4748
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4749
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4750
|
|
|
|
|
|
|
|
4751
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4752
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4753
|
|
|
|
|
|
|
|
4754
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4755
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4756
|
|
|
|
|
|
|
|
4757
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4758
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4759
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4760
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4761
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4762
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4763
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4764
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4765
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4766
|
|
|
|
|
|
|
|
4767
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4768
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
4769
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4770
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4771
|
|
|
|
|
|
|
|
4772
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4773
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4774
|
|
|
|
|
|
|
|
4775
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4776
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4777
|
|
|
|
|
|
|
|
4778
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4779
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4780
|
|
|
|
|
|
|
|
4781
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4782
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4783
|
|
|
|
|
|
|
|
4784
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4785
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4786
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4787
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4788
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4789
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4790
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4791
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4792
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4793
|
|
|
|
|
|
|
|
4794
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4795
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
4796
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4797
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4798
|
|
|
|
|
|
|
|
4799
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4800
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4801
|
|
|
|
|
|
|
|
4802
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4803
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4804
|
|
|
|
|
|
|
|
4805
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4806
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4807
|
|
|
|
|
|
|
|
4808
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4809
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4810
|
|
|
|
|
|
|
|
4811
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4812
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4813
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4814
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4815
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4816
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4817
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4818
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4819
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4820
|
|
|
|
|
|
|
|
4821
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4822
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
4823
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4824
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4825
|
|
|
|
|
|
|
|
4826
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4827
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4828
|
|
|
|
|
|
|
|
4829
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4830
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4831
|
|
|
|
|
|
|
|
4832
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4833
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4834
|
|
|
|
|
|
|
|
4835
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4836
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4837
|
|
|
|
|
|
|
|
4838
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4839
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4840
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4841
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4842
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4843
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4844
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4845
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4846
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4847
|
|
|
|
|
|
|
|
4848
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4849
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
4850
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4851
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4852
|
|
|
|
|
|
|
|
4853
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4854
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4855
|
|
|
|
|
|
|
|
4856
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4857
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4858
|
|
|
|
|
|
|
|
4859
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4860
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4861
|
|
|
|
|
|
|
|
4862
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4863
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4864
|
|
|
|
|
|
|
|
4865
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4866
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4867
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4868
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4869
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4870
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4871
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4872
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4873
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4874
|
|
|
|
|
|
|
|
4875
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4876
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
4877
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4878
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4879
|
|
|
|
|
|
|
|
4880
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4881
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4882
|
|
|
|
|
|
|
|
4883
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4884
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4885
|
|
|
|
|
|
|
|
4886
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4887
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4888
|
|
|
|
|
|
|
|
4889
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4890
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4891
|
|
|
|
|
|
|
|
4892
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4893
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4894
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4895
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4896
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4897
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4898
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4899
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4900
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4901
|
|
|
|
|
|
|
|
4902
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4903
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
4904
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
4905
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
4906
|
|
|
|
|
|
|
|
4907
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
4908
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
4909
|
|
|
|
|
|
|
|
4910
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
4911
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
4912
|
|
|
|
|
|
|
|
4913
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
4914
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
4915
|
|
|
|
|
|
|
|
4916
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
4917
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
4918
|
|
|
|
|
|
|
|
4919
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
4920
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
4921
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
4922
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
4923
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
4924
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
4925
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
4926
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
4927
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
4928
|
|
|
|
|
|
|
|
4929
|
|
|
|
|
|
|
PDL_COMMENT("none") |
4930
|
0
|
|
|
|
|
|
} break;} |
4931
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
4932
|
|
|
|
|
|
|
} |
4933
|
|
|
|
|
|
|
} |
4934
|
|
|
|
|
|
|
{ |
4935
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","clusterids","cdata","cmask"}; |
4936
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,2,2}; |
4937
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::getclustercentroids"; |
4938
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
4939
|
|
|
|
|
|
|
__funcname, __parnames, 5 |
4940
|
|
|
|
|
|
|
}; |
4941
|
|
|
|
|
|
|
|
4942
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
4943
|
|
|
|
|
|
|
__realdims,__creating,5, |
4944
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
4945
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
4946
|
|
|
|
|
|
|
0 ); |
4947
|
|
|
|
|
|
|
} |
4948
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
4949
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
4950
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
4951
|
|
|
|
|
|
|
} |
4952
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
4953
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
4954
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
4955
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
4956
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
4957
|
|
|
|
|
|
|
} |
4958
|
|
|
|
|
|
|
} |
4959
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
4960
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
4961
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
4962
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
4963
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
4964
|
|
|
|
|
|
|
} |
4965
|
|
|
|
|
|
|
} |
4966
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
4967
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
4968
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
4969
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
4970
|
|
|
|
|
|
|
} |
4971
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
4972
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
4973
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
4974
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
4975
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
4976
|
|
|
|
|
|
|
} |
4977
|
|
|
|
|
|
|
} |
4978
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
4979
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
4980
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
4981
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
4982
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
4983
|
|
|
|
|
|
|
} |
4984
|
|
|
|
|
|
|
} |
4985
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
4986
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
4987
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
4988
|
|
|
|
|
|
|
} |
4989
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
4990
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[2]))->dims[0]; |
4991
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
4992
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
4993
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
4994
|
|
|
|
|
|
|
} |
4995
|
|
|
|
|
|
|
} |
4996
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
4997
|
0
|
0
|
|
|
|
|
if(!__creating[3]) { |
4998
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 2) { |
4999
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
5000
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
5001
|
|
|
|
|
|
|
} |
5002
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
5003
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[3]))->dims[0]; |
5004
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
5005
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
5006
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
5007
|
|
|
|
|
|
|
} |
5008
|
|
|
|
|
|
|
} |
5009
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
5010
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[3]))->dims[1]; |
5011
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[3]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
5012
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[1] != 1) { |
5013
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
5014
|
|
|
|
|
|
|
} |
5015
|
|
|
|
|
|
|
} |
5016
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
5017
|
|
|
|
|
|
|
} else { |
5018
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;dims[1] = __privtrans->__k_size; |
5019
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0); |
5020
|
0
|
0
|
|
|
|
|
}if(!__creating[4]) { |
5021
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 2) { |
5022
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
5023
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
5024
|
|
|
|
|
|
|
} |
5025
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
5026
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[4]))->dims[0]; |
5027
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
5028
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
5029
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
5030
|
|
|
|
|
|
|
} |
5031
|
|
|
|
|
|
|
} |
5032
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
5033
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[4]))->dims[1]; |
5034
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[4]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
5035
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[1] != 1) { |
5036
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustercentroids:" "Wrong dims\n"); |
5037
|
|
|
|
|
|
|
} |
5038
|
|
|
|
|
|
|
} |
5039
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
5040
|
|
|
|
|
|
|
} else { |
5041
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;dims[1] = __privtrans->__k_size; |
5042
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0); |
5043
|
|
|
|
|
|
|
} |
5044
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
5045
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
5046
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
5047
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
5048
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
5049
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
5050
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
5051
|
|
|
|
|
|
|
) { |
5052
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
5053
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
5054
|
|
|
|
|
|
|
} |
5055
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
5056
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
5057
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
5058
|
|
|
|
|
|
|
) { |
5059
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
5060
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
5061
|
|
|
|
|
|
|
} |
5062
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
5063
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
5064
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
5065
|
|
|
|
|
|
|
) { |
5066
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
5067
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
5068
|
|
|
|
|
|
|
} |
5069
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
5070
|
0
|
0
|
|
|
|
|
!__creating[3] && |
5071
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
5072
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
5073
|
|
|
|
|
|
|
) { |
5074
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
5075
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
5076
|
|
|
|
|
|
|
} |
5077
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
5078
|
0
|
0
|
|
|
|
|
!__creating[4] && |
5079
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
5080
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
5081
|
|
|
|
|
|
|
) { |
5082
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
5083
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
5084
|
|
|
|
|
|
|
} |
5085
|
0
|
0
|
|
|
|
|
if (hdrp) { |
5086
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
5087
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
5088
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
5089
|
|
|
|
|
|
|
int count; |
5090
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
5091
|
0
|
|
|
|
|
|
dSP; |
5092
|
0
|
|
|
|
|
|
ENTER ; |
5093
|
0
|
|
|
|
|
|
SAVETMPS ; |
5094
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
5095
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
5096
|
0
|
|
|
|
|
|
PUTBACK ; |
5097
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
5098
|
0
|
|
|
|
|
|
SPAGAIN ; |
5099
|
0
|
0
|
|
|
|
|
if(count != 1) |
5100
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
5101
|
|
|
|
|
|
|
|
5102
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
5103
|
|
|
|
|
|
|
|
5104
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
5105
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
5106
|
|
|
|
|
|
|
} |
5107
|
|
|
|
|
|
|
|
5108
|
0
|
0
|
|
|
|
|
FREETMPS ; |
5109
|
0
|
|
|
|
|
|
LEAVE ; |
5110
|
|
|
|
|
|
|
|
5111
|
|
|
|
|
|
|
|
5112
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
5113
|
|
|
|
|
|
|
|
5114
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[3]->hdrsv != hdrp ){ |
5115
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
5116
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv ); |
5117
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
5118
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
5119
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->hdrsv = hdr_copy; |
5120
|
|
|
|
|
|
|
} |
5121
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
5122
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->state |= PDL_HDRCPY; |
5123
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[4]->hdrsv != hdrp ){ |
5124
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
5125
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv ); |
5126
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
5127
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
5128
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->hdrsv = hdr_copy; |
5129
|
|
|
|
|
|
|
} |
5130
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
5131
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->state |= PDL_HDRCPY; |
5132
|
|
|
|
|
|
|
|
5133
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
5134
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
5135
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
5136
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
5137
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
5138
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
5139
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
5140
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
5141
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
5142
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
5143
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
5144
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
5145
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
5146
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
5147
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clusterids_n = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
5148
|
0
|
|
|
|
|
|
__privtrans->__inc_cdata_d = 0; else |
5149
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdata_d = __privtrans->pdls[3]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 1 || __privtrans->pdls[3]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
5150
|
0
|
|
|
|
|
|
__privtrans->__inc_cdata_k = 0; else |
5151
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdata_k = __privtrans->pdls[3]->dimincs[1];if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
5152
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_d = 0; else |
5153
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cmask_d = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[4]->ndims <= 1 || __privtrans->pdls[4]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
5154
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_k = 0; else |
5155
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_k = __privtrans->pdls[4]->dimincs[1]; __privtrans->__ddone = 1; |
5156
|
|
|
|
|
|
|
} |
5157
|
0
|
|
|
|
|
|
} |
5158
|
|
|
|
|
|
|
|
5159
|
|
|
|
|
|
|
|
5160
|
0
|
|
|
|
|
|
pdl_trans * pdl_getclustercentroids_copy(pdl_trans *__tr ) { |
5161
|
|
|
|
|
|
|
int __dim; |
5162
|
0
|
|
|
|
|
|
pdl_getclustercentroids_struct *__privtrans = (pdl_getclustercentroids_struct *) __tr; |
5163
|
|
|
|
|
|
|
|
5164
|
|
|
|
|
|
|
{ |
5165
|
0
|
|
|
|
|
|
pdl_getclustercentroids_struct *__copy = malloc(sizeof(pdl_getclustercentroids_struct)); |
5166
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
5167
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
5168
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
5169
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
5170
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
5171
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
5172
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
5173
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
5174
|
|
|
|
|
|
|
{int i; |
5175
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
5176
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
5177
|
|
|
|
|
|
|
} |
5178
|
0
|
|
|
|
|
|
(__copy->ctrMethodFlag) = malloc(strlen(__privtrans->ctrMethodFlag)+1); strcpy(__copy->ctrMethodFlag,__privtrans->ctrMethodFlag);; |
5179
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
5180
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__privtrans->__inc_cdata_d=__copy->__inc_cdata_d;__privtrans->__inc_cdata_k=__copy->__inc_cdata_k;__privtrans->__inc_cmask_d=__copy->__inc_cmask_d;__privtrans->__inc_cmask_k=__copy->__inc_cmask_k;__copy->__d_size=__privtrans->__d_size;__copy->__k_size=__privtrans->__k_size;__copy->__n_size=__privtrans->__n_size; |
5181
|
|
|
|
|
|
|
} |
5182
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
5183
|
|
|
|
|
|
|
} |
5184
|
|
|
|
|
|
|
} |
5185
|
|
|
|
|
|
|
|
5186
|
|
|
|
|
|
|
|
5187
|
0
|
|
|
|
|
|
void pdl_getclustercentroids_readdata(pdl_trans *__tr ) { |
5188
|
|
|
|
|
|
|
int __dim; |
5189
|
0
|
|
|
|
|
|
pdl_getclustercentroids_struct *__privtrans = (pdl_getclustercentroids_struct *) __tr; |
5190
|
|
|
|
|
|
|
|
5191
|
|
|
|
|
|
|
{ |
5192
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
5193
|
|
|
|
|
|
|
|
5194
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
5195
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
5196
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5197
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5198
|
|
|
|
|
|
|
|
5199
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5200
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5201
|
|
|
|
|
|
|
|
5202
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5203
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5204
|
|
|
|
|
|
|
|
5205
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5206
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5207
|
|
|
|
|
|
|
|
5208
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5209
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5210
|
|
|
|
|
|
|
|
5211
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5212
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5213
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5214
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5215
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5216
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5217
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5218
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5219
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5220
|
|
|
|
|
|
|
|
5221
|
|
|
|
|
|
|
|
5222
|
0
|
|
|
|
|
|
int transpose = 0; |
5223
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5224
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5225
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5226
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5227
|
|
|
|
|
|
|
|
5228
|
|
|
|
|
|
|
|
5229
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5230
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5231
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5232
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5233
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5234
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5235
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5236
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5237
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5238
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5239
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5240
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5241
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5242
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5243
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5244
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5245
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5246
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5247
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5248
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5249
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5250
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5251
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5252
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5253
|
0
|
|
|
|
|
|
__tind2++ |
5254
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5255
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5256
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5257
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5258
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5259
|
|
|
|
|
|
|
) |
5260
|
|
|
|
|
|
|
{ |
5261
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5262
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5263
|
0
|
|
|
|
|
|
__tind1++ |
5264
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5265
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5266
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5267
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5268
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5269
|
|
|
|
|
|
|
) |
5270
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5271
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5272
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5273
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5274
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5275
|
|
|
|
|
|
|
|
5276
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5277
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5278
|
|
|
|
|
|
|
|
5279
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5280
|
|
|
|
|
|
|
} |
5281
|
|
|
|
|
|
|
} |
5282
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5283
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5284
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5285
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5286
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5287
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5288
|
|
|
|
|
|
|
|
5289
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5290
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5291
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5292
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5293
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5294
|
|
|
|
|
|
|
|
5295
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
5296
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5297
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5298
|
|
|
|
|
|
|
|
5299
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5300
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5301
|
|
|
|
|
|
|
|
5302
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5303
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5304
|
|
|
|
|
|
|
|
5305
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5306
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5307
|
|
|
|
|
|
|
|
5308
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5309
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5310
|
|
|
|
|
|
|
|
5311
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5312
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5313
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5314
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5315
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5316
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5317
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5318
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5319
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5320
|
|
|
|
|
|
|
|
5321
|
|
|
|
|
|
|
|
5322
|
0
|
|
|
|
|
|
int transpose = 0; |
5323
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5324
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5325
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5326
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5327
|
|
|
|
|
|
|
|
5328
|
|
|
|
|
|
|
|
5329
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5330
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5331
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5332
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5333
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5334
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5335
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5336
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5337
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5338
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5339
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5340
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5341
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5342
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5343
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5344
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5345
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5346
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5347
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5348
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5349
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5350
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5351
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5352
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5353
|
0
|
|
|
|
|
|
__tind2++ |
5354
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5355
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5356
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5357
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5358
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5359
|
|
|
|
|
|
|
) |
5360
|
|
|
|
|
|
|
{ |
5361
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5362
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5363
|
0
|
|
|
|
|
|
__tind1++ |
5364
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5365
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5366
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5367
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5368
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5369
|
|
|
|
|
|
|
) |
5370
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5371
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5372
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5373
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5374
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5375
|
|
|
|
|
|
|
|
5376
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5377
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5378
|
|
|
|
|
|
|
|
5379
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5380
|
|
|
|
|
|
|
} |
5381
|
|
|
|
|
|
|
} |
5382
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5383
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5384
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5385
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5386
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5387
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5388
|
|
|
|
|
|
|
|
5389
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5390
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5391
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5392
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5393
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5394
|
|
|
|
|
|
|
|
5395
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
5396
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5397
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5398
|
|
|
|
|
|
|
|
5399
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5400
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5401
|
|
|
|
|
|
|
|
5402
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5403
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5404
|
|
|
|
|
|
|
|
5405
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5406
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5407
|
|
|
|
|
|
|
|
5408
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5409
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5410
|
|
|
|
|
|
|
|
5411
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5412
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5413
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5414
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5415
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5416
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5417
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5418
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5419
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5420
|
|
|
|
|
|
|
|
5421
|
|
|
|
|
|
|
|
5422
|
0
|
|
|
|
|
|
int transpose = 0; |
5423
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5424
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5425
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5426
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5427
|
|
|
|
|
|
|
|
5428
|
|
|
|
|
|
|
|
5429
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5430
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5431
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5432
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5433
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5434
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5435
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5436
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5437
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5438
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5439
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5440
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5441
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5442
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5443
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5444
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5445
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5446
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5447
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5448
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5449
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5450
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5451
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5452
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5453
|
0
|
|
|
|
|
|
__tind2++ |
5454
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5455
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5456
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5457
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5458
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5459
|
|
|
|
|
|
|
) |
5460
|
|
|
|
|
|
|
{ |
5461
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5462
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5463
|
0
|
|
|
|
|
|
__tind1++ |
5464
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5465
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5466
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5467
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5468
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5469
|
|
|
|
|
|
|
) |
5470
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5471
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5472
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5473
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5474
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5475
|
|
|
|
|
|
|
|
5476
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5477
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5478
|
|
|
|
|
|
|
|
5479
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5480
|
|
|
|
|
|
|
} |
5481
|
|
|
|
|
|
|
} |
5482
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5483
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5484
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5485
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5486
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5487
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5488
|
|
|
|
|
|
|
|
5489
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5490
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5491
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5492
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5493
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5494
|
|
|
|
|
|
|
|
5495
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
5496
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5497
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5498
|
|
|
|
|
|
|
|
5499
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5500
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5501
|
|
|
|
|
|
|
|
5502
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5503
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5504
|
|
|
|
|
|
|
|
5505
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5506
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5507
|
|
|
|
|
|
|
|
5508
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5509
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5510
|
|
|
|
|
|
|
|
5511
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5512
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5513
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5514
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5515
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5516
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5517
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5518
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5519
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5520
|
|
|
|
|
|
|
|
5521
|
|
|
|
|
|
|
|
5522
|
0
|
|
|
|
|
|
int transpose = 0; |
5523
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5524
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5525
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5526
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5527
|
|
|
|
|
|
|
|
5528
|
|
|
|
|
|
|
|
5529
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5530
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5531
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5532
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5533
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5534
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5535
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5536
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5537
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5538
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5539
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5540
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5541
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5542
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5543
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5544
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5545
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5546
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5547
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5548
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5549
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5550
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5551
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5552
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5553
|
0
|
|
|
|
|
|
__tind2++ |
5554
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5555
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5556
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5557
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5558
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5559
|
|
|
|
|
|
|
) |
5560
|
|
|
|
|
|
|
{ |
5561
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5562
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5563
|
0
|
|
|
|
|
|
__tind1++ |
5564
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5565
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5566
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5567
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5568
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5569
|
|
|
|
|
|
|
) |
5570
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5571
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5572
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5573
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5574
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5575
|
|
|
|
|
|
|
|
5576
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5577
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5578
|
|
|
|
|
|
|
|
5579
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5580
|
|
|
|
|
|
|
} |
5581
|
|
|
|
|
|
|
} |
5582
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5583
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5584
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5585
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5586
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5587
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5588
|
|
|
|
|
|
|
|
5589
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5590
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5591
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5592
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5593
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5594
|
|
|
|
|
|
|
|
5595
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
5596
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5597
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5598
|
|
|
|
|
|
|
|
5599
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5600
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5601
|
|
|
|
|
|
|
|
5602
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5603
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5604
|
|
|
|
|
|
|
|
5605
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5606
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5607
|
|
|
|
|
|
|
|
5608
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5609
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5610
|
|
|
|
|
|
|
|
5611
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5612
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5613
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5614
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5615
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5616
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5617
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5618
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5619
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5620
|
|
|
|
|
|
|
|
5621
|
|
|
|
|
|
|
|
5622
|
0
|
|
|
|
|
|
int transpose = 0; |
5623
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5624
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5625
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5626
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5627
|
|
|
|
|
|
|
|
5628
|
|
|
|
|
|
|
|
5629
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5630
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5631
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5632
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5633
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5634
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5635
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5636
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5637
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5638
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5639
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5640
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5641
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5642
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5643
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5644
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5645
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5646
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5647
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5648
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5649
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5650
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5651
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5652
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5653
|
0
|
|
|
|
|
|
__tind2++ |
5654
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5655
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5656
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5657
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5658
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5659
|
|
|
|
|
|
|
) |
5660
|
|
|
|
|
|
|
{ |
5661
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5662
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5663
|
0
|
|
|
|
|
|
__tind1++ |
5664
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5665
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5666
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5667
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5668
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5669
|
|
|
|
|
|
|
) |
5670
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5671
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5672
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5673
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5674
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5675
|
|
|
|
|
|
|
|
5676
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5677
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5678
|
|
|
|
|
|
|
|
5679
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5680
|
|
|
|
|
|
|
} |
5681
|
|
|
|
|
|
|
} |
5682
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5683
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5684
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5685
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5686
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5687
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5688
|
|
|
|
|
|
|
|
5689
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5690
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5691
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5692
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5693
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5694
|
|
|
|
|
|
|
|
5695
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
5696
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5697
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5698
|
|
|
|
|
|
|
|
5699
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5700
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5701
|
|
|
|
|
|
|
|
5702
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5703
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5704
|
|
|
|
|
|
|
|
5705
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5706
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5707
|
|
|
|
|
|
|
|
5708
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5709
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5710
|
|
|
|
|
|
|
|
5711
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5712
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5713
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5714
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5715
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5716
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5717
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5718
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5719
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5720
|
|
|
|
|
|
|
|
5721
|
|
|
|
|
|
|
|
5722
|
0
|
|
|
|
|
|
int transpose = 0; |
5723
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5724
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5725
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5726
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5727
|
|
|
|
|
|
|
|
5728
|
|
|
|
|
|
|
|
5729
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5730
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5731
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5732
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5733
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5734
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5735
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5736
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5737
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5738
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5739
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5740
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5741
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5742
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5743
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5744
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5745
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5746
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5747
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5748
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5749
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5750
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5751
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5752
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5753
|
0
|
|
|
|
|
|
__tind2++ |
5754
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5755
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5756
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5757
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5758
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5759
|
|
|
|
|
|
|
) |
5760
|
|
|
|
|
|
|
{ |
5761
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5762
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5763
|
0
|
|
|
|
|
|
__tind1++ |
5764
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5765
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5766
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5767
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5768
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5769
|
|
|
|
|
|
|
) |
5770
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5771
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5772
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5773
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5774
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5775
|
|
|
|
|
|
|
|
5776
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5777
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5778
|
|
|
|
|
|
|
|
5779
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5780
|
|
|
|
|
|
|
} |
5781
|
|
|
|
|
|
|
} |
5782
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5783
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5784
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5785
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5786
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5787
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5788
|
|
|
|
|
|
|
|
5789
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5790
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5791
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5792
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5793
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5794
|
|
|
|
|
|
|
|
5795
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
5796
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5797
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5798
|
|
|
|
|
|
|
|
5799
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5800
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5801
|
|
|
|
|
|
|
|
5802
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5803
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5804
|
|
|
|
|
|
|
|
5805
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5806
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5807
|
|
|
|
|
|
|
|
5808
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5809
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5810
|
|
|
|
|
|
|
|
5811
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5812
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5813
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5814
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5815
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5816
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5817
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5818
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5819
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5820
|
|
|
|
|
|
|
|
5821
|
|
|
|
|
|
|
|
5822
|
0
|
|
|
|
|
|
int transpose = 0; |
5823
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5824
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5825
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5826
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5827
|
|
|
|
|
|
|
|
5828
|
|
|
|
|
|
|
|
5829
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5830
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5831
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5832
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5833
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5834
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5835
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5836
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5837
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5838
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5839
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5840
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5841
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5842
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5843
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5844
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5845
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5846
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5847
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5848
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5849
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5850
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5851
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5852
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5853
|
0
|
|
|
|
|
|
__tind2++ |
5854
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5855
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5856
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5857
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5858
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5859
|
|
|
|
|
|
|
) |
5860
|
|
|
|
|
|
|
{ |
5861
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5862
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5863
|
0
|
|
|
|
|
|
__tind1++ |
5864
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5865
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5866
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5867
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5868
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5869
|
|
|
|
|
|
|
) |
5870
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5871
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5872
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5873
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5874
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5875
|
|
|
|
|
|
|
|
5876
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5877
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5878
|
|
|
|
|
|
|
|
5879
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5880
|
|
|
|
|
|
|
} |
5881
|
|
|
|
|
|
|
} |
5882
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5883
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5884
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5885
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5886
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5887
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5888
|
|
|
|
|
|
|
|
5889
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5890
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5891
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5892
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5893
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5894
|
|
|
|
|
|
|
|
5895
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
5896
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
5897
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
5898
|
|
|
|
|
|
|
|
5899
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
5900
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
5901
|
|
|
|
|
|
|
|
5902
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
5903
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
5904
|
|
|
|
|
|
|
|
5905
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
5906
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
5907
|
|
|
|
|
|
|
|
5908
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
5909
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
5910
|
|
|
|
|
|
|
|
5911
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
5912
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
5913
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
5914
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
5915
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
5916
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
5917
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
5918
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
5919
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
5920
|
|
|
|
|
|
|
|
5921
|
|
|
|
|
|
|
|
5922
|
0
|
|
|
|
|
|
int transpose = 0; |
5923
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
5924
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
5925
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
5926
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
5927
|
|
|
|
|
|
|
|
5928
|
|
|
|
|
|
|
|
5929
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
5930
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
5931
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
5932
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
5933
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
5934
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
5935
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
5936
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
5937
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
5938
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
5939
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
5940
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
5941
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
5942
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
5943
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
5944
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
5945
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
5946
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
5947
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
5948
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
5949
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
5950
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
5951
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
5952
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
5953
|
0
|
|
|
|
|
|
__tind2++ |
5954
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
5955
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
5956
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
5957
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
5958
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
5959
|
|
|
|
|
|
|
) |
5960
|
|
|
|
|
|
|
{ |
5961
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
5962
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
5963
|
0
|
|
|
|
|
|
__tind1++ |
5964
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
5965
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
5966
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
5967
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
5968
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
5969
|
|
|
|
|
|
|
) |
5970
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
5971
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
5972
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
5973
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
5974
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
5975
|
|
|
|
|
|
|
|
5976
|
0
|
|
|
|
|
|
getclustercentroids(__privtrans->__k_size, __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
5977
|
0
|
|
|
|
|
|
clusterids_datap, cdatapp, cmaskpp, transpose, *__privtrans->ctrMethodFlag); |
5978
|
|
|
|
|
|
|
|
5979
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
5980
|
|
|
|
|
|
|
} |
5981
|
|
|
|
|
|
|
} |
5982
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
5983
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
5984
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
5985
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
5986
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
5987
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
5988
|
|
|
|
|
|
|
|
5989
|
|
|
|
|
|
|
/*-- cleanup --*/ |
5990
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
5991
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
5992
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
5993
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
5994
|
|
|
|
|
|
|
|
5995
|
0
|
|
|
|
|
|
} break;} |
5996
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
5997
|
|
|
|
|
|
|
} |
5998
|
|
|
|
|
|
|
} |
5999
|
|
|
|
|
|
|
} |
6000
|
|
|
|
|
|
|
|
6001
|
|
|
|
|
|
|
|
6002
|
|
|
|
|
|
|
|
6003
|
|
|
|
|
|
|
|
6004
|
0
|
|
|
|
|
|
void pdl_getclustercentroids_free(pdl_trans *__tr ) { |
6005
|
|
|
|
|
|
|
int __dim; |
6006
|
0
|
|
|
|
|
|
pdl_getclustercentroids_struct *__privtrans = (pdl_getclustercentroids_struct *) __tr; |
6007
|
|
|
|
|
|
|
|
6008
|
|
|
|
|
|
|
{ |
6009
|
|
|
|
|
|
|
|
6010
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
6011
|
0
|
|
|
|
|
|
free(__privtrans->ctrMethodFlag);; |
6012
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
6013
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
6014
|
|
|
|
|
|
|
;;;;;;;;;;;;; |
6015
|
|
|
|
|
|
|
} |
6016
|
|
|
|
|
|
|
|
6017
|
|
|
|
|
|
|
} |
6018
|
0
|
|
|
|
|
|
} |
6019
|
|
|
|
|
|
|
|
6020
|
|
|
|
|
|
|
|
6021
|
|
|
|
|
|
|
|
6022
|
|
|
|
|
|
|
|
6023
|
|
|
|
|
|
|
static char pdl_getclustercentroids_vtable_flags[] = |
6024
|
|
|
|
|
|
|
{ 0,0,0,0,0}; |
6025
|
|
|
|
|
|
|
pdl_transvtable pdl_getclustercentroids_vtable = { |
6026
|
|
|
|
|
|
|
0,0, 3, 5, pdl_getclustercentroids_vtable_flags, |
6027
|
|
|
|
|
|
|
pdl_getclustercentroids_redodims, pdl_getclustercentroids_readdata, NULL, |
6028
|
|
|
|
|
|
|
pdl_getclustercentroids_free,NULL,NULL,pdl_getclustercentroids_copy, |
6029
|
|
|
|
|
|
|
sizeof(pdl_getclustercentroids_struct),"pdl_getclustercentroids_vtable" |
6030
|
|
|
|
|
|
|
}; |
6031
|
|
|
|
|
|
|
|
6032
|
|
|
|
|
|
|
typedef struct pdl_getclustermedoids_struct { |
6033
|
|
|
|
|
|
|
PDL_TRANS_START(4); |
6034
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_distance_n0;PDL_Indx __inc_distance_n1;PDL_Indx __inc_clusterids_n;PDL_Indx __inc_centroids_k;PDL_Indx __inc_errors_k;PDL_Indx __n_size;PDL_Indx __k_size; |
6035
|
|
|
|
|
|
|
|
6036
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
6037
|
|
|
|
|
|
|
} pdl_getclustermedoids_struct; |
6038
|
|
|
|
|
|
|
|
6039
|
0
|
|
|
|
|
|
void pdl_getclustermedoids_redodims(pdl_trans *__tr ) { |
6040
|
|
|
|
|
|
|
int __dim; |
6041
|
0
|
|
|
|
|
|
pdl_getclustermedoids_struct *__privtrans = (pdl_getclustermedoids_struct *) __tr; |
6042
|
|
|
|
|
|
|
|
6043
|
|
|
|
|
|
|
{ |
6044
|
|
|
|
|
|
|
PDL_Indx __creating[4]; |
6045
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
6046
|
0
|
|
|
|
|
|
__privtrans->__k_size = -1; |
6047
|
0
|
|
|
|
|
|
__creating[0] = 0; |
6048
|
0
|
|
|
|
|
|
__creating[1] = 0; |
6049
|
0
|
0
|
|
|
|
|
__creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]); |
|
|
0
|
|
|
|
|
|
6050
|
0
|
0
|
|
|
|
|
__creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]); |
|
|
0
|
|
|
|
|
|
6051
|
|
|
|
|
|
|
{ |
6052
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
6053
|
|
|
|
|
|
|
|
6054
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
6055
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
6056
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6057
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6058
|
|
|
|
|
|
|
|
6059
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6060
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6061
|
|
|
|
|
|
|
|
6062
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6063
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6064
|
|
|
|
|
|
|
|
6065
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6066
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6067
|
|
|
|
|
|
|
|
6068
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6069
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6070
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6071
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6072
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6073
|
|
|
|
|
|
|
|
6074
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6075
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
6076
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6077
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6078
|
|
|
|
|
|
|
|
6079
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6080
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6081
|
|
|
|
|
|
|
|
6082
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6083
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6084
|
|
|
|
|
|
|
|
6085
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6086
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6087
|
|
|
|
|
|
|
|
6088
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6089
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6090
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6091
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6092
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6093
|
|
|
|
|
|
|
|
6094
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6095
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
6096
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6097
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6098
|
|
|
|
|
|
|
|
6099
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6100
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6101
|
|
|
|
|
|
|
|
6102
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6103
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6104
|
|
|
|
|
|
|
|
6105
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6106
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6107
|
|
|
|
|
|
|
|
6108
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6109
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6110
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6111
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6112
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6113
|
|
|
|
|
|
|
|
6114
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6115
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
6116
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6117
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6118
|
|
|
|
|
|
|
|
6119
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6120
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6121
|
|
|
|
|
|
|
|
6122
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6123
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6124
|
|
|
|
|
|
|
|
6125
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6126
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6127
|
|
|
|
|
|
|
|
6128
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6129
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6130
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6131
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6132
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6133
|
|
|
|
|
|
|
|
6134
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6135
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
6136
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6137
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6138
|
|
|
|
|
|
|
|
6139
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6140
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6141
|
|
|
|
|
|
|
|
6142
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6143
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6144
|
|
|
|
|
|
|
|
6145
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6146
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6147
|
|
|
|
|
|
|
|
6148
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6149
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6150
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6151
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6152
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6153
|
|
|
|
|
|
|
|
6154
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6155
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
6156
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6157
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6158
|
|
|
|
|
|
|
|
6159
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6160
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6161
|
|
|
|
|
|
|
|
6162
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6163
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6164
|
|
|
|
|
|
|
|
6165
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6166
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6167
|
|
|
|
|
|
|
|
6168
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6169
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6170
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6171
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6172
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6173
|
|
|
|
|
|
|
|
6174
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6175
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
6176
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6177
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6178
|
|
|
|
|
|
|
|
6179
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6180
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6181
|
|
|
|
|
|
|
|
6182
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6183
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6184
|
|
|
|
|
|
|
|
6185
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6186
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6187
|
|
|
|
|
|
|
|
6188
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6189
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6190
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6191
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6192
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6193
|
|
|
|
|
|
|
|
6194
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6195
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
6196
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6197
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6198
|
|
|
|
|
|
|
|
6199
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6200
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6201
|
|
|
|
|
|
|
|
6202
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6203
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6204
|
|
|
|
|
|
|
|
6205
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6206
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6207
|
|
|
|
|
|
|
|
6208
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6209
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6210
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6211
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6212
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6213
|
|
|
|
|
|
|
|
6214
|
|
|
|
|
|
|
PDL_COMMENT("none") |
6215
|
0
|
|
|
|
|
|
} break;} |
6216
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
6217
|
|
|
|
|
|
|
} |
6218
|
|
|
|
|
|
|
} |
6219
|
|
|
|
|
|
|
{ |
6220
|
|
|
|
|
|
|
static char *__parnames[] = {"distance","clusterids","centroids","errors"}; |
6221
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,1,1,1}; |
6222
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::getclustermedoids"; |
6223
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
6224
|
|
|
|
|
|
|
__funcname, __parnames, 4 |
6225
|
|
|
|
|
|
|
}; |
6226
|
|
|
|
|
|
|
|
6227
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
6228
|
|
|
|
|
|
|
__realdims,__creating,4, |
6229
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
6230
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
6231
|
|
|
|
|
|
|
0 ); |
6232
|
|
|
|
|
|
|
} |
6233
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
6234
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
6235
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
6236
|
|
|
|
|
|
|
} |
6237
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
6238
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
6239
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
6240
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
6241
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustermedoids:" "Wrong dims\n"); |
6242
|
|
|
|
|
|
|
} |
6243
|
|
|
|
|
|
|
} |
6244
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
6245
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
6246
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
6247
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
6248
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustermedoids:" "Wrong dims\n"); |
6249
|
|
|
|
|
|
|
} |
6250
|
|
|
|
|
|
|
} |
6251
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
6252
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 1) { |
6253
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
6254
|
|
|
|
|
|
|
} |
6255
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
6256
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[0]; |
6257
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
6258
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
6259
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustermedoids:" "Wrong dims\n"); |
6260
|
|
|
|
|
|
|
} |
6261
|
|
|
|
|
|
|
} |
6262
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
6263
|
0
|
0
|
|
|
|
|
if(!__creating[2]) { |
6264
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
6265
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
6266
|
|
|
|
|
|
|
} |
6267
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
6268
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[2]))->dims[0]; |
6269
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
6270
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
6271
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustermedoids:" "Wrong dims\n"); |
6272
|
|
|
|
|
|
|
} |
6273
|
|
|
|
|
|
|
} |
6274
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
6275
|
|
|
|
|
|
|
} else { |
6276
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size; |
6277
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,0); |
6278
|
0
|
0
|
|
|
|
|
}if(!__creating[3]) { |
6279
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
6280
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
6281
|
|
|
|
|
|
|
} |
6282
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
6283
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[3]))->dims[0]; |
6284
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
6285
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
6286
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclustermedoids:" "Wrong dims\n"); |
6287
|
|
|
|
|
|
|
} |
6288
|
|
|
|
|
|
|
} |
6289
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
6290
|
|
|
|
|
|
|
} else { |
6291
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size; |
6292
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0); |
6293
|
|
|
|
|
|
|
} |
6294
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
6295
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
6296
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
6297
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
6298
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
6299
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
6300
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
6301
|
|
|
|
|
|
|
) { |
6302
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
6303
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
6304
|
|
|
|
|
|
|
} |
6305
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
6306
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
6307
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
6308
|
|
|
|
|
|
|
) { |
6309
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
6310
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
6311
|
|
|
|
|
|
|
} |
6312
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
6313
|
0
|
0
|
|
|
|
|
!__creating[2] && |
6314
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
6315
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
6316
|
|
|
|
|
|
|
) { |
6317
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
6318
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
6319
|
|
|
|
|
|
|
} |
6320
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
6321
|
0
|
0
|
|
|
|
|
!__creating[3] && |
6322
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
6323
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
6324
|
|
|
|
|
|
|
) { |
6325
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
6326
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
6327
|
|
|
|
|
|
|
} |
6328
|
0
|
0
|
|
|
|
|
if (hdrp) { |
6329
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
6330
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
6331
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
6332
|
|
|
|
|
|
|
int count; |
6333
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
6334
|
0
|
|
|
|
|
|
dSP; |
6335
|
0
|
|
|
|
|
|
ENTER ; |
6336
|
0
|
|
|
|
|
|
SAVETMPS ; |
6337
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
6338
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
6339
|
0
|
|
|
|
|
|
PUTBACK ; |
6340
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
6341
|
0
|
|
|
|
|
|
SPAGAIN ; |
6342
|
0
|
0
|
|
|
|
|
if(count != 1) |
6343
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
6344
|
|
|
|
|
|
|
|
6345
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
6346
|
|
|
|
|
|
|
|
6347
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
6348
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
6349
|
|
|
|
|
|
|
} |
6350
|
|
|
|
|
|
|
|
6351
|
0
|
0
|
|
|
|
|
FREETMPS ; |
6352
|
0
|
|
|
|
|
|
LEAVE ; |
6353
|
|
|
|
|
|
|
|
6354
|
|
|
|
|
|
|
|
6355
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
6356
|
|
|
|
|
|
|
|
6357
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[2]->hdrsv != hdrp ){ |
6358
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
6359
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv ); |
6360
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
6361
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
6362
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->hdrsv = hdr_copy; |
6363
|
|
|
|
|
|
|
} |
6364
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
6365
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->state |= PDL_HDRCPY; |
6366
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[3]->hdrsv != hdrp ){ |
6367
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
6368
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv ); |
6369
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
6370
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
6371
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->hdrsv = hdr_copy; |
6372
|
|
|
|
|
|
|
} |
6373
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
6374
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->state |= PDL_HDRCPY; |
6375
|
|
|
|
|
|
|
|
6376
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
6377
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
6378
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
6379
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
6380
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
6381
|
0
|
|
|
|
|
|
__privtrans->__inc_distance_n0 = 0; else |
6382
|
0
|
0
|
|
|
|
|
__privtrans->__inc_distance_n0 = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
6383
|
0
|
|
|
|
|
|
__privtrans->__inc_distance_n1 = 0; else |
6384
|
0
|
0
|
|
|
|
|
__privtrans->__inc_distance_n1 = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
6385
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
6386
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clusterids_n = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
6387
|
0
|
|
|
|
|
|
__privtrans->__inc_centroids_k = 0; else |
6388
|
0
|
0
|
|
|
|
|
__privtrans->__inc_centroids_k = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
6389
|
0
|
|
|
|
|
|
__privtrans->__inc_errors_k = 0; else |
6390
|
0
|
|
|
|
|
|
__privtrans->__inc_errors_k = __privtrans->pdls[3]->dimincs[0]; __privtrans->__ddone = 1; |
6391
|
|
|
|
|
|
|
} |
6392
|
0
|
|
|
|
|
|
} |
6393
|
|
|
|
|
|
|
|
6394
|
|
|
|
|
|
|
|
6395
|
0
|
|
|
|
|
|
pdl_trans * pdl_getclustermedoids_copy(pdl_trans *__tr ) { |
6396
|
|
|
|
|
|
|
int __dim; |
6397
|
0
|
|
|
|
|
|
pdl_getclustermedoids_struct *__privtrans = (pdl_getclustermedoids_struct *) __tr; |
6398
|
|
|
|
|
|
|
|
6399
|
|
|
|
|
|
|
{ |
6400
|
0
|
|
|
|
|
|
pdl_getclustermedoids_struct *__copy = malloc(sizeof(pdl_getclustermedoids_struct)); |
6401
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
6402
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
6403
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
6404
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
6405
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
6406
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
6407
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
6408
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
6409
|
|
|
|
|
|
|
{int i; |
6410
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
6411
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
6412
|
|
|
|
|
|
|
} |
6413
|
|
|
|
|
|
|
|
6414
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
6415
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_distance_n0=__copy->__inc_distance_n0;__privtrans->__inc_distance_n1=__copy->__inc_distance_n1;__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__privtrans->__inc_centroids_k=__copy->__inc_centroids_k;__privtrans->__inc_errors_k=__copy->__inc_errors_k;__copy->__n_size=__privtrans->__n_size;__copy->__k_size=__privtrans->__k_size; |
6416
|
|
|
|
|
|
|
} |
6417
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
6418
|
|
|
|
|
|
|
} |
6419
|
|
|
|
|
|
|
} |
6420
|
|
|
|
|
|
|
|
6421
|
|
|
|
|
|
|
|
6422
|
0
|
|
|
|
|
|
void pdl_getclustermedoids_readdata(pdl_trans *__tr ) { |
6423
|
|
|
|
|
|
|
int __dim; |
6424
|
0
|
|
|
|
|
|
pdl_getclustermedoids_struct *__privtrans = (pdl_getclustermedoids_struct *) __tr; |
6425
|
|
|
|
|
|
|
|
6426
|
|
|
|
|
|
|
{ |
6427
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
6428
|
|
|
|
|
|
|
|
6429
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
6430
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
6431
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6432
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6433
|
|
|
|
|
|
|
|
6434
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6435
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6436
|
|
|
|
|
|
|
|
6437
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6438
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6439
|
|
|
|
|
|
|
|
6440
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6441
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6442
|
|
|
|
|
|
|
|
6443
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6444
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6445
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6446
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6447
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6448
|
|
|
|
|
|
|
|
6449
|
|
|
|
|
|
|
|
6450
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6451
|
|
|
|
|
|
|
|
6452
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6453
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6454
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6455
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6456
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6457
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6458
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6459
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6460
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6461
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6462
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6463
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6464
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6465
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6466
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6467
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6468
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6469
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6470
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6471
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6472
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6473
|
0
|
|
|
|
|
|
__tind2++ |
6474
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6475
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6476
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6477
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6478
|
|
|
|
|
|
|
) |
6479
|
|
|
|
|
|
|
{ |
6480
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6481
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6482
|
0
|
|
|
|
|
|
__tind1++ |
6483
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6484
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6485
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6486
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6487
|
|
|
|
|
|
|
) |
6488
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6489
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6490
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6491
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6492
|
|
|
|
|
|
|
|
6493
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6494
|
|
|
|
|
|
|
} |
6495
|
|
|
|
|
|
|
} |
6496
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6497
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6498
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6499
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6500
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6501
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6502
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6503
|
|
|
|
|
|
|
|
6504
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
6505
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6506
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6507
|
|
|
|
|
|
|
|
6508
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6509
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6510
|
|
|
|
|
|
|
|
6511
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6512
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6513
|
|
|
|
|
|
|
|
6514
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6515
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6516
|
|
|
|
|
|
|
|
6517
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6518
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6519
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6520
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6521
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6522
|
|
|
|
|
|
|
|
6523
|
|
|
|
|
|
|
|
6524
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6525
|
|
|
|
|
|
|
|
6526
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6527
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6528
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6529
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6530
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6531
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6532
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6533
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6534
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6535
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6536
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6537
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6538
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6539
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6540
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6541
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6542
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6543
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6544
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6545
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6546
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6547
|
0
|
|
|
|
|
|
__tind2++ |
6548
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6549
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6550
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6551
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6552
|
|
|
|
|
|
|
) |
6553
|
|
|
|
|
|
|
{ |
6554
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6555
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6556
|
0
|
|
|
|
|
|
__tind1++ |
6557
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6558
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6559
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6560
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6561
|
|
|
|
|
|
|
) |
6562
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6563
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6564
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6565
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6566
|
|
|
|
|
|
|
|
6567
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6568
|
|
|
|
|
|
|
} |
6569
|
|
|
|
|
|
|
} |
6570
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6571
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6572
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6573
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6574
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6575
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6576
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6577
|
|
|
|
|
|
|
|
6578
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
6579
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6580
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6581
|
|
|
|
|
|
|
|
6582
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6583
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6584
|
|
|
|
|
|
|
|
6585
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6586
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6587
|
|
|
|
|
|
|
|
6588
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6589
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6590
|
|
|
|
|
|
|
|
6591
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6592
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6593
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6594
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6595
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6596
|
|
|
|
|
|
|
|
6597
|
|
|
|
|
|
|
|
6598
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6599
|
|
|
|
|
|
|
|
6600
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6601
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6602
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6603
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6604
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6605
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6606
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6607
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6608
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6609
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6610
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6611
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6612
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6613
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6614
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6615
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6616
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6617
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6618
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6619
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6620
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6621
|
0
|
|
|
|
|
|
__tind2++ |
6622
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6623
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6624
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6625
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6626
|
|
|
|
|
|
|
) |
6627
|
|
|
|
|
|
|
{ |
6628
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6629
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6630
|
0
|
|
|
|
|
|
__tind1++ |
6631
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6632
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6633
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6634
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6635
|
|
|
|
|
|
|
) |
6636
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6637
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6638
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6639
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6640
|
|
|
|
|
|
|
|
6641
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6642
|
|
|
|
|
|
|
} |
6643
|
|
|
|
|
|
|
} |
6644
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6645
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6646
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6647
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6648
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6649
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6650
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6651
|
|
|
|
|
|
|
|
6652
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
6653
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6654
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6655
|
|
|
|
|
|
|
|
6656
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6657
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6658
|
|
|
|
|
|
|
|
6659
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6660
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6661
|
|
|
|
|
|
|
|
6662
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6663
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6664
|
|
|
|
|
|
|
|
6665
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6666
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6667
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6668
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6669
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6670
|
|
|
|
|
|
|
|
6671
|
|
|
|
|
|
|
|
6672
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6673
|
|
|
|
|
|
|
|
6674
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6675
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6676
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6677
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6678
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6679
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6680
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6681
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6682
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6683
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6684
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6685
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6686
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6687
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6688
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6689
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6690
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6691
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6692
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6693
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6694
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6695
|
0
|
|
|
|
|
|
__tind2++ |
6696
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6697
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6698
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6699
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6700
|
|
|
|
|
|
|
) |
6701
|
|
|
|
|
|
|
{ |
6702
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6703
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6704
|
0
|
|
|
|
|
|
__tind1++ |
6705
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6706
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6707
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6708
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6709
|
|
|
|
|
|
|
) |
6710
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6711
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6712
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6713
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6714
|
|
|
|
|
|
|
|
6715
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6716
|
|
|
|
|
|
|
} |
6717
|
|
|
|
|
|
|
} |
6718
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6719
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6720
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6721
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6722
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6723
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6724
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6725
|
|
|
|
|
|
|
|
6726
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
6727
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6728
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6729
|
|
|
|
|
|
|
|
6730
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6731
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6732
|
|
|
|
|
|
|
|
6733
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6734
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6735
|
|
|
|
|
|
|
|
6736
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6737
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6738
|
|
|
|
|
|
|
|
6739
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6740
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6741
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6742
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6743
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6744
|
|
|
|
|
|
|
|
6745
|
|
|
|
|
|
|
|
6746
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6747
|
|
|
|
|
|
|
|
6748
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6749
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6750
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6751
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6752
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6753
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6754
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6755
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6756
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6757
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6758
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6759
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6760
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6761
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6762
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6763
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6764
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6765
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6766
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6767
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6768
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6769
|
0
|
|
|
|
|
|
__tind2++ |
6770
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6771
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6772
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6773
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6774
|
|
|
|
|
|
|
) |
6775
|
|
|
|
|
|
|
{ |
6776
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6777
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6778
|
0
|
|
|
|
|
|
__tind1++ |
6779
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6780
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6781
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6782
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6783
|
|
|
|
|
|
|
) |
6784
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6785
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6786
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6787
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6788
|
|
|
|
|
|
|
|
6789
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6790
|
|
|
|
|
|
|
} |
6791
|
|
|
|
|
|
|
} |
6792
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6793
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6794
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6795
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6796
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6797
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6798
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6799
|
|
|
|
|
|
|
|
6800
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
6801
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6802
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6803
|
|
|
|
|
|
|
|
6804
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6805
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6806
|
|
|
|
|
|
|
|
6807
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6808
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6809
|
|
|
|
|
|
|
|
6810
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6811
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6812
|
|
|
|
|
|
|
|
6813
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6814
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6815
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6816
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6817
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6818
|
|
|
|
|
|
|
|
6819
|
|
|
|
|
|
|
|
6820
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6821
|
|
|
|
|
|
|
|
6822
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6823
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6824
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6825
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6826
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6827
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6828
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6829
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6830
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6831
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6832
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6833
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6834
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6835
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6836
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6837
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6838
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6839
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6840
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6841
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6842
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6843
|
0
|
|
|
|
|
|
__tind2++ |
6844
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6845
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6846
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6847
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6848
|
|
|
|
|
|
|
) |
6849
|
|
|
|
|
|
|
{ |
6850
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6851
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6852
|
0
|
|
|
|
|
|
__tind1++ |
6853
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6854
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6855
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6856
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6857
|
|
|
|
|
|
|
) |
6858
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6859
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6860
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6861
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6862
|
|
|
|
|
|
|
|
6863
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6864
|
|
|
|
|
|
|
} |
6865
|
|
|
|
|
|
|
} |
6866
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6867
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6868
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6869
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6870
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6871
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6872
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6873
|
|
|
|
|
|
|
|
6874
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
6875
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6876
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6877
|
|
|
|
|
|
|
|
6878
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6879
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6880
|
|
|
|
|
|
|
|
6881
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6882
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6883
|
|
|
|
|
|
|
|
6884
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6885
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6886
|
|
|
|
|
|
|
|
6887
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6888
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6889
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6890
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6891
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6892
|
|
|
|
|
|
|
|
6893
|
|
|
|
|
|
|
|
6894
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6895
|
|
|
|
|
|
|
|
6896
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6897
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6898
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6899
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6900
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6901
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6902
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6903
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6904
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6905
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6906
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6907
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6908
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6909
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6910
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6911
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6912
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6913
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6914
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6915
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6916
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6917
|
0
|
|
|
|
|
|
__tind2++ |
6918
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6919
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6920
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6921
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6922
|
|
|
|
|
|
|
) |
6923
|
|
|
|
|
|
|
{ |
6924
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6925
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
6926
|
0
|
|
|
|
|
|
__tind1++ |
6927
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
6928
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
6929
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
6930
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
6931
|
|
|
|
|
|
|
) |
6932
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
6933
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
6934
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
6935
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
6936
|
|
|
|
|
|
|
|
6937
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
6938
|
|
|
|
|
|
|
} |
6939
|
|
|
|
|
|
|
} |
6940
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
6941
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
6942
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
6943
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
6944
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
6945
|
|
|
|
|
|
|
/*-- cleanup --*/ |
6946
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
6947
|
|
|
|
|
|
|
|
6948
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
6949
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
6950
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
6951
|
|
|
|
|
|
|
|
6952
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
6953
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
6954
|
|
|
|
|
|
|
|
6955
|
0
|
0
|
|
|
|
|
PDL_Long * centroids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
6956
|
0
|
|
|
|
|
|
PDL_Long * centroids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
6957
|
|
|
|
|
|
|
|
6958
|
0
|
0
|
|
|
|
|
PDL_Double * errors_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
6959
|
0
|
|
|
|
|
|
PDL_Double * errors_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
6960
|
|
|
|
|
|
|
|
6961
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_errors_k = __privtrans->__inc_errors_k; |
6962
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
6963
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
6964
|
0
|
|
|
|
|
|
register PDL_Indx __inc_centroids_k = __privtrans->__inc_centroids_k; |
6965
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
6966
|
|
|
|
|
|
|
|
6967
|
|
|
|
|
|
|
|
6968
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
6969
|
|
|
|
|
|
|
|
6970
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
6971
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
6972
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
6973
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
6974
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
6975
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
6976
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
6977
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
6978
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
6979
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
6980
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
6981
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
6982
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
6983
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
6984
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
6985
|
0
|
|
|
|
|
|
distance_datap += __offsp[0]; |
6986
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[1]; |
6987
|
0
|
|
|
|
|
|
centroids_datap += __offsp[2]; |
6988
|
0
|
|
|
|
|
|
errors_datap += __offsp[3]; |
6989
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
6990
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
6991
|
0
|
|
|
|
|
|
__tind2++ |
6992
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
6993
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
6994
|
0
|
|
|
|
|
|
,centroids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
6995
|
0
|
|
|
|
|
|
,errors_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
6996
|
|
|
|
|
|
|
) |
6997
|
|
|
|
|
|
|
{ |
6998
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
6999
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
7000
|
0
|
|
|
|
|
|
__tind1++ |
7001
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_0 |
7002
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_1 |
7003
|
0
|
|
|
|
|
|
,centroids_datap += __tinc0_2 |
7004
|
0
|
|
|
|
|
|
,errors_datap += __tinc0_3 |
7005
|
|
|
|
|
|
|
) |
7006
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
7007
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
7008
|
0
|
|
|
|
|
|
getclustermedoids(__privtrans->__k_size, __privtrans->__n_size, distpp, |
7009
|
|
|
|
|
|
|
clusterids_datap, centroids_datap, errors_datap); |
7010
|
|
|
|
|
|
|
|
7011
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
7012
|
|
|
|
|
|
|
} |
7013
|
|
|
|
|
|
|
} |
7014
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
7015
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
7016
|
0
|
|
|
|
|
|
centroids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
7017
|
0
|
|
|
|
|
|
errors_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
7018
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
7019
|
|
|
|
|
|
|
/*-- cleanup --*/ |
7020
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
7021
|
|
|
|
|
|
|
|
7022
|
0
|
|
|
|
|
|
} break;} |
7023
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
7024
|
|
|
|
|
|
|
} |
7025
|
|
|
|
|
|
|
} |
7026
|
|
|
|
|
|
|
} |
7027
|
|
|
|
|
|
|
|
7028
|
|
|
|
|
|
|
|
7029
|
|
|
|
|
|
|
|
7030
|
|
|
|
|
|
|
|
7031
|
0
|
|
|
|
|
|
void pdl_getclustermedoids_free(pdl_trans *__tr ) { |
7032
|
|
|
|
|
|
|
int __dim; |
7033
|
0
|
|
|
|
|
|
pdl_getclustermedoids_struct *__privtrans = (pdl_getclustermedoids_struct *) __tr; |
7034
|
|
|
|
|
|
|
|
7035
|
|
|
|
|
|
|
{ |
7036
|
|
|
|
|
|
|
|
7037
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
7038
|
|
|
|
|
|
|
|
7039
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
7040
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
7041
|
|
|
|
|
|
|
;;;;;;;; |
7042
|
|
|
|
|
|
|
} |
7043
|
|
|
|
|
|
|
|
7044
|
|
|
|
|
|
|
} |
7045
|
0
|
|
|
|
|
|
} |
7046
|
|
|
|
|
|
|
|
7047
|
|
|
|
|
|
|
|
7048
|
|
|
|
|
|
|
|
7049
|
|
|
|
|
|
|
|
7050
|
|
|
|
|
|
|
static char pdl_getclustermedoids_vtable_flags[] = |
7051
|
|
|
|
|
|
|
{ 0,0,0,0}; |
7052
|
|
|
|
|
|
|
pdl_transvtable pdl_getclustermedoids_vtable = { |
7053
|
|
|
|
|
|
|
0,0, 2, 4, pdl_getclustermedoids_vtable_flags, |
7054
|
|
|
|
|
|
|
pdl_getclustermedoids_redodims, pdl_getclustermedoids_readdata, NULL, |
7055
|
|
|
|
|
|
|
pdl_getclustermedoids_free,NULL,NULL,pdl_getclustermedoids_copy, |
7056
|
|
|
|
|
|
|
sizeof(pdl_getclustermedoids_struct),"pdl_getclustermedoids_vtable" |
7057
|
|
|
|
|
|
|
}; |
7058
|
|
|
|
|
|
|
|
7059
|
|
|
|
|
|
|
typedef struct pdl_kcluster_struct { |
7060
|
|
|
|
|
|
|
PDL_TRANS_START(8); |
7061
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_clusterids_n;PDL_Indx __n_size;PDL_Indx __d_size; |
7062
|
|
|
|
|
|
|
char *distFlag;char *ctrMethodFlag; |
7063
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
7064
|
|
|
|
|
|
|
} pdl_kcluster_struct; |
7065
|
|
|
|
|
|
|
|
7066
|
3
|
|
|
|
|
|
void pdl_kcluster_redodims(pdl_trans *__tr ) { |
7067
|
|
|
|
|
|
|
int __dim; |
7068
|
3
|
|
|
|
|
|
pdl_kcluster_struct *__privtrans = (pdl_kcluster_struct *) __tr; |
7069
|
|
|
|
|
|
|
|
7070
|
|
|
|
|
|
|
{ |
7071
|
|
|
|
|
|
|
PDL_Indx __creating[8]; |
7072
|
3
|
|
|
|
|
|
__privtrans->__n_size = -1; |
7073
|
3
|
|
|
|
|
|
__privtrans->__d_size = -1; |
7074
|
3
|
|
|
|
|
|
__creating[0] = 0; |
7075
|
3
|
|
|
|
|
|
__creating[1] = 0; |
7076
|
3
|
|
|
|
|
|
__creating[2] = 0; |
7077
|
3
|
|
|
|
|
|
__creating[3] = 0; |
7078
|
3
|
|
|
|
|
|
__creating[4] = 0; |
7079
|
3
|
50
|
|
|
|
|
__creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]); |
|
|
100
|
|
|
|
|
|
7080
|
3
|
50
|
|
|
|
|
__creating[6] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[6]); |
|
|
50
|
|
|
|
|
|
7081
|
3
|
50
|
|
|
|
|
__creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]); |
|
|
50
|
|
|
|
|
|
7082
|
|
|
|
|
|
|
{ |
7083
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
7084
|
|
|
|
|
|
|
|
7085
|
3
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
7086
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
7087
|
3
|
50
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7088
|
3
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7089
|
|
|
|
|
|
|
|
7090
|
3
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7091
|
3
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7092
|
|
|
|
|
|
|
|
7093
|
3
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7094
|
3
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7095
|
|
|
|
|
|
|
|
7096
|
3
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7097
|
3
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7098
|
|
|
|
|
|
|
|
7099
|
3
|
50
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7100
|
3
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7101
|
|
|
|
|
|
|
|
7102
|
3
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7103
|
3
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7104
|
|
|
|
|
|
|
|
7105
|
3
|
50
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7106
|
3
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7107
|
|
|
|
|
|
|
|
7108
|
3
|
50
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7109
|
3
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7110
|
|
|
|
|
|
|
|
7111
|
3
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7112
|
3
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7113
|
3
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7114
|
3
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7115
|
3
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7116
|
3
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7117
|
|
|
|
|
|
|
|
7118
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7119
|
3
|
|
|
|
|
|
} } break; case PDL_S: { |
7120
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7121
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7122
|
|
|
|
|
|
|
|
7123
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7124
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7125
|
|
|
|
|
|
|
|
7126
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7127
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7128
|
|
|
|
|
|
|
|
7129
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7130
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7131
|
|
|
|
|
|
|
|
7132
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7133
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7134
|
|
|
|
|
|
|
|
7135
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7136
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7137
|
|
|
|
|
|
|
|
7138
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7139
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7140
|
|
|
|
|
|
|
|
7141
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7142
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7143
|
|
|
|
|
|
|
|
7144
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7145
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7146
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7147
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7148
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7149
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7150
|
|
|
|
|
|
|
|
7151
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7152
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
7153
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7154
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7155
|
|
|
|
|
|
|
|
7156
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7157
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7158
|
|
|
|
|
|
|
|
7159
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7160
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7161
|
|
|
|
|
|
|
|
7162
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7163
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7164
|
|
|
|
|
|
|
|
7165
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7166
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7167
|
|
|
|
|
|
|
|
7168
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7169
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7170
|
|
|
|
|
|
|
|
7171
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7172
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7173
|
|
|
|
|
|
|
|
7174
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7175
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7176
|
|
|
|
|
|
|
|
7177
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7178
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7179
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7180
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7181
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7182
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7183
|
|
|
|
|
|
|
|
7184
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7185
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
7186
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7187
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7188
|
|
|
|
|
|
|
|
7189
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7190
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7191
|
|
|
|
|
|
|
|
7192
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7193
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7194
|
|
|
|
|
|
|
|
7195
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7196
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7197
|
|
|
|
|
|
|
|
7198
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7199
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7200
|
|
|
|
|
|
|
|
7201
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7202
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7203
|
|
|
|
|
|
|
|
7204
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7205
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7206
|
|
|
|
|
|
|
|
7207
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7208
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7209
|
|
|
|
|
|
|
|
7210
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7211
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7212
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7213
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7214
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7215
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7216
|
|
|
|
|
|
|
|
7217
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7218
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
7219
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7220
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7221
|
|
|
|
|
|
|
|
7222
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7223
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7224
|
|
|
|
|
|
|
|
7225
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7226
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7227
|
|
|
|
|
|
|
|
7228
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7229
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7230
|
|
|
|
|
|
|
|
7231
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7232
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7233
|
|
|
|
|
|
|
|
7234
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7235
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7236
|
|
|
|
|
|
|
|
7237
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7238
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7239
|
|
|
|
|
|
|
|
7240
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7241
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7242
|
|
|
|
|
|
|
|
7243
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7244
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7245
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7246
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7247
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7248
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7249
|
|
|
|
|
|
|
|
7250
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7251
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
7252
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7253
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7254
|
|
|
|
|
|
|
|
7255
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7256
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7257
|
|
|
|
|
|
|
|
7258
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7259
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7260
|
|
|
|
|
|
|
|
7261
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7262
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7263
|
|
|
|
|
|
|
|
7264
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7265
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7266
|
|
|
|
|
|
|
|
7267
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7268
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7269
|
|
|
|
|
|
|
|
7270
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7271
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7272
|
|
|
|
|
|
|
|
7273
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7274
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7275
|
|
|
|
|
|
|
|
7276
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7277
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7278
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7279
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7280
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7281
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7282
|
|
|
|
|
|
|
|
7283
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7284
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
7285
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7286
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7287
|
|
|
|
|
|
|
|
7288
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7289
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7290
|
|
|
|
|
|
|
|
7291
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7292
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7293
|
|
|
|
|
|
|
|
7294
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7295
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7296
|
|
|
|
|
|
|
|
7297
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7298
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7299
|
|
|
|
|
|
|
|
7300
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7301
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7302
|
|
|
|
|
|
|
|
7303
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7304
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7305
|
|
|
|
|
|
|
|
7306
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7307
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7308
|
|
|
|
|
|
|
|
7309
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7310
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7311
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7312
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7313
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7314
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7315
|
|
|
|
|
|
|
|
7316
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7317
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
7318
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7319
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7320
|
|
|
|
|
|
|
|
7321
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7322
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7323
|
|
|
|
|
|
|
|
7324
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7325
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7326
|
|
|
|
|
|
|
|
7327
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7328
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7329
|
|
|
|
|
|
|
|
7330
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7331
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7332
|
|
|
|
|
|
|
|
7333
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7334
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7335
|
|
|
|
|
|
|
|
7336
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7337
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7338
|
|
|
|
|
|
|
|
7339
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7340
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7341
|
|
|
|
|
|
|
|
7342
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7344
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7345
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7346
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7347
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7348
|
|
|
|
|
|
|
|
7349
|
|
|
|
|
|
|
PDL_COMMENT("none") |
7350
|
0
|
|
|
|
|
|
} break;} |
7351
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
7352
|
|
|
|
|
|
|
} |
7353
|
|
|
|
|
|
|
} |
7354
|
|
|
|
|
|
|
{ |
7355
|
|
|
|
|
|
|
static char *__parnames[] = {"nclusters","data","mask","weight","npass","clusterids","error","nfound"}; |
7356
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {0,2,2,1,0,1,0,0}; |
7357
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::kcluster"; |
7358
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
7359
|
|
|
|
|
|
|
__funcname, __parnames, 8 |
7360
|
|
|
|
|
|
|
}; |
7361
|
|
|
|
|
|
|
|
7362
|
3
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
7363
|
|
|
|
|
|
|
__realdims,__creating,8, |
7364
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
7365
|
3
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
7366
|
|
|
|
|
|
|
0 ); |
7367
|
|
|
|
|
|
|
} |
7368
|
3
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
7369
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
7370
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
7371
|
|
|
|
|
|
|
} |
7372
|
3
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
7373
|
3
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
7374
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
7375
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
7376
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kcluster:" "Wrong dims\n"); |
7377
|
|
|
|
|
|
|
} |
7378
|
|
|
|
|
|
|
} |
7379
|
3
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
7380
|
3
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
7381
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
7382
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
7383
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kcluster:" "Wrong dims\n"); |
7384
|
|
|
|
|
|
|
} |
7385
|
|
|
|
|
|
|
} |
7386
|
3
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
7387
|
3
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 2) { |
7388
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
7389
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
7390
|
|
|
|
|
|
|
} |
7391
|
3
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
7392
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
7393
|
3
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
7394
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
7395
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kcluster:" "Wrong dims\n"); |
7396
|
|
|
|
|
|
|
} |
7397
|
|
|
|
|
|
|
} |
7398
|
3
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
7399
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[2]))->dims[1]; |
7400
|
3
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
7401
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[1] != 1) { |
7402
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kcluster:" "Wrong dims\n"); |
7403
|
|
|
|
|
|
|
} |
7404
|
|
|
|
|
|
|
} |
7405
|
3
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
7406
|
3
|
50
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
7407
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
7408
|
|
|
|
|
|
|
} |
7409
|
3
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
7410
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[3]))->dims[0]; |
7411
|
3
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
7412
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
7413
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kcluster:" "Wrong dims\n"); |
7414
|
|
|
|
|
|
|
} |
7415
|
|
|
|
|
|
|
} |
7416
|
3
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
7417
|
3
|
100
|
|
|
|
|
if(!__creating[5]) { |
7418
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
7419
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
7420
|
|
|
|
|
|
|
} |
7421
|
1
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
7422
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[5]))->dims[0]; |
7423
|
1
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
7424
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
7425
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kcluster:" "Wrong dims\n"); |
7426
|
|
|
|
|
|
|
} |
7427
|
|
|
|
|
|
|
} |
7428
|
1
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[5]))); |
7429
|
|
|
|
|
|
|
} else { |
7430
|
2
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
7431
|
2
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0); |
7432
|
3
|
50
|
|
|
|
|
}if(!__creating[6]) { |
7433
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[6]))); |
7434
|
|
|
|
|
|
|
} else { |
7435
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
7436
|
3
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,6,dims,0); |
7437
|
3
|
50
|
|
|
|
|
}if(!__creating[7]) { |
7438
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[7]))); |
7439
|
|
|
|
|
|
|
} else { |
7440
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
7441
|
3
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0); |
7442
|
|
|
|
|
|
|
} |
7443
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
7444
|
3
|
|
|
|
|
|
void *hdrp = NULL; |
7445
|
3
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
7446
|
3
|
|
|
|
|
|
SV *hdr_copy = NULL; |
7447
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7448
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
7449
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
7450
|
|
|
|
|
|
|
) { |
7451
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
7452
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
7453
|
|
|
|
|
|
|
} |
7454
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7455
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
7456
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
7457
|
|
|
|
|
|
|
) { |
7458
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
7459
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
7460
|
|
|
|
|
|
|
} |
7461
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7462
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
7463
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
7464
|
|
|
|
|
|
|
) { |
7465
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
7466
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
7467
|
|
|
|
|
|
|
} |
7468
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7469
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
7470
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
7471
|
|
|
|
|
|
|
) { |
7472
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
7473
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
7474
|
|
|
|
|
|
|
} |
7475
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7476
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
7477
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
7478
|
|
|
|
|
|
|
) { |
7479
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
7480
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
7481
|
|
|
|
|
|
|
} |
7482
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
100
|
|
|
|
|
|
7483
|
1
|
50
|
|
|
|
|
!__creating[5] && |
7484
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
7485
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
7486
|
|
|
|
|
|
|
) { |
7487
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
7488
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
7489
|
|
|
|
|
|
|
} |
7490
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7491
|
0
|
0
|
|
|
|
|
!__creating[6] && |
7492
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
7493
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
7494
|
|
|
|
|
|
|
) { |
7495
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
7496
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
7497
|
|
|
|
|
|
|
} |
7498
|
3
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
7499
|
0
|
0
|
|
|
|
|
!__creating[7] && |
7500
|
0
|
0
|
|
|
|
|
__privtrans->pdls[7]->hdrsv && |
7501
|
0
|
|
|
|
|
|
(__privtrans->pdls[7]->state & PDL_HDRCPY) |
7502
|
|
|
|
|
|
|
) { |
7503
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[7]->hdrsv; |
7504
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0); |
7505
|
|
|
|
|
|
|
} |
7506
|
3
|
50
|
|
|
|
|
if (hdrp) { |
7507
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
7508
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
7509
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
7510
|
|
|
|
|
|
|
int count; |
7511
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
7512
|
0
|
|
|
|
|
|
dSP; |
7513
|
0
|
|
|
|
|
|
ENTER ; |
7514
|
0
|
|
|
|
|
|
SAVETMPS ; |
7515
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
7516
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
7517
|
0
|
|
|
|
|
|
PUTBACK ; |
7518
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
7519
|
0
|
|
|
|
|
|
SPAGAIN ; |
7520
|
0
|
0
|
|
|
|
|
if(count != 1) |
7521
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
7522
|
|
|
|
|
|
|
|
7523
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
7524
|
|
|
|
|
|
|
|
7525
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
7526
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
7527
|
|
|
|
|
|
|
} |
7528
|
|
|
|
|
|
|
|
7529
|
0
|
0
|
|
|
|
|
FREETMPS ; |
7530
|
0
|
|
|
|
|
|
LEAVE ; |
7531
|
|
|
|
|
|
|
|
7532
|
|
|
|
|
|
|
|
7533
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
7534
|
|
|
|
|
|
|
|
7535
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[5]->hdrsv != hdrp ){ |
7536
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
7537
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv ); |
7538
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
7539
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
7540
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->hdrsv = hdr_copy; |
7541
|
|
|
|
|
|
|
} |
7542
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
7543
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->state |= PDL_HDRCPY; |
7544
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[6]->hdrsv != hdrp ){ |
7545
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[6]->hdrsv && __privtrans->pdls[6]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
7546
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[6]->hdrsv ); |
7547
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
7548
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
7549
|
0
|
|
|
|
|
|
__privtrans->pdls[6]->hdrsv = hdr_copy; |
7550
|
|
|
|
|
|
|
} |
7551
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
7552
|
0
|
|
|
|
|
|
__privtrans->pdls[6]->state |= PDL_HDRCPY; |
7553
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[7]->hdrsv != hdrp ){ |
7554
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
7555
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv ); |
7556
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
7557
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
7558
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->hdrsv = hdr_copy; |
7559
|
|
|
|
|
|
|
} |
7560
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
7561
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->state |= PDL_HDRCPY; |
7562
|
|
|
|
|
|
|
|
7563
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
7564
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
7565
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
7566
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
7567
|
3
|
50
|
|
|
|
|
if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
7568
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
7569
|
3
|
50
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
7570
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
7571
|
3
|
50
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
7572
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
7573
|
3
|
50
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
7574
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
7575
|
3
|
50
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[2]->dimincs[1];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
7576
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
7577
|
3
|
50
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[3]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
7578
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
7579
|
3
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = __privtrans->pdls[5]->dimincs[0]; __privtrans->__ddone = 1; |
7580
|
|
|
|
|
|
|
} |
7581
|
3
|
|
|
|
|
|
} |
7582
|
|
|
|
|
|
|
|
7583
|
|
|
|
|
|
|
|
7584
|
0
|
|
|
|
|
|
pdl_trans * pdl_kcluster_copy(pdl_trans *__tr ) { |
7585
|
|
|
|
|
|
|
int __dim; |
7586
|
0
|
|
|
|
|
|
pdl_kcluster_struct *__privtrans = (pdl_kcluster_struct *) __tr; |
7587
|
|
|
|
|
|
|
|
7588
|
|
|
|
|
|
|
{ |
7589
|
0
|
|
|
|
|
|
pdl_kcluster_struct *__copy = malloc(sizeof(pdl_kcluster_struct)); |
7590
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
7591
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
7592
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
7593
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
7594
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
7595
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
7596
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
7597
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
7598
|
|
|
|
|
|
|
{int i; |
7599
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
7600
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
7601
|
|
|
|
|
|
|
} |
7602
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->ctrMethodFlag) = malloc(strlen(__privtrans->ctrMethodFlag)+1); strcpy(__copy->ctrMethodFlag,__privtrans->ctrMethodFlag);; |
7603
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
7604
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__copy->__n_size=__privtrans->__n_size;__copy->__d_size=__privtrans->__d_size; |
7605
|
|
|
|
|
|
|
} |
7606
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
7607
|
|
|
|
|
|
|
} |
7608
|
|
|
|
|
|
|
} |
7609
|
|
|
|
|
|
|
|
7610
|
|
|
|
|
|
|
|
7611
|
3
|
|
|
|
|
|
void pdl_kcluster_readdata(pdl_trans *__tr ) { |
7612
|
|
|
|
|
|
|
int __dim; |
7613
|
3
|
|
|
|
|
|
pdl_kcluster_struct *__privtrans = (pdl_kcluster_struct *) __tr; |
7614
|
|
|
|
|
|
|
|
7615
|
|
|
|
|
|
|
{ |
7616
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
7617
|
|
|
|
|
|
|
|
7618
|
3
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
7619
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
7620
|
3
|
50
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7621
|
3
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7622
|
|
|
|
|
|
|
|
7623
|
3
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7624
|
3
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7625
|
|
|
|
|
|
|
|
7626
|
3
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7627
|
3
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7628
|
|
|
|
|
|
|
|
7629
|
3
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7630
|
3
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7631
|
|
|
|
|
|
|
|
7632
|
3
|
50
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7633
|
3
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7634
|
|
|
|
|
|
|
|
7635
|
3
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7636
|
3
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7637
|
|
|
|
|
|
|
|
7638
|
3
|
50
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7639
|
3
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7640
|
|
|
|
|
|
|
|
7641
|
3
|
50
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7642
|
3
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7643
|
|
|
|
|
|
|
|
7644
|
3
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7645
|
3
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7646
|
3
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7647
|
3
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7648
|
3
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7649
|
3
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7650
|
|
|
|
|
|
|
|
7651
|
|
|
|
|
|
|
|
7652
|
3
|
|
|
|
|
|
int transpose = 0; |
7653
|
3
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
7654
|
3
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
7655
|
|
|
|
|
|
|
|
7656
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
7657
|
3
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
7658
|
3
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
7659
|
3
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
7660
|
3
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
7661
|
3
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
7662
|
3
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
7663
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
7664
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
7665
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
7666
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
7667
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
7668
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
7669
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
7670
|
3
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
7671
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
7672
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
7673
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
7674
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
7675
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
7676
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
7677
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
7678
|
3
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
7679
|
3
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
7680
|
3
|
|
|
|
|
|
data_datap += __offsp[1]; |
7681
|
3
|
|
|
|
|
|
mask_datap += __offsp[2]; |
7682
|
3
|
|
|
|
|
|
weight_datap += __offsp[3]; |
7683
|
3
|
|
|
|
|
|
npass_datap += __offsp[4]; |
7684
|
3
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
7685
|
3
|
|
|
|
|
|
error_datap += __offsp[6]; |
7686
|
3
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
7687
|
6
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
7688
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
7689
|
3
|
|
|
|
|
|
__tind2++ |
7690
|
3
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
7691
|
3
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
7692
|
3
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
7693
|
3
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
7694
|
3
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
7695
|
3
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
7696
|
3
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
7697
|
3
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
7698
|
|
|
|
|
|
|
) |
7699
|
|
|
|
|
|
|
{ |
7700
|
6
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
7701
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
7702
|
3
|
|
|
|
|
|
__tind1++ |
7703
|
3
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
7704
|
3
|
|
|
|
|
|
,data_datap += __tinc0_1 |
7705
|
3
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
7706
|
3
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
7707
|
3
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
7708
|
3
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
7709
|
3
|
|
|
|
|
|
,error_datap += __tinc0_6 |
7710
|
3
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
7711
|
|
|
|
|
|
|
) |
7712
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
7713
|
3
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
7714
|
3
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
7715
|
3
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
7716
|
6
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
7717
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
7718
|
|
|
|
|
|
|
|
7719
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
7720
|
|
|
|
|
|
|
} |
7721
|
|
|
|
|
|
|
} |
7722
|
3
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
7723
|
3
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
7724
|
3
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
7725
|
3
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
7726
|
3
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
7727
|
3
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
7728
|
3
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
7729
|
3
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
7730
|
3
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
7731
|
|
|
|
|
|
|
/*-- cleanup --*/ |
7732
|
3
|
50
|
|
|
|
|
if (datapp) free(datapp); |
7733
|
3
|
50
|
|
|
|
|
if (maskpp) free(maskpp); |
7734
|
|
|
|
|
|
|
|
7735
|
3
|
|
|
|
|
|
} } break; case PDL_S: { |
7736
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7737
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7738
|
|
|
|
|
|
|
|
7739
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7740
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7741
|
|
|
|
|
|
|
|
7742
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7743
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7744
|
|
|
|
|
|
|
|
7745
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7746
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7747
|
|
|
|
|
|
|
|
7748
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7749
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7750
|
|
|
|
|
|
|
|
7751
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7752
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7753
|
|
|
|
|
|
|
|
7754
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7755
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7756
|
|
|
|
|
|
|
|
7757
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7758
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7759
|
|
|
|
|
|
|
|
7760
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7761
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7762
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7763
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7764
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7765
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7766
|
|
|
|
|
|
|
|
7767
|
|
|
|
|
|
|
|
7768
|
0
|
|
|
|
|
|
int transpose = 0; |
7769
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
7770
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
7771
|
|
|
|
|
|
|
|
7772
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
7773
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
7774
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
7775
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
7776
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
7777
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
7778
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
7779
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
7780
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
7781
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
7782
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
7783
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
7784
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
7785
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
7786
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
7787
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
7788
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
7789
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
7790
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
7791
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
7792
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
7793
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
7794
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
7795
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
7796
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
7797
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
7798
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
7799
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
7800
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
7801
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
7802
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
7803
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
7804
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
7805
|
0
|
|
|
|
|
|
__tind2++ |
7806
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
7807
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
7808
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
7809
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
7810
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
7811
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
7812
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
7813
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
7814
|
|
|
|
|
|
|
) |
7815
|
|
|
|
|
|
|
{ |
7816
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
7817
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
7818
|
0
|
|
|
|
|
|
__tind1++ |
7819
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
7820
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
7821
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
7822
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
7823
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
7824
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
7825
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
7826
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
7827
|
|
|
|
|
|
|
) |
7828
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
7829
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
7830
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
7831
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
7832
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
7833
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
7834
|
|
|
|
|
|
|
|
7835
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
7836
|
|
|
|
|
|
|
} |
7837
|
|
|
|
|
|
|
} |
7838
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
7839
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
7840
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
7841
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
7842
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
7843
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
7844
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
7845
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
7846
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
7847
|
|
|
|
|
|
|
/*-- cleanup --*/ |
7848
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
7849
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
7850
|
|
|
|
|
|
|
|
7851
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
7852
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7853
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7854
|
|
|
|
|
|
|
|
7855
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7856
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7857
|
|
|
|
|
|
|
|
7858
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7859
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7860
|
|
|
|
|
|
|
|
7861
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7862
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7863
|
|
|
|
|
|
|
|
7864
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7865
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7866
|
|
|
|
|
|
|
|
7867
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7868
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7869
|
|
|
|
|
|
|
|
7870
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7871
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7872
|
|
|
|
|
|
|
|
7873
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7874
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7875
|
|
|
|
|
|
|
|
7876
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7877
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7878
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7879
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7880
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7881
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7882
|
|
|
|
|
|
|
|
7883
|
|
|
|
|
|
|
|
7884
|
0
|
|
|
|
|
|
int transpose = 0; |
7885
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
7886
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
7887
|
|
|
|
|
|
|
|
7888
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
7889
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
7890
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
7891
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
7892
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
7893
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
7894
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
7895
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
7896
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
7897
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
7898
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
7899
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
7900
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
7901
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
7902
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
7903
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
7904
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
7905
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
7906
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
7907
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
7908
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
7909
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
7910
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
7911
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
7912
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
7913
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
7914
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
7915
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
7916
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
7917
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
7918
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
7919
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
7920
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
7921
|
0
|
|
|
|
|
|
__tind2++ |
7922
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
7923
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
7924
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
7925
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
7926
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
7927
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
7928
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
7929
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
7930
|
|
|
|
|
|
|
) |
7931
|
|
|
|
|
|
|
{ |
7932
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
7933
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
7934
|
0
|
|
|
|
|
|
__tind1++ |
7935
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
7936
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
7937
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
7938
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
7939
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
7940
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
7941
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
7942
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
7943
|
|
|
|
|
|
|
) |
7944
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
7945
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
7946
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
7947
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
7948
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
7949
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
7950
|
|
|
|
|
|
|
|
7951
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
7952
|
|
|
|
|
|
|
} |
7953
|
|
|
|
|
|
|
} |
7954
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
7955
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
7956
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
7957
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
7958
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
7959
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
7960
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
7961
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
7962
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
7963
|
|
|
|
|
|
|
/*-- cleanup --*/ |
7964
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
7965
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
7966
|
|
|
|
|
|
|
|
7967
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
7968
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
7969
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
7970
|
|
|
|
|
|
|
|
7971
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
7972
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
7973
|
|
|
|
|
|
|
|
7974
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
7975
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
7976
|
|
|
|
|
|
|
|
7977
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
7978
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
7979
|
|
|
|
|
|
|
|
7980
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
7981
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
7982
|
|
|
|
|
|
|
|
7983
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
7984
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
7985
|
|
|
|
|
|
|
|
7986
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
7987
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
7988
|
|
|
|
|
|
|
|
7989
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
7990
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
7991
|
|
|
|
|
|
|
|
7992
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
7993
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
7994
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
7995
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
7996
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
7997
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
7998
|
|
|
|
|
|
|
|
7999
|
|
|
|
|
|
|
|
8000
|
0
|
|
|
|
|
|
int transpose = 0; |
8001
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
8002
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
8003
|
|
|
|
|
|
|
|
8004
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
8005
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
8006
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
8007
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
8008
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
8009
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
8010
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
8011
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
8012
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
8013
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
8014
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
8015
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
8016
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
8017
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
8018
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
8019
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
8020
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
8021
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
8022
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
8023
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
8024
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
8025
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
8026
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
8027
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
8028
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
8029
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
8030
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
8031
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
8032
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
8033
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
8034
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
8035
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
8036
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
8037
|
0
|
|
|
|
|
|
__tind2++ |
8038
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
8039
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
8040
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
8041
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
8042
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
8043
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
8044
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
8045
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
8046
|
|
|
|
|
|
|
) |
8047
|
|
|
|
|
|
|
{ |
8048
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
8049
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
8050
|
0
|
|
|
|
|
|
__tind1++ |
8051
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
8052
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
8053
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
8054
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
8055
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
8056
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
8057
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
8058
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
8059
|
|
|
|
|
|
|
) |
8060
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
8061
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
8062
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
8063
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
8064
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
8065
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
8066
|
|
|
|
|
|
|
|
8067
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
8068
|
|
|
|
|
|
|
} |
8069
|
|
|
|
|
|
|
} |
8070
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
8071
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
8072
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
8073
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
8074
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
8075
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
8076
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
8077
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
8078
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
8079
|
|
|
|
|
|
|
/*-- cleanup --*/ |
8080
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
8081
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
8082
|
|
|
|
|
|
|
|
8083
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
8084
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8085
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8086
|
|
|
|
|
|
|
|
8087
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8088
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8089
|
|
|
|
|
|
|
|
8090
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8091
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8092
|
|
|
|
|
|
|
|
8093
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8094
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
8095
|
|
|
|
|
|
|
|
8096
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8097
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
8098
|
|
|
|
|
|
|
|
8099
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8100
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8101
|
|
|
|
|
|
|
|
8102
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
8103
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
8104
|
|
|
|
|
|
|
|
8105
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
8106
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
8107
|
|
|
|
|
|
|
|
8108
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
8109
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8110
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
8111
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
8112
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
8113
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
8114
|
|
|
|
|
|
|
|
8115
|
|
|
|
|
|
|
|
8116
|
0
|
|
|
|
|
|
int transpose = 0; |
8117
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
8118
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
8119
|
|
|
|
|
|
|
|
8120
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
8121
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
8122
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
8123
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
8124
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
8125
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
8126
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
8127
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
8128
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
8129
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
8130
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
8131
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
8132
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
8133
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
8134
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
8135
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
8136
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
8137
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
8138
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
8139
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
8140
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
8141
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
8142
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
8143
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
8144
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
8145
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
8146
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
8147
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
8148
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
8149
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
8150
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
8151
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
8152
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
8153
|
0
|
|
|
|
|
|
__tind2++ |
8154
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
8155
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
8156
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
8157
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
8158
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
8159
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
8160
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
8161
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
8162
|
|
|
|
|
|
|
) |
8163
|
|
|
|
|
|
|
{ |
8164
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
8165
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
8166
|
0
|
|
|
|
|
|
__tind1++ |
8167
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
8168
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
8169
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
8170
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
8171
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
8172
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
8173
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
8174
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
8175
|
|
|
|
|
|
|
) |
8176
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
8177
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
8178
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
8179
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
8180
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
8181
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
8182
|
|
|
|
|
|
|
|
8183
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
8184
|
|
|
|
|
|
|
} |
8185
|
|
|
|
|
|
|
} |
8186
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
8187
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
8188
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
8189
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
8190
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
8191
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
8192
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
8193
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
8194
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
8195
|
|
|
|
|
|
|
/*-- cleanup --*/ |
8196
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
8197
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
8198
|
|
|
|
|
|
|
|
8199
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
8200
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8201
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8202
|
|
|
|
|
|
|
|
8203
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8204
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8205
|
|
|
|
|
|
|
|
8206
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8207
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8208
|
|
|
|
|
|
|
|
8209
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8210
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
8211
|
|
|
|
|
|
|
|
8212
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8213
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
8214
|
|
|
|
|
|
|
|
8215
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8216
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8217
|
|
|
|
|
|
|
|
8218
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
8219
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
8220
|
|
|
|
|
|
|
|
8221
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
8222
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
8223
|
|
|
|
|
|
|
|
8224
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
8225
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8226
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
8227
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
8228
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
8229
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
8230
|
|
|
|
|
|
|
|
8231
|
|
|
|
|
|
|
|
8232
|
0
|
|
|
|
|
|
int transpose = 0; |
8233
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
8234
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
8235
|
|
|
|
|
|
|
|
8236
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
8237
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
8238
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
8239
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
8240
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
8241
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
8242
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
8243
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
8244
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
8245
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
8246
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
8247
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
8248
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
8249
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
8250
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
8251
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
8252
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
8253
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
8254
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
8255
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
8256
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
8257
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
8258
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
8259
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
8260
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
8261
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
8262
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
8263
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
8264
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
8265
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
8266
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
8267
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
8268
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
8269
|
0
|
|
|
|
|
|
__tind2++ |
8270
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
8271
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
8272
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
8273
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
8274
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
8275
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
8276
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
8277
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
8278
|
|
|
|
|
|
|
) |
8279
|
|
|
|
|
|
|
{ |
8280
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
8281
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
8282
|
0
|
|
|
|
|
|
__tind1++ |
8283
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
8284
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
8285
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
8286
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
8287
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
8288
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
8289
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
8290
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
8291
|
|
|
|
|
|
|
) |
8292
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
8293
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
8294
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
8295
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
8296
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
8297
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
8298
|
|
|
|
|
|
|
|
8299
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
8300
|
|
|
|
|
|
|
} |
8301
|
|
|
|
|
|
|
} |
8302
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
8303
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
8304
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
8305
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
8306
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
8307
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
8308
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
8309
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
8310
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
8311
|
|
|
|
|
|
|
/*-- cleanup --*/ |
8312
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
8313
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
8314
|
|
|
|
|
|
|
|
8315
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
8316
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8317
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8318
|
|
|
|
|
|
|
|
8319
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8320
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8321
|
|
|
|
|
|
|
|
8322
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8323
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8324
|
|
|
|
|
|
|
|
8325
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8326
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
8327
|
|
|
|
|
|
|
|
8328
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8329
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
8330
|
|
|
|
|
|
|
|
8331
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8332
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8333
|
|
|
|
|
|
|
|
8334
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
8335
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
8336
|
|
|
|
|
|
|
|
8337
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
8338
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
8339
|
|
|
|
|
|
|
|
8340
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
8341
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8342
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
8343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
8344
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
8345
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
8346
|
|
|
|
|
|
|
|
8347
|
|
|
|
|
|
|
|
8348
|
0
|
|
|
|
|
|
int transpose = 0; |
8349
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
8350
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
8351
|
|
|
|
|
|
|
|
8352
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
8353
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
8354
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
8355
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
8356
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
8357
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
8358
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
8359
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
8360
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
8361
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
8362
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
8363
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
8364
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
8365
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
8366
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
8367
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
8368
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
8369
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
8370
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
8371
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
8372
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
8373
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
8374
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
8375
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
8376
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
8377
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
8378
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
8379
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
8380
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
8381
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
8382
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
8383
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
8384
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
8385
|
0
|
|
|
|
|
|
__tind2++ |
8386
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
8387
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
8388
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
8389
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
8390
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
8391
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
8392
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
8393
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
8394
|
|
|
|
|
|
|
) |
8395
|
|
|
|
|
|
|
{ |
8396
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
8397
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
8398
|
0
|
|
|
|
|
|
__tind1++ |
8399
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
8400
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
8401
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
8402
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
8403
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
8404
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
8405
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
8406
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
8407
|
|
|
|
|
|
|
) |
8408
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
8409
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
8410
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
8411
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
8412
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
8413
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
8414
|
|
|
|
|
|
|
|
8415
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
8416
|
|
|
|
|
|
|
} |
8417
|
|
|
|
|
|
|
} |
8418
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
8419
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
8420
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
8421
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
8422
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
8423
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
8424
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
8425
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
8426
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
8427
|
|
|
|
|
|
|
/*-- cleanup --*/ |
8428
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
8429
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
8430
|
|
|
|
|
|
|
|
8431
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
8432
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8433
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8434
|
|
|
|
|
|
|
|
8435
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8436
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8437
|
|
|
|
|
|
|
|
8438
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8439
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8440
|
|
|
|
|
|
|
|
8441
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8442
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
8443
|
|
|
|
|
|
|
|
8444
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8445
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
8446
|
|
|
|
|
|
|
|
8447
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8448
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8449
|
|
|
|
|
|
|
|
8450
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
8451
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
8452
|
|
|
|
|
|
|
|
8453
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
8454
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
8455
|
|
|
|
|
|
|
|
8456
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
8457
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8458
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
8459
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
8460
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
8461
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
8462
|
|
|
|
|
|
|
|
8463
|
|
|
|
|
|
|
|
8464
|
0
|
|
|
|
|
|
int transpose = 0; |
8465
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
8466
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
8467
|
|
|
|
|
|
|
|
8468
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
8469
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
8470
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
8471
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
8472
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
8473
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
8474
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
8475
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
8476
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
8477
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
8478
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
8479
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
8480
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
8481
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
8482
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
8483
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
8484
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
8485
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
8486
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
8487
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
8488
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
8489
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
8490
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
8491
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
8492
|
0
|
|
|
|
|
|
data_datap += __offsp[1]; |
8493
|
0
|
|
|
|
|
|
mask_datap += __offsp[2]; |
8494
|
0
|
|
|
|
|
|
weight_datap += __offsp[3]; |
8495
|
0
|
|
|
|
|
|
npass_datap += __offsp[4]; |
8496
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[5]; |
8497
|
0
|
|
|
|
|
|
error_datap += __offsp[6]; |
8498
|
0
|
|
|
|
|
|
nfound_datap += __offsp[7]; |
8499
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
8500
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
8501
|
0
|
|
|
|
|
|
__tind2++ |
8502
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
8503
|
0
|
|
|
|
|
|
,data_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
8504
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
8505
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
8506
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
8507
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
8508
|
0
|
|
|
|
|
|
,error_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
8509
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
8510
|
|
|
|
|
|
|
) |
8511
|
|
|
|
|
|
|
{ |
8512
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
8513
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
8514
|
0
|
|
|
|
|
|
__tind1++ |
8515
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
8516
|
0
|
|
|
|
|
|
,data_datap += __tinc0_1 |
8517
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_2 |
8518
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_3 |
8519
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_4 |
8520
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_5 |
8521
|
0
|
|
|
|
|
|
,error_datap += __tinc0_6 |
8522
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_7 |
8523
|
|
|
|
|
|
|
) |
8524
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
8525
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
8526
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
8527
|
0
|
|
|
|
|
|
kcluster((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
8528
|
0
|
|
|
|
|
|
weight_datap, transpose, (npass_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->ctrMethodFlag, *__privtrans->distFlag, |
8529
|
|
|
|
|
|
|
clusterids_datap, error_datap, nfound_datap); |
8530
|
|
|
|
|
|
|
|
8531
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
8532
|
|
|
|
|
|
|
} |
8533
|
|
|
|
|
|
|
} |
8534
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
8535
|
0
|
|
|
|
|
|
data_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
8536
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
8537
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
8538
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
8539
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
8540
|
0
|
|
|
|
|
|
error_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
8541
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
8542
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
8543
|
|
|
|
|
|
|
/*-- cleanup --*/ |
8544
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
8545
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
8546
|
|
|
|
|
|
|
|
8547
|
0
|
|
|
|
|
|
} break;} |
8548
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
8549
|
|
|
|
|
|
|
} |
8550
|
|
|
|
|
|
|
} |
8551
|
|
|
|
|
|
|
} |
8552
|
|
|
|
|
|
|
|
8553
|
|
|
|
|
|
|
|
8554
|
|
|
|
|
|
|
|
8555
|
|
|
|
|
|
|
|
8556
|
3
|
|
|
|
|
|
void pdl_kcluster_free(pdl_trans *__tr ) { |
8557
|
|
|
|
|
|
|
int __dim; |
8558
|
3
|
|
|
|
|
|
pdl_kcluster_struct *__privtrans = (pdl_kcluster_struct *) __tr; |
8559
|
|
|
|
|
|
|
|
8560
|
|
|
|
|
|
|
{ |
8561
|
|
|
|
|
|
|
|
8562
|
3
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
8563
|
3
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->ctrMethodFlag);; |
8564
|
3
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
8565
|
3
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
8566
|
|
|
|
|
|
|
;;;;;;;;; |
8567
|
|
|
|
|
|
|
} |
8568
|
|
|
|
|
|
|
|
8569
|
|
|
|
|
|
|
} |
8570
|
3
|
|
|
|
|
|
} |
8571
|
|
|
|
|
|
|
|
8572
|
|
|
|
|
|
|
|
8573
|
|
|
|
|
|
|
|
8574
|
|
|
|
|
|
|
|
8575
|
|
|
|
|
|
|
static char pdl_kcluster_vtable_flags[] = |
8576
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,0,0,0,PDL_TPDL_VAFFINE_OK,0,0,0}; |
8577
|
|
|
|
|
|
|
pdl_transvtable pdl_kcluster_vtable = { |
8578
|
|
|
|
|
|
|
0,0, 5, 8, pdl_kcluster_vtable_flags, |
8579
|
|
|
|
|
|
|
pdl_kcluster_redodims, pdl_kcluster_readdata, NULL, |
8580
|
|
|
|
|
|
|
pdl_kcluster_free,NULL,NULL,pdl_kcluster_copy, |
8581
|
|
|
|
|
|
|
sizeof(pdl_kcluster_struct),"pdl_kcluster_vtable" |
8582
|
|
|
|
|
|
|
}; |
8583
|
|
|
|
|
|
|
|
8584
|
|
|
|
|
|
|
typedef struct pdl_kmedoids_struct { |
8585
|
|
|
|
|
|
|
PDL_TRANS_START(6); |
8586
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_distance_n0;PDL_Indx __inc_distance_n1;PDL_Indx __inc_clusterids_n;PDL_Indx __n_size; |
8587
|
|
|
|
|
|
|
|
8588
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
8589
|
|
|
|
|
|
|
} pdl_kmedoids_struct; |
8590
|
|
|
|
|
|
|
|
8591
|
2
|
|
|
|
|
|
void pdl_kmedoids_redodims(pdl_trans *__tr ) { |
8592
|
|
|
|
|
|
|
int __dim; |
8593
|
2
|
|
|
|
|
|
pdl_kmedoids_struct *__privtrans = (pdl_kmedoids_struct *) __tr; |
8594
|
|
|
|
|
|
|
|
8595
|
|
|
|
|
|
|
{ |
8596
|
|
|
|
|
|
|
PDL_Indx __creating[6]; |
8597
|
2
|
|
|
|
|
|
__privtrans->__n_size = -1; |
8598
|
2
|
|
|
|
|
|
__creating[0] = 0; |
8599
|
2
|
|
|
|
|
|
__creating[1] = 0; |
8600
|
2
|
|
|
|
|
|
__creating[2] = 0; |
8601
|
2
|
50
|
|
|
|
|
__creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]); |
|
|
0
|
|
|
|
|
|
8602
|
2
|
50
|
|
|
|
|
__creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]); |
|
|
0
|
|
|
|
|
|
8603
|
2
|
50
|
|
|
|
|
__creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]); |
|
|
50
|
|
|
|
|
|
8604
|
|
|
|
|
|
|
{ |
8605
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
8606
|
|
|
|
|
|
|
|
8607
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
8608
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
8609
|
2
|
50
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8610
|
2
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8611
|
|
|
|
|
|
|
|
8612
|
2
|
50
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
50
|
|
|
|
|
|
8613
|
2
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8614
|
|
|
|
|
|
|
|
8615
|
2
|
50
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8616
|
2
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8617
|
|
|
|
|
|
|
|
8618
|
2
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8619
|
2
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8620
|
|
|
|
|
|
|
|
8621
|
2
|
50
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8622
|
2
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8623
|
|
|
|
|
|
|
|
8624
|
2
|
50
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8625
|
2
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8626
|
|
|
|
|
|
|
|
8627
|
2
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8628
|
2
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8629
|
2
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8630
|
|
|
|
|
|
|
|
8631
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8632
|
2
|
|
|
|
|
|
} } break; case PDL_S: { |
8633
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8634
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8635
|
|
|
|
|
|
|
|
8636
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8637
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8638
|
|
|
|
|
|
|
|
8639
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8640
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8641
|
|
|
|
|
|
|
|
8642
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8643
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8644
|
|
|
|
|
|
|
|
8645
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8646
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8647
|
|
|
|
|
|
|
|
8648
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8649
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8650
|
|
|
|
|
|
|
|
8651
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8652
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8653
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8654
|
|
|
|
|
|
|
|
8655
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8656
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
8657
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8658
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8659
|
|
|
|
|
|
|
|
8660
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8661
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8662
|
|
|
|
|
|
|
|
8663
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8664
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8665
|
|
|
|
|
|
|
|
8666
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8667
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8668
|
|
|
|
|
|
|
|
8669
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8670
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8671
|
|
|
|
|
|
|
|
8672
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8673
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8674
|
|
|
|
|
|
|
|
8675
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8676
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8677
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8678
|
|
|
|
|
|
|
|
8679
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8680
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
8681
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8682
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8683
|
|
|
|
|
|
|
|
8684
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8685
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8686
|
|
|
|
|
|
|
|
8687
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8688
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8689
|
|
|
|
|
|
|
|
8690
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8691
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8692
|
|
|
|
|
|
|
|
8693
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8694
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8695
|
|
|
|
|
|
|
|
8696
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8697
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8698
|
|
|
|
|
|
|
|
8699
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8700
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8701
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8702
|
|
|
|
|
|
|
|
8703
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8704
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
8705
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8706
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8707
|
|
|
|
|
|
|
|
8708
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8709
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8710
|
|
|
|
|
|
|
|
8711
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8712
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8713
|
|
|
|
|
|
|
|
8714
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8715
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8716
|
|
|
|
|
|
|
|
8717
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8718
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8719
|
|
|
|
|
|
|
|
8720
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8721
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8722
|
|
|
|
|
|
|
|
8723
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8724
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8725
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8726
|
|
|
|
|
|
|
|
8727
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8728
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
8729
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8730
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8731
|
|
|
|
|
|
|
|
8732
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8733
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8734
|
|
|
|
|
|
|
|
8735
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8736
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8737
|
|
|
|
|
|
|
|
8738
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8739
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8740
|
|
|
|
|
|
|
|
8741
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8742
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8743
|
|
|
|
|
|
|
|
8744
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8745
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8746
|
|
|
|
|
|
|
|
8747
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8748
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8749
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8750
|
|
|
|
|
|
|
|
8751
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8752
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
8753
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8754
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8755
|
|
|
|
|
|
|
|
8756
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8757
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8758
|
|
|
|
|
|
|
|
8759
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8760
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8761
|
|
|
|
|
|
|
|
8762
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8763
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8764
|
|
|
|
|
|
|
|
8765
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8766
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8767
|
|
|
|
|
|
|
|
8768
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8769
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8770
|
|
|
|
|
|
|
|
8771
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8772
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8773
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8774
|
|
|
|
|
|
|
|
8775
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8776
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
8777
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
8778
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
8779
|
|
|
|
|
|
|
|
8780
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
8781
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
8782
|
|
|
|
|
|
|
|
8783
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
8784
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
8785
|
|
|
|
|
|
|
|
8786
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
8787
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
8788
|
|
|
|
|
|
|
|
8789
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
8790
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
8791
|
|
|
|
|
|
|
|
8792
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
8793
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
8794
|
|
|
|
|
|
|
|
8795
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
8796
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
8797
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
8798
|
|
|
|
|
|
|
|
8799
|
|
|
|
|
|
|
PDL_COMMENT("none") |
8800
|
0
|
|
|
|
|
|
} break;} |
8801
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
8802
|
|
|
|
|
|
|
} |
8803
|
|
|
|
|
|
|
} |
8804
|
|
|
|
|
|
|
{ |
8805
|
|
|
|
|
|
|
static char *__parnames[] = {"nclusters","distance","npass","clusterids","error","nfound"}; |
8806
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {0,2,0,1,0,0}; |
8807
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::kmedoids"; |
8808
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
8809
|
|
|
|
|
|
|
__funcname, __parnames, 6 |
8810
|
|
|
|
|
|
|
}; |
8811
|
|
|
|
|
|
|
|
8812
|
2
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
8813
|
|
|
|
|
|
|
__realdims,__creating,6, |
8814
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
8815
|
2
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
8816
|
|
|
|
|
|
|
0 ); |
8817
|
|
|
|
|
|
|
} |
8818
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
8819
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
8820
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
8821
|
|
|
|
|
|
|
} |
8822
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
8823
|
2
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[0]; |
8824
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
8825
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
8826
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kmedoids:" "Wrong dims\n"); |
8827
|
|
|
|
|
|
|
} |
8828
|
|
|
|
|
|
|
} |
8829
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
8830
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
8831
|
2
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
8832
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
8833
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kmedoids:" "Wrong dims\n"); |
8834
|
|
|
|
|
|
|
} |
8835
|
|
|
|
|
|
|
} |
8836
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
8837
|
2
|
50
|
|
|
|
|
if(!__creating[3]) { |
8838
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
8839
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
8840
|
|
|
|
|
|
|
} |
8841
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
8842
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[3]))->dims[0]; |
8843
|
2
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
8844
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
8845
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in kmedoids:" "Wrong dims\n"); |
8846
|
|
|
|
|
|
|
} |
8847
|
|
|
|
|
|
|
} |
8848
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
8849
|
|
|
|
|
|
|
} else { |
8850
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
8851
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0); |
8852
|
2
|
50
|
|
|
|
|
}if(!__creating[4]) { |
8853
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
8854
|
|
|
|
|
|
|
} else { |
8855
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
8856
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0); |
8857
|
2
|
50
|
|
|
|
|
}if(!__creating[5]) { |
8858
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[5]))); |
8859
|
|
|
|
|
|
|
} else { |
8860
|
|
|
|
|
|
|
PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers") |
8861
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0); |
8862
|
|
|
|
|
|
|
} |
8863
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
8864
|
2
|
|
|
|
|
|
void *hdrp = NULL; |
8865
|
2
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
8866
|
2
|
|
|
|
|
|
SV *hdr_copy = NULL; |
8867
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
8868
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
8869
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
8870
|
|
|
|
|
|
|
) { |
8871
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
8872
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
8873
|
|
|
|
|
|
|
} |
8874
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
8875
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
8876
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
8877
|
|
|
|
|
|
|
) { |
8878
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
8879
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
8880
|
|
|
|
|
|
|
} |
8881
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
8882
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
8883
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
8884
|
|
|
|
|
|
|
) { |
8885
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
8886
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
8887
|
|
|
|
|
|
|
} |
8888
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
8889
|
2
|
50
|
|
|
|
|
!__creating[3] && |
8890
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
8891
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
8892
|
|
|
|
|
|
|
) { |
8893
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
8894
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
8895
|
|
|
|
|
|
|
} |
8896
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
8897
|
2
|
50
|
|
|
|
|
!__creating[4] && |
8898
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
8899
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
8900
|
|
|
|
|
|
|
) { |
8901
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
8902
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
8903
|
|
|
|
|
|
|
} |
8904
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
8905
|
2
|
50
|
|
|
|
|
!__creating[5] && |
8906
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
8907
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
8908
|
|
|
|
|
|
|
) { |
8909
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
8910
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
8911
|
|
|
|
|
|
|
} |
8912
|
2
|
50
|
|
|
|
|
if (hdrp) { |
8913
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
8914
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
8915
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
8916
|
|
|
|
|
|
|
int count; |
8917
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
8918
|
0
|
|
|
|
|
|
dSP; |
8919
|
0
|
|
|
|
|
|
ENTER ; |
8920
|
0
|
|
|
|
|
|
SAVETMPS ; |
8921
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
8922
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
8923
|
0
|
|
|
|
|
|
PUTBACK ; |
8924
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
8925
|
0
|
|
|
|
|
|
SPAGAIN ; |
8926
|
0
|
0
|
|
|
|
|
if(count != 1) |
8927
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
8928
|
|
|
|
|
|
|
|
8929
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
8930
|
|
|
|
|
|
|
|
8931
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
8932
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
8933
|
|
|
|
|
|
|
} |
8934
|
|
|
|
|
|
|
|
8935
|
0
|
0
|
|
|
|
|
FREETMPS ; |
8936
|
0
|
|
|
|
|
|
LEAVE ; |
8937
|
|
|
|
|
|
|
|
8938
|
|
|
|
|
|
|
|
8939
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
8940
|
|
|
|
|
|
|
|
8941
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[3]->hdrsv != hdrp ){ |
8942
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
8943
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv ); |
8944
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
8945
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
8946
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->hdrsv = hdr_copy; |
8947
|
|
|
|
|
|
|
} |
8948
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
8949
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->state |= PDL_HDRCPY; |
8950
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[4]->hdrsv != hdrp ){ |
8951
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
8952
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv ); |
8953
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
8954
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
8955
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->hdrsv = hdr_copy; |
8956
|
|
|
|
|
|
|
} |
8957
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
8958
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->state |= PDL_HDRCPY; |
8959
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[5]->hdrsv != hdrp ){ |
8960
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
8961
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv ); |
8962
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
8963
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
8964
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->hdrsv = hdr_copy; |
8965
|
|
|
|
|
|
|
} |
8966
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
8967
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->state |= PDL_HDRCPY; |
8968
|
|
|
|
|
|
|
|
8969
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
8970
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
8971
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
8972
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
8973
|
2
|
50
|
|
|
|
|
if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
8974
|
0
|
|
|
|
|
|
__privtrans->__inc_distance_n0 = 0; else |
8975
|
2
|
50
|
|
|
|
|
__privtrans->__inc_distance_n0 = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
8976
|
0
|
|
|
|
|
|
__privtrans->__inc_distance_n1 = 0; else |
8977
|
2
|
50
|
|
|
|
|
__privtrans->__inc_distance_n1 = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
8978
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
8979
|
2
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = __privtrans->pdls[3]->dimincs[0]; __privtrans->__ddone = 1; |
8980
|
|
|
|
|
|
|
} |
8981
|
2
|
|
|
|
|
|
} |
8982
|
|
|
|
|
|
|
|
8983
|
|
|
|
|
|
|
|
8984
|
0
|
|
|
|
|
|
pdl_trans * pdl_kmedoids_copy(pdl_trans *__tr ) { |
8985
|
|
|
|
|
|
|
int __dim; |
8986
|
0
|
|
|
|
|
|
pdl_kmedoids_struct *__privtrans = (pdl_kmedoids_struct *) __tr; |
8987
|
|
|
|
|
|
|
|
8988
|
|
|
|
|
|
|
{ |
8989
|
0
|
|
|
|
|
|
pdl_kmedoids_struct *__copy = malloc(sizeof(pdl_kmedoids_struct)); |
8990
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
8991
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
8992
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
8993
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
8994
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
8995
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
8996
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
8997
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
8998
|
|
|
|
|
|
|
{int i; |
8999
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
9000
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
9001
|
|
|
|
|
|
|
} |
9002
|
|
|
|
|
|
|
|
9003
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
9004
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_distance_n0=__copy->__inc_distance_n0;__privtrans->__inc_distance_n1=__copy->__inc_distance_n1;__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__copy->__n_size=__privtrans->__n_size; |
9005
|
|
|
|
|
|
|
} |
9006
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
9007
|
|
|
|
|
|
|
} |
9008
|
|
|
|
|
|
|
} |
9009
|
|
|
|
|
|
|
|
9010
|
|
|
|
|
|
|
|
9011
|
2
|
|
|
|
|
|
void pdl_kmedoids_readdata(pdl_trans *__tr ) { |
9012
|
|
|
|
|
|
|
int __dim; |
9013
|
2
|
|
|
|
|
|
pdl_kmedoids_struct *__privtrans = (pdl_kmedoids_struct *) __tr; |
9014
|
|
|
|
|
|
|
|
9015
|
|
|
|
|
|
|
{ |
9016
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
9017
|
|
|
|
|
|
|
|
9018
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
9019
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
9020
|
2
|
50
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9021
|
2
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9022
|
|
|
|
|
|
|
|
9023
|
2
|
50
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
50
|
|
|
|
|
|
9024
|
2
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9025
|
|
|
|
|
|
|
|
9026
|
2
|
50
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9027
|
2
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9028
|
|
|
|
|
|
|
|
9029
|
2
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9030
|
2
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9031
|
|
|
|
|
|
|
|
9032
|
2
|
50
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9033
|
2
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9034
|
|
|
|
|
|
|
|
9035
|
2
|
50
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9036
|
2
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9037
|
|
|
|
|
|
|
|
9038
|
2
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9039
|
2
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9040
|
2
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9041
|
|
|
|
|
|
|
|
9042
|
|
|
|
|
|
|
|
9043
|
2
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9044
|
|
|
|
|
|
|
|
9045
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9046
|
2
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9047
|
2
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9048
|
2
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9049
|
2
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9050
|
2
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9051
|
2
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9052
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9053
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9054
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9055
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9056
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9057
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9058
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9059
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9060
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9061
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9062
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9063
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9064
|
2
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9065
|
2
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9066
|
2
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9067
|
2
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9068
|
2
|
|
|
|
|
|
error_datap += __offsp[4]; |
9069
|
2
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9070
|
4
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
9071
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9072
|
2
|
|
|
|
|
|
__tind2++ |
9073
|
2
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9074
|
2
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9075
|
2
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9076
|
2
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9077
|
2
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9078
|
2
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9079
|
|
|
|
|
|
|
) |
9080
|
|
|
|
|
|
|
{ |
9081
|
4
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
9082
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9083
|
2
|
|
|
|
|
|
__tind1++ |
9084
|
2
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9085
|
2
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9086
|
2
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9087
|
2
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9088
|
2
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9089
|
2
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9090
|
|
|
|
|
|
|
) |
9091
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9092
|
2
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9093
|
2
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9094
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9095
|
|
|
|
|
|
|
|
9096
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9097
|
|
|
|
|
|
|
} |
9098
|
|
|
|
|
|
|
} |
9099
|
2
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9100
|
2
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9101
|
2
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9102
|
2
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9103
|
2
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9104
|
2
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9105
|
2
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9106
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9107
|
2
|
50
|
|
|
|
|
if (distpp) free(distpp); |
9108
|
|
|
|
|
|
|
|
9109
|
2
|
|
|
|
|
|
} } break; case PDL_S: { |
9110
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9111
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9112
|
|
|
|
|
|
|
|
9113
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9114
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9115
|
|
|
|
|
|
|
|
9116
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9117
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9118
|
|
|
|
|
|
|
|
9119
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9120
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9121
|
|
|
|
|
|
|
|
9122
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9123
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9124
|
|
|
|
|
|
|
|
9125
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9126
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9127
|
|
|
|
|
|
|
|
9128
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9129
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9130
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9131
|
|
|
|
|
|
|
|
9132
|
|
|
|
|
|
|
|
9133
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9134
|
|
|
|
|
|
|
|
9135
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9136
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9137
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9138
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9139
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9140
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9141
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9142
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9143
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9144
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9145
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9146
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9147
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9148
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9149
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9150
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9151
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9152
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9153
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9154
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9155
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9156
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9157
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9158
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9159
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9160
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9161
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9162
|
0
|
|
|
|
|
|
__tind2++ |
9163
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9164
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9165
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9166
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9167
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9168
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9169
|
|
|
|
|
|
|
) |
9170
|
|
|
|
|
|
|
{ |
9171
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9172
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9173
|
0
|
|
|
|
|
|
__tind1++ |
9174
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9175
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9176
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9177
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9178
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9179
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9180
|
|
|
|
|
|
|
) |
9181
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9182
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9183
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9184
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9185
|
|
|
|
|
|
|
|
9186
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9187
|
|
|
|
|
|
|
} |
9188
|
|
|
|
|
|
|
} |
9189
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9190
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9191
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9192
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9193
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9194
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9195
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9196
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9197
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9198
|
|
|
|
|
|
|
|
9199
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
9200
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9201
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9202
|
|
|
|
|
|
|
|
9203
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9204
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9205
|
|
|
|
|
|
|
|
9206
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9207
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9208
|
|
|
|
|
|
|
|
9209
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9210
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9211
|
|
|
|
|
|
|
|
9212
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9213
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9214
|
|
|
|
|
|
|
|
9215
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9216
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9217
|
|
|
|
|
|
|
|
9218
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9219
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9220
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9221
|
|
|
|
|
|
|
|
9222
|
|
|
|
|
|
|
|
9223
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9224
|
|
|
|
|
|
|
|
9225
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9226
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9227
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9228
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9229
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9230
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9231
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9232
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9233
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9234
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9235
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9236
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9237
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9238
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9239
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9240
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9241
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9242
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9243
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9244
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9245
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9246
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9247
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9248
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9249
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9250
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9251
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9252
|
0
|
|
|
|
|
|
__tind2++ |
9253
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9254
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9255
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9256
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9257
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9258
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9259
|
|
|
|
|
|
|
) |
9260
|
|
|
|
|
|
|
{ |
9261
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9262
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9263
|
0
|
|
|
|
|
|
__tind1++ |
9264
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9265
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9266
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9267
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9268
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9269
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9270
|
|
|
|
|
|
|
) |
9271
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9272
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9273
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9274
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9275
|
|
|
|
|
|
|
|
9276
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9277
|
|
|
|
|
|
|
} |
9278
|
|
|
|
|
|
|
} |
9279
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9280
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9281
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9282
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9283
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9284
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9285
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9286
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9287
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9288
|
|
|
|
|
|
|
|
9289
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
9290
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9291
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9292
|
|
|
|
|
|
|
|
9293
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9294
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9295
|
|
|
|
|
|
|
|
9296
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9297
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9298
|
|
|
|
|
|
|
|
9299
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9300
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9301
|
|
|
|
|
|
|
|
9302
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9303
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9304
|
|
|
|
|
|
|
|
9305
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9306
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9307
|
|
|
|
|
|
|
|
9308
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9309
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9310
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9311
|
|
|
|
|
|
|
|
9312
|
|
|
|
|
|
|
|
9313
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9314
|
|
|
|
|
|
|
|
9315
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9316
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9317
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9318
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9319
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9320
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9321
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9322
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9323
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9324
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9325
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9326
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9327
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9328
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9329
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9330
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9331
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9332
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9333
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9334
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9335
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9336
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9337
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9338
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9339
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9340
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9341
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9342
|
0
|
|
|
|
|
|
__tind2++ |
9343
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9344
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9345
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9346
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9347
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9348
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9349
|
|
|
|
|
|
|
) |
9350
|
|
|
|
|
|
|
{ |
9351
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9352
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9353
|
0
|
|
|
|
|
|
__tind1++ |
9354
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9355
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9356
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9357
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9358
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9359
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9360
|
|
|
|
|
|
|
) |
9361
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9362
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9363
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9364
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9365
|
|
|
|
|
|
|
|
9366
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9367
|
|
|
|
|
|
|
} |
9368
|
|
|
|
|
|
|
} |
9369
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9370
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9371
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9372
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9373
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9374
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9375
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9376
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9377
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9378
|
|
|
|
|
|
|
|
9379
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
9380
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9381
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9382
|
|
|
|
|
|
|
|
9383
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9384
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9385
|
|
|
|
|
|
|
|
9386
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9387
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9388
|
|
|
|
|
|
|
|
9389
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9390
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9391
|
|
|
|
|
|
|
|
9392
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9393
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9394
|
|
|
|
|
|
|
|
9395
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9396
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9397
|
|
|
|
|
|
|
|
9398
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9399
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9400
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9401
|
|
|
|
|
|
|
|
9402
|
|
|
|
|
|
|
|
9403
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9404
|
|
|
|
|
|
|
|
9405
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9406
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9407
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9408
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9409
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9410
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9411
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9412
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9413
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9414
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9415
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9416
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9417
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9418
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9419
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9420
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9421
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9422
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9423
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9424
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9425
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9426
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9427
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9428
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9429
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9430
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9431
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9432
|
0
|
|
|
|
|
|
__tind2++ |
9433
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9434
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9435
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9436
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9437
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9438
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9439
|
|
|
|
|
|
|
) |
9440
|
|
|
|
|
|
|
{ |
9441
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9442
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9443
|
0
|
|
|
|
|
|
__tind1++ |
9444
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9445
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9446
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9447
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9448
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9449
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9450
|
|
|
|
|
|
|
) |
9451
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9452
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9453
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9454
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9455
|
|
|
|
|
|
|
|
9456
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9457
|
|
|
|
|
|
|
} |
9458
|
|
|
|
|
|
|
} |
9459
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9460
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9461
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9462
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9463
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9464
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9465
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9466
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9467
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9468
|
|
|
|
|
|
|
|
9469
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
9470
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9471
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9472
|
|
|
|
|
|
|
|
9473
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9474
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9475
|
|
|
|
|
|
|
|
9476
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9477
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9478
|
|
|
|
|
|
|
|
9479
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9480
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9481
|
|
|
|
|
|
|
|
9482
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9483
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9484
|
|
|
|
|
|
|
|
9485
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9486
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9487
|
|
|
|
|
|
|
|
9488
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9489
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9490
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9491
|
|
|
|
|
|
|
|
9492
|
|
|
|
|
|
|
|
9493
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9494
|
|
|
|
|
|
|
|
9495
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9496
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9497
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9498
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9499
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9500
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9501
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9502
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9503
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9504
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9505
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9506
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9507
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9508
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9509
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9510
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9511
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9512
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9513
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9514
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9515
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9516
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9517
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9518
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9519
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9520
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9521
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9522
|
0
|
|
|
|
|
|
__tind2++ |
9523
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9524
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9525
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9526
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9527
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9528
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9529
|
|
|
|
|
|
|
) |
9530
|
|
|
|
|
|
|
{ |
9531
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9532
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9533
|
0
|
|
|
|
|
|
__tind1++ |
9534
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9535
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9536
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9537
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9538
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9539
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9540
|
|
|
|
|
|
|
) |
9541
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9542
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9543
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9544
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9545
|
|
|
|
|
|
|
|
9546
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9547
|
|
|
|
|
|
|
} |
9548
|
|
|
|
|
|
|
} |
9549
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9550
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9551
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9552
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9553
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9554
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9555
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9556
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9557
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9558
|
|
|
|
|
|
|
|
9559
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
9560
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9561
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9562
|
|
|
|
|
|
|
|
9563
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9564
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9565
|
|
|
|
|
|
|
|
9566
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9567
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9568
|
|
|
|
|
|
|
|
9569
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9570
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9571
|
|
|
|
|
|
|
|
9572
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9573
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9574
|
|
|
|
|
|
|
|
9575
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9576
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9577
|
|
|
|
|
|
|
|
9578
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9581
|
|
|
|
|
|
|
|
9582
|
|
|
|
|
|
|
|
9583
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9584
|
|
|
|
|
|
|
|
9585
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9586
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9587
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9588
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9589
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9590
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9591
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9592
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9593
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9594
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9595
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9596
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9597
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9598
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9599
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9600
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9601
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9602
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9603
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9604
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9605
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9606
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9607
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9608
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9609
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9610
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9611
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9612
|
0
|
|
|
|
|
|
__tind2++ |
9613
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9614
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9615
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9616
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9617
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9618
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9619
|
|
|
|
|
|
|
) |
9620
|
|
|
|
|
|
|
{ |
9621
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9622
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9623
|
0
|
|
|
|
|
|
__tind1++ |
9624
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9625
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9626
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9627
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9628
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9629
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9630
|
|
|
|
|
|
|
) |
9631
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9632
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9633
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9634
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9635
|
|
|
|
|
|
|
|
9636
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9637
|
|
|
|
|
|
|
} |
9638
|
|
|
|
|
|
|
} |
9639
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9640
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9641
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9642
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9643
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9644
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9645
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9646
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9647
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9648
|
|
|
|
|
|
|
|
9649
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
9650
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9651
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
9652
|
|
|
|
|
|
|
|
9653
|
0
|
0
|
|
|
|
|
PDL_Double * distance_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9654
|
0
|
|
|
|
|
|
PDL_Double * distance_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
9655
|
|
|
|
|
|
|
|
9656
|
0
|
0
|
|
|
|
|
PDL_Long * npass_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9657
|
0
|
|
|
|
|
|
PDL_Long * npass_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
9658
|
|
|
|
|
|
|
|
9659
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9660
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9661
|
|
|
|
|
|
|
|
9662
|
0
|
0
|
|
|
|
|
PDL_Double * error_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9663
|
0
|
|
|
|
|
|
PDL_Double * error_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9664
|
|
|
|
|
|
|
|
9665
|
0
|
0
|
|
|
|
|
PDL_Long * nfound_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
9666
|
0
|
|
|
|
|
|
PDL_Long * nfound_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
9667
|
|
|
|
|
|
|
|
9668
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_distance_n0 = __privtrans->__inc_distance_n0; |
9669
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distance_n1 = __privtrans->__inc_distance_n1; |
9670
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
9671
|
|
|
|
|
|
|
|
9672
|
|
|
|
|
|
|
|
9673
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
9674
|
|
|
|
|
|
|
|
9675
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
9676
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
9677
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
9678
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
9679
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
9680
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
9681
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
9682
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
9683
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
9684
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
9685
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
9686
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
9687
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
9688
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
9689
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
9690
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
9691
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
9692
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
9693
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
9694
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[0]; |
9695
|
0
|
|
|
|
|
|
distance_datap += __offsp[1]; |
9696
|
0
|
|
|
|
|
|
npass_datap += __offsp[2]; |
9697
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[3]; |
9698
|
0
|
|
|
|
|
|
error_datap += __offsp[4]; |
9699
|
0
|
|
|
|
|
|
nfound_datap += __offsp[5]; |
9700
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
9701
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
9702
|
0
|
|
|
|
|
|
__tind2++ |
9703
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
9704
|
0
|
|
|
|
|
|
,distance_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
9705
|
0
|
|
|
|
|
|
,npass_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
9706
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
9707
|
0
|
|
|
|
|
|
,error_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
9708
|
0
|
|
|
|
|
|
,nfound_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
9709
|
|
|
|
|
|
|
) |
9710
|
|
|
|
|
|
|
{ |
9711
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
9712
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
9713
|
0
|
|
|
|
|
|
__tind1++ |
9714
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_0 |
9715
|
0
|
|
|
|
|
|
,distance_datap += __tinc0_1 |
9716
|
0
|
|
|
|
|
|
,npass_datap += __tinc0_2 |
9717
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_3 |
9718
|
0
|
|
|
|
|
|
,error_datap += __tinc0_4 |
9719
|
0
|
|
|
|
|
|
,nfound_datap += __tinc0_5 |
9720
|
|
|
|
|
|
|
) |
9721
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
9722
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distance_datap, distpp); |
9723
|
0
|
|
|
|
|
|
kmedoids((nclusters_datap)[0] PDL_COMMENT("ACCESS()") , __privtrans->__n_size, distpp, |
9724
|
|
|
|
|
|
|
(npass_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap, error_datap, nfound_datap); |
9725
|
|
|
|
|
|
|
|
9726
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
9727
|
|
|
|
|
|
|
} |
9728
|
|
|
|
|
|
|
} |
9729
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
9730
|
0
|
|
|
|
|
|
distance_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
9731
|
0
|
|
|
|
|
|
npass_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
9732
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
9733
|
0
|
|
|
|
|
|
error_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
9734
|
0
|
|
|
|
|
|
nfound_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
9735
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
9736
|
|
|
|
|
|
|
/*-- cleanup --*/ |
9737
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
9738
|
|
|
|
|
|
|
|
9739
|
0
|
|
|
|
|
|
} break;} |
9740
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
9741
|
|
|
|
|
|
|
} |
9742
|
|
|
|
|
|
|
} |
9743
|
|
|
|
|
|
|
} |
9744
|
|
|
|
|
|
|
|
9745
|
|
|
|
|
|
|
|
9746
|
|
|
|
|
|
|
|
9747
|
|
|
|
|
|
|
|
9748
|
2
|
|
|
|
|
|
void pdl_kmedoids_free(pdl_trans *__tr ) { |
9749
|
|
|
|
|
|
|
int __dim; |
9750
|
2
|
|
|
|
|
|
pdl_kmedoids_struct *__privtrans = (pdl_kmedoids_struct *) __tr; |
9751
|
|
|
|
|
|
|
|
9752
|
|
|
|
|
|
|
{ |
9753
|
|
|
|
|
|
|
|
9754
|
2
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
9755
|
|
|
|
|
|
|
|
9756
|
2
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
9757
|
2
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
9758
|
|
|
|
|
|
|
;;;;; |
9759
|
|
|
|
|
|
|
} |
9760
|
|
|
|
|
|
|
|
9761
|
|
|
|
|
|
|
} |
9762
|
2
|
|
|
|
|
|
} |
9763
|
|
|
|
|
|
|
|
9764
|
|
|
|
|
|
|
|
9765
|
|
|
|
|
|
|
|
9766
|
|
|
|
|
|
|
|
9767
|
|
|
|
|
|
|
static char pdl_kmedoids_vtable_flags[] = |
9768
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,0,0,0}; |
9769
|
|
|
|
|
|
|
pdl_transvtable pdl_kmedoids_vtable = { |
9770
|
|
|
|
|
|
|
0,0, 3, 6, pdl_kmedoids_vtable_flags, |
9771
|
|
|
|
|
|
|
pdl_kmedoids_redodims, pdl_kmedoids_readdata, NULL, |
9772
|
|
|
|
|
|
|
pdl_kmedoids_free,NULL,NULL,pdl_kmedoids_copy, |
9773
|
|
|
|
|
|
|
sizeof(pdl_kmedoids_struct),"pdl_kmedoids_vtable" |
9774
|
|
|
|
|
|
|
}; |
9775
|
|
|
|
|
|
|
|
9776
|
|
|
|
|
|
|
typedef struct pdl_treecluster_struct { |
9777
|
|
|
|
|
|
|
PDL_TRANS_START(5); |
9778
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_tree_2;PDL_Indx __inc_tree_n;PDL_Indx __inc_lnkdist_n;PDL_Indx __d_size;PDL_Indx __2_size;PDL_Indx __n_size; |
9779
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
9780
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
9781
|
|
|
|
|
|
|
} pdl_treecluster_struct; |
9782
|
|
|
|
|
|
|
|
9783
|
8
|
|
|
|
|
|
void pdl_treecluster_redodims(pdl_trans *__tr ) { |
9784
|
|
|
|
|
|
|
int __dim; |
9785
|
8
|
|
|
|
|
|
pdl_treecluster_struct *__privtrans = (pdl_treecluster_struct *) __tr; |
9786
|
|
|
|
|
|
|
|
9787
|
|
|
|
|
|
|
{ |
9788
|
|
|
|
|
|
|
PDL_Indx __creating[5]; |
9789
|
8
|
|
|
|
|
|
__privtrans->__d_size = -1; |
9790
|
8
|
|
|
|
|
|
__privtrans->__2_size = -1; |
9791
|
8
|
|
|
|
|
|
__privtrans->__n_size = -1; |
9792
|
8
|
|
|
|
|
|
__creating[0] = 0; |
9793
|
8
|
|
|
|
|
|
__creating[1] = 0; |
9794
|
8
|
|
|
|
|
|
__creating[2] = 0; |
9795
|
8
|
50
|
|
|
|
|
__creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]); |
|
|
0
|
|
|
|
|
|
9796
|
8
|
50
|
|
|
|
|
__creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]); |
|
|
0
|
|
|
|
|
|
9797
|
|
|
|
|
|
|
{ |
9798
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
9799
|
|
|
|
|
|
|
|
9800
|
8
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
9801
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
9802
|
8
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9803
|
8
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9804
|
|
|
|
|
|
|
|
9805
|
8
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9806
|
8
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9807
|
|
|
|
|
|
|
|
9808
|
8
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9809
|
8
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9810
|
|
|
|
|
|
|
|
9811
|
8
|
50
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9812
|
8
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9813
|
|
|
|
|
|
|
|
9814
|
8
|
50
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9815
|
8
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9816
|
|
|
|
|
|
|
|
9817
|
8
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9818
|
8
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9819
|
8
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9820
|
8
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9821
|
8
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9822
|
8
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9823
|
8
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9824
|
8
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9825
|
|
|
|
|
|
|
|
9826
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9827
|
8
|
|
|
|
|
|
} } break; case PDL_S: { |
9828
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9829
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9830
|
|
|
|
|
|
|
|
9831
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9832
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9833
|
|
|
|
|
|
|
|
9834
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9835
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9836
|
|
|
|
|
|
|
|
9837
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9838
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9839
|
|
|
|
|
|
|
|
9840
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9841
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9842
|
|
|
|
|
|
|
|
9843
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9844
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9845
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9846
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9847
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9848
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9849
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9850
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9851
|
|
|
|
|
|
|
|
9852
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9853
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
9854
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9855
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9856
|
|
|
|
|
|
|
|
9857
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9858
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9859
|
|
|
|
|
|
|
|
9860
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9861
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9862
|
|
|
|
|
|
|
|
9863
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9864
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9865
|
|
|
|
|
|
|
|
9866
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9867
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9868
|
|
|
|
|
|
|
|
9869
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9870
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9871
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9872
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9873
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9874
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9875
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9876
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9877
|
|
|
|
|
|
|
|
9878
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9879
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
9880
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9881
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9882
|
|
|
|
|
|
|
|
9883
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9884
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9885
|
|
|
|
|
|
|
|
9886
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9887
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9888
|
|
|
|
|
|
|
|
9889
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9890
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9891
|
|
|
|
|
|
|
|
9892
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9893
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9894
|
|
|
|
|
|
|
|
9895
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9896
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9897
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9898
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9899
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9900
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9901
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9902
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9903
|
|
|
|
|
|
|
|
9904
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9905
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
9906
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9907
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9908
|
|
|
|
|
|
|
|
9909
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9910
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9911
|
|
|
|
|
|
|
|
9912
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9913
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9914
|
|
|
|
|
|
|
|
9915
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9916
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9917
|
|
|
|
|
|
|
|
9918
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9919
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9920
|
|
|
|
|
|
|
|
9921
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9922
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9923
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9924
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9925
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9926
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9927
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9928
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9929
|
|
|
|
|
|
|
|
9930
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9931
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
9932
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9933
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9934
|
|
|
|
|
|
|
|
9935
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9936
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9937
|
|
|
|
|
|
|
|
9938
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9939
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9940
|
|
|
|
|
|
|
|
9941
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9942
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9943
|
|
|
|
|
|
|
|
9944
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9945
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9946
|
|
|
|
|
|
|
|
9947
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9948
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9949
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9950
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9951
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9952
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9953
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9954
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9955
|
|
|
|
|
|
|
|
9956
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9957
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
9958
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9959
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9960
|
|
|
|
|
|
|
|
9961
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9962
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9963
|
|
|
|
|
|
|
|
9964
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9965
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9966
|
|
|
|
|
|
|
|
9967
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9968
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9969
|
|
|
|
|
|
|
|
9970
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9971
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9972
|
|
|
|
|
|
|
|
9973
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
9974
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
9975
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
9976
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
9977
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
9978
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
9979
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
9980
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
9981
|
|
|
|
|
|
|
|
9982
|
|
|
|
|
|
|
PDL_COMMENT("none") |
9983
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
9984
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
9985
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
9986
|
|
|
|
|
|
|
|
9987
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
9988
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
9989
|
|
|
|
|
|
|
|
9990
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
9991
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
9992
|
|
|
|
|
|
|
|
9993
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
9994
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
9995
|
|
|
|
|
|
|
|
9996
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
9997
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
9998
|
|
|
|
|
|
|
|
9999
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10000
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10001
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10002
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10003
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10004
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10005
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10006
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10007
|
|
|
|
|
|
|
|
10008
|
|
|
|
|
|
|
PDL_COMMENT("none") |
10009
|
0
|
|
|
|
|
|
} break;} |
10010
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
10011
|
|
|
|
|
|
|
} |
10012
|
|
|
|
|
|
|
} |
10013
|
|
|
|
|
|
|
{ |
10014
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","tree","lnkdist"}; |
10015
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,2,1}; |
10016
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::treecluster"; |
10017
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
10018
|
|
|
|
|
|
|
__funcname, __parnames, 5 |
10019
|
|
|
|
|
|
|
}; |
10020
|
|
|
|
|
|
|
|
10021
|
8
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
10022
|
|
|
|
|
|
|
__realdims,__creating,5, |
10023
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
10024
|
8
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
10025
|
|
|
|
|
|
|
0 ); |
10026
|
|
|
|
|
|
|
} |
10027
|
8
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
10028
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
10029
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
10030
|
|
|
|
|
|
|
} |
10031
|
8
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
10032
|
8
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
10033
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
10034
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
10035
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10036
|
|
|
|
|
|
|
} |
10037
|
|
|
|
|
|
|
} |
10038
|
8
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
10039
|
8
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
10040
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
10041
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
10042
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10043
|
|
|
|
|
|
|
} |
10044
|
|
|
|
|
|
|
} |
10045
|
8
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
10046
|
8
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
10047
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
10048
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
10049
|
|
|
|
|
|
|
} |
10050
|
8
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
10051
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
10052
|
8
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
10053
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
10054
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10055
|
|
|
|
|
|
|
} |
10056
|
|
|
|
|
|
|
} |
10057
|
8
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
10058
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
10059
|
8
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
10060
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
10061
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10062
|
|
|
|
|
|
|
} |
10063
|
|
|
|
|
|
|
} |
10064
|
8
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
10065
|
8
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
10066
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
10067
|
|
|
|
|
|
|
} |
10068
|
8
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
10069
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
10070
|
8
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
10071
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
10072
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10073
|
|
|
|
|
|
|
} |
10074
|
|
|
|
|
|
|
} |
10075
|
8
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
10076
|
8
|
50
|
|
|
|
|
if(!__creating[3]) { |
10077
|
8
|
50
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 2) { |
10078
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1; |
|
|
0
|
|
|
|
|
|
10079
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
10080
|
|
|
|
|
|
|
} |
10081
|
8
|
50
|
|
|
|
|
if(__privtrans->__2_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
10082
|
8
|
|
|
|
|
|
__privtrans->__2_size = ((__privtrans->pdls[3]))->dims[0]; |
10083
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
10084
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
10085
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10086
|
|
|
|
|
|
|
} |
10087
|
|
|
|
|
|
|
} |
10088
|
8
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
10089
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[3]))->dims[1]; |
10090
|
8
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[3]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
10091
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[1] != 1) { |
10092
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10093
|
|
|
|
|
|
|
} |
10094
|
|
|
|
|
|
|
} |
10095
|
8
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
10096
|
|
|
|
|
|
|
} else { |
10097
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__2_size;dims[1] = __privtrans->__n_size; |
10098
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0); |
10099
|
8
|
50
|
|
|
|
|
}if(!__creating[4]) { |
10100
|
8
|
50
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 1) { |
10101
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
10102
|
|
|
|
|
|
|
} |
10103
|
8
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
10104
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[4]))->dims[0]; |
10105
|
8
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
10106
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
10107
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treecluster:" "Wrong dims\n"); |
10108
|
|
|
|
|
|
|
} |
10109
|
|
|
|
|
|
|
} |
10110
|
8
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
10111
|
|
|
|
|
|
|
} else { |
10112
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
10113
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0); |
10114
|
|
|
|
|
|
|
} |
10115
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
10116
|
8
|
|
|
|
|
|
void *hdrp = NULL; |
10117
|
8
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
10118
|
8
|
|
|
|
|
|
SV *hdr_copy = NULL; |
10119
|
8
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
10120
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
10121
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
10122
|
|
|
|
|
|
|
) { |
10123
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
10124
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
10125
|
|
|
|
|
|
|
} |
10126
|
8
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
10127
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
10128
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
10129
|
|
|
|
|
|
|
) { |
10130
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
10131
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
10132
|
|
|
|
|
|
|
} |
10133
|
8
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
10134
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
10135
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
10136
|
|
|
|
|
|
|
) { |
10137
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
10138
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
10139
|
|
|
|
|
|
|
} |
10140
|
8
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
10141
|
8
|
50
|
|
|
|
|
!__creating[3] && |
10142
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
10143
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
10144
|
|
|
|
|
|
|
) { |
10145
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
10146
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
10147
|
|
|
|
|
|
|
} |
10148
|
8
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
10149
|
8
|
50
|
|
|
|
|
!__creating[4] && |
10150
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
10151
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
10152
|
|
|
|
|
|
|
) { |
10153
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
10154
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
10155
|
|
|
|
|
|
|
} |
10156
|
8
|
50
|
|
|
|
|
if (hdrp) { |
10157
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
10158
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
10159
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
10160
|
|
|
|
|
|
|
int count; |
10161
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
10162
|
0
|
|
|
|
|
|
dSP; |
10163
|
0
|
|
|
|
|
|
ENTER ; |
10164
|
0
|
|
|
|
|
|
SAVETMPS ; |
10165
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
10166
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
10167
|
0
|
|
|
|
|
|
PUTBACK ; |
10168
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
10169
|
0
|
|
|
|
|
|
SPAGAIN ; |
10170
|
0
|
0
|
|
|
|
|
if(count != 1) |
10171
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
10172
|
|
|
|
|
|
|
|
10173
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
10174
|
|
|
|
|
|
|
|
10175
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
10176
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
10177
|
|
|
|
|
|
|
} |
10178
|
|
|
|
|
|
|
|
10179
|
0
|
0
|
|
|
|
|
FREETMPS ; |
10180
|
0
|
|
|
|
|
|
LEAVE ; |
10181
|
|
|
|
|
|
|
|
10182
|
|
|
|
|
|
|
|
10183
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
10184
|
|
|
|
|
|
|
|
10185
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[3]->hdrsv != hdrp ){ |
10186
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
10187
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv ); |
10188
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
10189
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
10190
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->hdrsv = hdr_copy; |
10191
|
|
|
|
|
|
|
} |
10192
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
10193
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->state |= PDL_HDRCPY; |
10194
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[4]->hdrsv != hdrp ){ |
10195
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
10196
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv ); |
10197
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
10198
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
10199
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->hdrsv = hdr_copy; |
10200
|
|
|
|
|
|
|
} |
10201
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
10202
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->state |= PDL_HDRCPY; |
10203
|
|
|
|
|
|
|
|
10204
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
10205
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
10206
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
10207
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
10208
|
8
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
10209
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
10210
|
8
|
50
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
10211
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
10212
|
8
|
50
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
10213
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
10214
|
8
|
50
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
10215
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
10216
|
8
|
50
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
10217
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
10218
|
8
|
50
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
10219
|
0
|
|
|
|
|
|
__privtrans->__inc_tree_2 = 0; else |
10220
|
8
|
50
|
|
|
|
|
__privtrans->__inc_tree_2 = __privtrans->pdls[3]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 1 || __privtrans->pdls[3]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
10221
|
0
|
|
|
|
|
|
__privtrans->__inc_tree_n = 0; else |
10222
|
8
|
50
|
|
|
|
|
__privtrans->__inc_tree_n = __privtrans->pdls[3]->dimincs[1];if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
10223
|
0
|
|
|
|
|
|
__privtrans->__inc_lnkdist_n = 0; else |
10224
|
8
|
|
|
|
|
|
__privtrans->__inc_lnkdist_n = __privtrans->pdls[4]->dimincs[0]; __privtrans->__ddone = 1; |
10225
|
|
|
|
|
|
|
} |
10226
|
8
|
|
|
|
|
|
} |
10227
|
|
|
|
|
|
|
|
10228
|
|
|
|
|
|
|
|
10229
|
0
|
|
|
|
|
|
pdl_trans * pdl_treecluster_copy(pdl_trans *__tr ) { |
10230
|
|
|
|
|
|
|
int __dim; |
10231
|
0
|
|
|
|
|
|
pdl_treecluster_struct *__privtrans = (pdl_treecluster_struct *) __tr; |
10232
|
|
|
|
|
|
|
|
10233
|
|
|
|
|
|
|
{ |
10234
|
0
|
|
|
|
|
|
pdl_treecluster_struct *__copy = malloc(sizeof(pdl_treecluster_struct)); |
10235
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
10236
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
10237
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
10238
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
10239
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
10240
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
10241
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
10242
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
10243
|
|
|
|
|
|
|
{int i; |
10244
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
10245
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
10246
|
|
|
|
|
|
|
} |
10247
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
10248
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
10249
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_tree_2=__copy->__inc_tree_2;__privtrans->__inc_tree_n=__copy->__inc_tree_n;__privtrans->__inc_lnkdist_n=__copy->__inc_lnkdist_n;__copy->__d_size=__privtrans->__d_size;__copy->__2_size=__privtrans->__2_size;__copy->__n_size=__privtrans->__n_size; |
10250
|
|
|
|
|
|
|
} |
10251
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
10252
|
|
|
|
|
|
|
} |
10253
|
|
|
|
|
|
|
} |
10254
|
|
|
|
|
|
|
|
10255
|
|
|
|
|
|
|
|
10256
|
8
|
|
|
|
|
|
void pdl_treecluster_readdata(pdl_trans *__tr ) { |
10257
|
|
|
|
|
|
|
int __dim; |
10258
|
8
|
|
|
|
|
|
pdl_treecluster_struct *__privtrans = (pdl_treecluster_struct *) __tr; |
10259
|
|
|
|
|
|
|
|
10260
|
|
|
|
|
|
|
{ |
10261
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
10262
|
|
|
|
|
|
|
|
10263
|
8
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
10264
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
10265
|
8
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10266
|
8
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10267
|
|
|
|
|
|
|
|
10268
|
8
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10269
|
8
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10270
|
|
|
|
|
|
|
|
10271
|
8
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10272
|
8
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10273
|
|
|
|
|
|
|
|
10274
|
8
|
50
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10275
|
8
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10276
|
|
|
|
|
|
|
|
10277
|
8
|
50
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10278
|
8
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10279
|
|
|
|
|
|
|
|
10280
|
8
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10281
|
8
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10282
|
8
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10283
|
8
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10284
|
8
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10285
|
8
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10286
|
8
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10287
|
8
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10288
|
|
|
|
|
|
|
|
10289
|
|
|
|
|
|
|
|
10290
|
8
|
|
|
|
|
|
int transpose = 0; |
10291
|
8
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10292
|
8
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10293
|
8
|
|
|
|
|
|
double **distpp = NULL; |
10294
|
8
|
|
|
|
|
|
Node *nod = NULL; |
10295
|
8
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10296
|
|
|
|
|
|
|
|
10297
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10298
|
8
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10299
|
8
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10300
|
8
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10301
|
8
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10302
|
8
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10303
|
8
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10304
|
8
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10305
|
8
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10306
|
8
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10307
|
8
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10308
|
8
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10309
|
8
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10310
|
8
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10311
|
8
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10312
|
8
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10313
|
8
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10314
|
8
|
|
|
|
|
|
data_datap += __offsp[0]; |
10315
|
8
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10316
|
8
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10317
|
8
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10318
|
8
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10319
|
16
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
10320
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10321
|
8
|
|
|
|
|
|
__tind2++ |
10322
|
8
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10323
|
8
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10324
|
8
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10325
|
8
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10326
|
8
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10327
|
|
|
|
|
|
|
) |
10328
|
|
|
|
|
|
|
{ |
10329
|
16
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
10330
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10331
|
8
|
|
|
|
|
|
__tind1++ |
10332
|
8
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10333
|
8
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10334
|
8
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10335
|
8
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10336
|
8
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10337
|
|
|
|
|
|
|
) |
10338
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10339
|
8
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10340
|
8
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10341
|
8
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10342
|
16
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10343
|
|
|
|
|
|
|
NULL); |
10344
|
|
|
|
|
|
|
|
10345
|
8
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10346
|
8
|
50
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
50
|
|
|
|
|
|
10347
|
8
|
50
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
50
|
|
|
|
|
|
10348
|
8
|
50
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10349
|
|
|
|
|
|
|
|
10350
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10351
|
|
|
|
|
|
|
} |
10352
|
|
|
|
|
|
|
} |
10353
|
8
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10354
|
8
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10355
|
8
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10356
|
8
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10357
|
8
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10358
|
8
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10359
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10360
|
8
|
50
|
|
|
|
|
if (datapp) free(datapp); |
10361
|
8
|
50
|
|
|
|
|
if (maskpp) free(maskpp); |
10362
|
8
|
50
|
|
|
|
|
if (nod) free(nod); |
10363
|
|
|
|
|
|
|
|
10364
|
8
|
|
|
|
|
|
} } break; case PDL_S: { |
10365
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10366
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10367
|
|
|
|
|
|
|
|
10368
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10369
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10370
|
|
|
|
|
|
|
|
10371
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10372
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10373
|
|
|
|
|
|
|
|
10374
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10375
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10376
|
|
|
|
|
|
|
|
10377
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10378
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10379
|
|
|
|
|
|
|
|
10380
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10381
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10382
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10383
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10384
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10385
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10386
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10387
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10388
|
|
|
|
|
|
|
|
10389
|
|
|
|
|
|
|
|
10390
|
0
|
|
|
|
|
|
int transpose = 0; |
10391
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10392
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10393
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10394
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10395
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10396
|
|
|
|
|
|
|
|
10397
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10398
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10399
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10400
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10401
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10402
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10403
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10404
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10405
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10406
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10407
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10408
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10409
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10410
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10411
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10412
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10413
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10414
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
10415
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10416
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10417
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10418
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10419
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
10420
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10421
|
0
|
|
|
|
|
|
__tind2++ |
10422
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10423
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10424
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10425
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10426
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10427
|
|
|
|
|
|
|
) |
10428
|
|
|
|
|
|
|
{ |
10429
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
10430
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10431
|
0
|
|
|
|
|
|
__tind1++ |
10432
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10433
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10434
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10435
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10436
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10437
|
|
|
|
|
|
|
) |
10438
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10439
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10440
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10441
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10442
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10443
|
|
|
|
|
|
|
NULL); |
10444
|
|
|
|
|
|
|
|
10445
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10446
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10447
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10448
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10449
|
|
|
|
|
|
|
|
10450
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10451
|
|
|
|
|
|
|
} |
10452
|
|
|
|
|
|
|
} |
10453
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10454
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10455
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10456
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10457
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10458
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10459
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10460
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
10461
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
10462
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
10463
|
|
|
|
|
|
|
|
10464
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
10465
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10466
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10467
|
|
|
|
|
|
|
|
10468
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10469
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10470
|
|
|
|
|
|
|
|
10471
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10472
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10473
|
|
|
|
|
|
|
|
10474
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10475
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10476
|
|
|
|
|
|
|
|
10477
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10478
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10479
|
|
|
|
|
|
|
|
10480
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10481
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10482
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10483
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10484
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10485
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10486
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10487
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10488
|
|
|
|
|
|
|
|
10489
|
|
|
|
|
|
|
|
10490
|
0
|
|
|
|
|
|
int transpose = 0; |
10491
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10492
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10493
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10494
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10495
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10496
|
|
|
|
|
|
|
|
10497
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10498
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10499
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10500
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10501
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10502
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10503
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10504
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10505
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10506
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10507
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10508
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10509
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10510
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10511
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10512
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10513
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10514
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
10515
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10516
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10517
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10518
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10519
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
10520
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10521
|
0
|
|
|
|
|
|
__tind2++ |
10522
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10523
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10524
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10525
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10526
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10527
|
|
|
|
|
|
|
) |
10528
|
|
|
|
|
|
|
{ |
10529
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
10530
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10531
|
0
|
|
|
|
|
|
__tind1++ |
10532
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10533
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10534
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10535
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10536
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10537
|
|
|
|
|
|
|
) |
10538
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10539
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10540
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10541
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10542
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10543
|
|
|
|
|
|
|
NULL); |
10544
|
|
|
|
|
|
|
|
10545
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10546
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10547
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10548
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10549
|
|
|
|
|
|
|
|
10550
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10551
|
|
|
|
|
|
|
} |
10552
|
|
|
|
|
|
|
} |
10553
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10554
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10555
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10556
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10557
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10558
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10559
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10560
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
10561
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
10562
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
10563
|
|
|
|
|
|
|
|
10564
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
10565
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10566
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10567
|
|
|
|
|
|
|
|
10568
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10569
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10570
|
|
|
|
|
|
|
|
10571
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10572
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10573
|
|
|
|
|
|
|
|
10574
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10575
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10576
|
|
|
|
|
|
|
|
10577
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10578
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10579
|
|
|
|
|
|
|
|
10580
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10581
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10583
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10584
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10585
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10586
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10587
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10588
|
|
|
|
|
|
|
|
10589
|
|
|
|
|
|
|
|
10590
|
0
|
|
|
|
|
|
int transpose = 0; |
10591
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10592
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10593
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10594
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10595
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10596
|
|
|
|
|
|
|
|
10597
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10598
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10599
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10600
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10601
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10602
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10603
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10604
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10605
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10606
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10607
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10608
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10609
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10610
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10611
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10612
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10613
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10614
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
10615
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10616
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10617
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10618
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10619
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
10620
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10621
|
0
|
|
|
|
|
|
__tind2++ |
10622
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10623
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10624
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10625
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10626
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10627
|
|
|
|
|
|
|
) |
10628
|
|
|
|
|
|
|
{ |
10629
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
10630
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10631
|
0
|
|
|
|
|
|
__tind1++ |
10632
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10633
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10634
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10635
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10636
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10637
|
|
|
|
|
|
|
) |
10638
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10639
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10640
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10641
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10642
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10643
|
|
|
|
|
|
|
NULL); |
10644
|
|
|
|
|
|
|
|
10645
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10646
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10647
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10648
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10649
|
|
|
|
|
|
|
|
10650
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10651
|
|
|
|
|
|
|
} |
10652
|
|
|
|
|
|
|
} |
10653
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10654
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10655
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10656
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10657
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10658
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10659
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10660
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
10661
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
10662
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
10663
|
|
|
|
|
|
|
|
10664
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
10665
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10666
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10667
|
|
|
|
|
|
|
|
10668
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10669
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10670
|
|
|
|
|
|
|
|
10671
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10672
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10673
|
|
|
|
|
|
|
|
10674
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10675
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10676
|
|
|
|
|
|
|
|
10677
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10678
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10679
|
|
|
|
|
|
|
|
10680
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10681
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10682
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10683
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10684
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10685
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10686
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10687
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10688
|
|
|
|
|
|
|
|
10689
|
|
|
|
|
|
|
|
10690
|
0
|
|
|
|
|
|
int transpose = 0; |
10691
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10692
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10693
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10694
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10695
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10696
|
|
|
|
|
|
|
|
10697
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10698
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10699
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10700
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10701
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10702
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10703
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10704
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10705
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10706
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10707
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10708
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10709
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10710
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10711
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10712
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10713
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10714
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
10715
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10716
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10717
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10718
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10719
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
10720
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10721
|
0
|
|
|
|
|
|
__tind2++ |
10722
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10723
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10724
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10725
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10726
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10727
|
|
|
|
|
|
|
) |
10728
|
|
|
|
|
|
|
{ |
10729
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
10730
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10731
|
0
|
|
|
|
|
|
__tind1++ |
10732
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10733
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10734
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10735
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10736
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10737
|
|
|
|
|
|
|
) |
10738
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10739
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10740
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10741
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10742
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10743
|
|
|
|
|
|
|
NULL); |
10744
|
|
|
|
|
|
|
|
10745
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10746
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10747
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10748
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10749
|
|
|
|
|
|
|
|
10750
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10751
|
|
|
|
|
|
|
} |
10752
|
|
|
|
|
|
|
} |
10753
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10754
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10755
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10756
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10757
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10758
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10759
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10760
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
10761
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
10762
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
10763
|
|
|
|
|
|
|
|
10764
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
10765
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10766
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10767
|
|
|
|
|
|
|
|
10768
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10769
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10770
|
|
|
|
|
|
|
|
10771
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10772
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10773
|
|
|
|
|
|
|
|
10774
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10775
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10776
|
|
|
|
|
|
|
|
10777
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10778
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10779
|
|
|
|
|
|
|
|
10780
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10781
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10782
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10783
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10784
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10785
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10786
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10787
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10788
|
|
|
|
|
|
|
|
10789
|
|
|
|
|
|
|
|
10790
|
0
|
|
|
|
|
|
int transpose = 0; |
10791
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10792
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10793
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10794
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10795
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10796
|
|
|
|
|
|
|
|
10797
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10798
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10799
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10800
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10801
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10802
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10803
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10804
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10805
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10806
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10807
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10808
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10809
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10810
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10811
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10812
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10813
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10814
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
10815
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10816
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10817
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10818
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10819
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
10820
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10821
|
0
|
|
|
|
|
|
__tind2++ |
10822
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10823
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10824
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10825
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10826
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10827
|
|
|
|
|
|
|
) |
10828
|
|
|
|
|
|
|
{ |
10829
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
10830
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10831
|
0
|
|
|
|
|
|
__tind1++ |
10832
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10833
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10834
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10835
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10836
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10837
|
|
|
|
|
|
|
) |
10838
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10839
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10840
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10841
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10842
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10843
|
|
|
|
|
|
|
NULL); |
10844
|
|
|
|
|
|
|
|
10845
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10846
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10847
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10848
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10849
|
|
|
|
|
|
|
|
10850
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10851
|
|
|
|
|
|
|
} |
10852
|
|
|
|
|
|
|
} |
10853
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10854
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10855
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10856
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10857
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10858
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10859
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10860
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
10861
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
10862
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
10863
|
|
|
|
|
|
|
|
10864
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
10865
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10866
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10867
|
|
|
|
|
|
|
|
10868
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10869
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10870
|
|
|
|
|
|
|
|
10871
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10872
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10873
|
|
|
|
|
|
|
|
10874
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10875
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10876
|
|
|
|
|
|
|
|
10877
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10878
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10879
|
|
|
|
|
|
|
|
10880
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10881
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10882
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10883
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10884
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10885
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10886
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10887
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10888
|
|
|
|
|
|
|
|
10889
|
|
|
|
|
|
|
|
10890
|
0
|
|
|
|
|
|
int transpose = 0; |
10891
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10892
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10893
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10894
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10895
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10896
|
|
|
|
|
|
|
|
10897
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10898
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10899
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
10900
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
10901
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
10902
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
10903
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
10904
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
10905
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
10906
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
10907
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
10908
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
10909
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
10910
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
10911
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
10912
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
10913
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
10914
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
10915
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
10916
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
10917
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
10918
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
10919
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
10920
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
10921
|
0
|
|
|
|
|
|
__tind2++ |
10922
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
10923
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
10924
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
10925
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
10926
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
10927
|
|
|
|
|
|
|
) |
10928
|
|
|
|
|
|
|
{ |
10929
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
10930
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
10931
|
0
|
|
|
|
|
|
__tind1++ |
10932
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
10933
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
10934
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
10935
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
10936
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
10937
|
|
|
|
|
|
|
) |
10938
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
10939
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
10940
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
10941
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
10942
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
10943
|
|
|
|
|
|
|
NULL); |
10944
|
|
|
|
|
|
|
|
10945
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
10946
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10947
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
10948
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
10949
|
|
|
|
|
|
|
|
10950
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
10951
|
|
|
|
|
|
|
} |
10952
|
|
|
|
|
|
|
} |
10953
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
10954
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
10955
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
10956
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
10957
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
10958
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
10959
|
|
|
|
|
|
|
/*-- cleanup --*/ |
10960
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
10961
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
10962
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
10963
|
|
|
|
|
|
|
|
10964
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
10965
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
10966
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
10967
|
|
|
|
|
|
|
|
10968
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
10969
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
10970
|
|
|
|
|
|
|
|
10971
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
10972
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
10973
|
|
|
|
|
|
|
|
10974
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
10975
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
10976
|
|
|
|
|
|
|
|
10977
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
10978
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
10979
|
|
|
|
|
|
|
|
10980
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
10981
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
10982
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
10983
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
10984
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
10985
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
10986
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
10987
|
0
|
|
|
|
|
|
register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
10988
|
|
|
|
|
|
|
|
10989
|
|
|
|
|
|
|
|
10990
|
0
|
|
|
|
|
|
int transpose = 0; |
10991
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
10992
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
10993
|
0
|
|
|
|
|
|
double **distpp = NULL; |
10994
|
0
|
|
|
|
|
|
Node *nod = NULL; |
10995
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
10996
|
|
|
|
|
|
|
|
10997
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
10998
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
10999
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
11000
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
11001
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
11002
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
11003
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
11004
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
11005
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
11006
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
11007
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
11008
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
11009
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
11010
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
11011
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
11012
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
11013
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
11014
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
11015
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
11016
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
11017
|
0
|
|
|
|
|
|
tree_datap += __offsp[3]; |
11018
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[4]; |
11019
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
11020
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
11021
|
0
|
|
|
|
|
|
__tind2++ |
11022
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
11023
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
11024
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
11025
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
11026
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
11027
|
|
|
|
|
|
|
) |
11028
|
|
|
|
|
|
|
{ |
11029
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
11030
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
11031
|
0
|
|
|
|
|
|
__tind1++ |
11032
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
11033
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
11034
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
11035
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_3 |
11036
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_4 |
11037
|
|
|
|
|
|
|
) |
11038
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
11039
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
11040
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
11041
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
11042
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
11043
|
|
|
|
|
|
|
NULL); |
11044
|
|
|
|
|
|
|
|
11045
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
11046
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11047
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11048
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
11049
|
|
|
|
|
|
|
|
11050
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
11051
|
|
|
|
|
|
|
} |
11052
|
|
|
|
|
|
|
} |
11053
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
11054
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
11055
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
11056
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
11057
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
11058
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
11059
|
|
|
|
|
|
|
/*-- cleanup --*/ |
11060
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
11061
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
11062
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
11063
|
|
|
|
|
|
|
|
11064
|
0
|
|
|
|
|
|
} break;} |
11065
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
11066
|
|
|
|
|
|
|
} |
11067
|
|
|
|
|
|
|
} |
11068
|
|
|
|
|
|
|
} |
11069
|
|
|
|
|
|
|
|
11070
|
|
|
|
|
|
|
|
11071
|
|
|
|
|
|
|
|
11072
|
|
|
|
|
|
|
|
11073
|
8
|
|
|
|
|
|
void pdl_treecluster_free(pdl_trans *__tr ) { |
11074
|
|
|
|
|
|
|
int __dim; |
11075
|
8
|
|
|
|
|
|
pdl_treecluster_struct *__privtrans = (pdl_treecluster_struct *) __tr; |
11076
|
|
|
|
|
|
|
|
11077
|
|
|
|
|
|
|
{ |
11078
|
|
|
|
|
|
|
|
11079
|
8
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
11080
|
8
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
11081
|
8
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
11082
|
8
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
11083
|
|
|
|
|
|
|
;;;;;;;;;;;; |
11084
|
|
|
|
|
|
|
} |
11085
|
|
|
|
|
|
|
|
11086
|
|
|
|
|
|
|
} |
11087
|
8
|
|
|
|
|
|
} |
11088
|
|
|
|
|
|
|
|
11089
|
|
|
|
|
|
|
|
11090
|
|
|
|
|
|
|
|
11091
|
|
|
|
|
|
|
|
11092
|
|
|
|
|
|
|
static char pdl_treecluster_vtable_flags[] = |
11093
|
|
|
|
|
|
|
{ 0,0,0,0,0}; |
11094
|
|
|
|
|
|
|
pdl_transvtable pdl_treecluster_vtable = { |
11095
|
|
|
|
|
|
|
0,0, 3, 5, pdl_treecluster_vtable_flags, |
11096
|
|
|
|
|
|
|
pdl_treecluster_redodims, pdl_treecluster_readdata, NULL, |
11097
|
|
|
|
|
|
|
pdl_treecluster_free,NULL,NULL,pdl_treecluster_copy, |
11098
|
|
|
|
|
|
|
sizeof(pdl_treecluster_struct),"pdl_treecluster_vtable" |
11099
|
|
|
|
|
|
|
}; |
11100
|
|
|
|
|
|
|
|
11101
|
|
|
|
|
|
|
typedef struct pdl_treeclusterd_struct { |
11102
|
|
|
|
|
|
|
PDL_TRANS_START(6); |
11103
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_distances_n0;PDL_Indx __inc_distances_n1;PDL_Indx __inc_tree_2;PDL_Indx __inc_tree_n;PDL_Indx __inc_lnkdist_n;PDL_Indx __n_size;PDL_Indx __d_size;PDL_Indx __2_size; |
11104
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
11105
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
11106
|
|
|
|
|
|
|
} pdl_treeclusterd_struct; |
11107
|
|
|
|
|
|
|
|
11108
|
0
|
|
|
|
|
|
void pdl_treeclusterd_redodims(pdl_trans *__tr ) { |
11109
|
|
|
|
|
|
|
int __dim; |
11110
|
0
|
|
|
|
|
|
pdl_treeclusterd_struct *__privtrans = (pdl_treeclusterd_struct *) __tr; |
11111
|
|
|
|
|
|
|
|
11112
|
|
|
|
|
|
|
{ |
11113
|
|
|
|
|
|
|
PDL_Indx __creating[6]; |
11114
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
11115
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
11116
|
0
|
|
|
|
|
|
__privtrans->__2_size = -1; |
11117
|
0
|
|
|
|
|
|
__creating[0] = 0; |
11118
|
0
|
|
|
|
|
|
__creating[1] = 0; |
11119
|
0
|
|
|
|
|
|
__creating[2] = 0; |
11120
|
0
|
|
|
|
|
|
__creating[3] = 0; |
11121
|
0
|
0
|
|
|
|
|
__creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]); |
|
|
0
|
|
|
|
|
|
11122
|
0
|
0
|
|
|
|
|
__creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]); |
|
|
0
|
|
|
|
|
|
11123
|
|
|
|
|
|
|
{ |
11124
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
11125
|
|
|
|
|
|
|
|
11126
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
11127
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
11128
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11129
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11130
|
|
|
|
|
|
|
|
11131
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11132
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11133
|
|
|
|
|
|
|
|
11134
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11135
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11136
|
|
|
|
|
|
|
|
11137
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11138
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11139
|
|
|
|
|
|
|
|
11140
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11141
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11142
|
|
|
|
|
|
|
|
11143
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11144
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11145
|
|
|
|
|
|
|
|
11146
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11147
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11148
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11149
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11150
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11151
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11152
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11153
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11154
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11155
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11156
|
|
|
|
|
|
|
|
11157
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11158
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
11159
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11160
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11161
|
|
|
|
|
|
|
|
11162
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11163
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11164
|
|
|
|
|
|
|
|
11165
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11166
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11167
|
|
|
|
|
|
|
|
11168
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11169
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11170
|
|
|
|
|
|
|
|
11171
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11172
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11173
|
|
|
|
|
|
|
|
11174
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11175
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11176
|
|
|
|
|
|
|
|
11177
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11178
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11179
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11180
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11181
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11182
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11183
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11184
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11185
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11186
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11187
|
|
|
|
|
|
|
|
11188
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11189
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
11190
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11191
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11192
|
|
|
|
|
|
|
|
11193
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11194
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11195
|
|
|
|
|
|
|
|
11196
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11197
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11198
|
|
|
|
|
|
|
|
11199
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11200
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11201
|
|
|
|
|
|
|
|
11202
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11203
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11204
|
|
|
|
|
|
|
|
11205
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11206
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11207
|
|
|
|
|
|
|
|
11208
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11209
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11210
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11211
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11212
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11213
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11214
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11215
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11216
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11217
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11218
|
|
|
|
|
|
|
|
11219
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11220
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
11221
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11222
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11223
|
|
|
|
|
|
|
|
11224
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11225
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11226
|
|
|
|
|
|
|
|
11227
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11228
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11229
|
|
|
|
|
|
|
|
11230
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11231
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11232
|
|
|
|
|
|
|
|
11233
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11234
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11235
|
|
|
|
|
|
|
|
11236
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11237
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11238
|
|
|
|
|
|
|
|
11239
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11240
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11241
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11242
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11243
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11244
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11245
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11246
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11247
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11248
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11249
|
|
|
|
|
|
|
|
11250
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11251
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
11252
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11253
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11254
|
|
|
|
|
|
|
|
11255
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11256
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11257
|
|
|
|
|
|
|
|
11258
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11259
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11260
|
|
|
|
|
|
|
|
11261
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11262
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11263
|
|
|
|
|
|
|
|
11264
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11265
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11266
|
|
|
|
|
|
|
|
11267
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11268
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11269
|
|
|
|
|
|
|
|
11270
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11271
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11272
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11273
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11274
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11275
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11276
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11277
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11278
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11279
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11280
|
|
|
|
|
|
|
|
11281
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11282
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
11283
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11284
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11285
|
|
|
|
|
|
|
|
11286
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11287
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11288
|
|
|
|
|
|
|
|
11289
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11290
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11291
|
|
|
|
|
|
|
|
11292
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11293
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11294
|
|
|
|
|
|
|
|
11295
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11296
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11297
|
|
|
|
|
|
|
|
11298
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11299
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11300
|
|
|
|
|
|
|
|
11301
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11302
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11303
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11304
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11305
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11306
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11307
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11308
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11309
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11310
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11311
|
|
|
|
|
|
|
|
11312
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11313
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
11314
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11315
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11316
|
|
|
|
|
|
|
|
11317
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11318
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11319
|
|
|
|
|
|
|
|
11320
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11321
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11322
|
|
|
|
|
|
|
|
11323
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11324
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11325
|
|
|
|
|
|
|
|
11326
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11327
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11328
|
|
|
|
|
|
|
|
11329
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11330
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11331
|
|
|
|
|
|
|
|
11332
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11333
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11334
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11335
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11336
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11337
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11338
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11339
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11340
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11341
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11342
|
|
|
|
|
|
|
|
11343
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11344
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
11345
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11346
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11347
|
|
|
|
|
|
|
|
11348
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11349
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11350
|
|
|
|
|
|
|
|
11351
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11352
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11353
|
|
|
|
|
|
|
|
11354
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11355
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11356
|
|
|
|
|
|
|
|
11357
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11358
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11359
|
|
|
|
|
|
|
|
11360
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11361
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11362
|
|
|
|
|
|
|
|
11363
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11364
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11365
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11366
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11367
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11368
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11369
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11370
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11371
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11372
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11373
|
|
|
|
|
|
|
|
11374
|
|
|
|
|
|
|
PDL_COMMENT("none") |
11375
|
0
|
|
|
|
|
|
} break;} |
11376
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
11377
|
|
|
|
|
|
|
} |
11378
|
|
|
|
|
|
|
} |
11379
|
|
|
|
|
|
|
{ |
11380
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","distances","tree","lnkdist"}; |
11381
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,2,2,1}; |
11382
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::treeclusterd"; |
11383
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
11384
|
|
|
|
|
|
|
__funcname, __parnames, 6 |
11385
|
|
|
|
|
|
|
}; |
11386
|
|
|
|
|
|
|
|
11387
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
11388
|
|
|
|
|
|
|
__realdims,__creating,6, |
11389
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
11390
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
11391
|
|
|
|
|
|
|
0 ); |
11392
|
|
|
|
|
|
|
} |
11393
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
11394
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
11395
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
11396
|
|
|
|
|
|
|
} |
11397
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11398
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
11399
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
11400
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
11401
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11402
|
|
|
|
|
|
|
} |
11403
|
|
|
|
|
|
|
} |
11404
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11405
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
11406
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
11407
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
11408
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11409
|
|
|
|
|
|
|
} |
11410
|
|
|
|
|
|
|
} |
11411
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
11412
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
11413
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
11414
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
11415
|
|
|
|
|
|
|
} |
11416
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11417
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
11418
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
11419
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
11420
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11421
|
|
|
|
|
|
|
} |
11422
|
|
|
|
|
|
|
} |
11423
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11424
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
11425
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
11426
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
11427
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11428
|
|
|
|
|
|
|
} |
11429
|
|
|
|
|
|
|
} |
11430
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
11431
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
11432
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
11433
|
|
|
|
|
|
|
} |
11434
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11435
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
11436
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
11437
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
11438
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11439
|
|
|
|
|
|
|
} |
11440
|
|
|
|
|
|
|
} |
11441
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
11442
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 2) { |
11443
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
11444
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
11445
|
|
|
|
|
|
|
} |
11446
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11447
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[3]))->dims[0]; |
11448
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
11449
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
11450
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11451
|
|
|
|
|
|
|
} |
11452
|
|
|
|
|
|
|
} |
11453
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11454
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[3]))->dims[1]; |
11455
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[3]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
11456
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[1] != 1) { |
11457
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11458
|
|
|
|
|
|
|
} |
11459
|
|
|
|
|
|
|
} |
11460
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[3]))); |
11461
|
0
|
0
|
|
|
|
|
if(!__creating[4]) { |
11462
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 2) { |
11463
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1; |
|
|
0
|
|
|
|
|
|
11464
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
11465
|
|
|
|
|
|
|
} |
11466
|
0
|
0
|
|
|
|
|
if(__privtrans->__2_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11467
|
0
|
|
|
|
|
|
__privtrans->__2_size = ((__privtrans->pdls[4]))->dims[0]; |
11468
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
11469
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
11470
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11471
|
|
|
|
|
|
|
} |
11472
|
|
|
|
|
|
|
} |
11473
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11474
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[4]))->dims[1]; |
11475
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[4]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
11476
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[1] != 1) { |
11477
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11478
|
|
|
|
|
|
|
} |
11479
|
|
|
|
|
|
|
} |
11480
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
11481
|
|
|
|
|
|
|
} else { |
11482
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__2_size;dims[1] = __privtrans->__n_size; |
11483
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0); |
11484
|
0
|
0
|
|
|
|
|
}if(!__creating[5]) { |
11485
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
11486
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
11487
|
|
|
|
|
|
|
} |
11488
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
11489
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[5]))->dims[0]; |
11490
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
11491
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
11492
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in treeclusterd:" "Wrong dims\n"); |
11493
|
|
|
|
|
|
|
} |
11494
|
|
|
|
|
|
|
} |
11495
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[5]))); |
11496
|
|
|
|
|
|
|
} else { |
11497
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
11498
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0); |
11499
|
|
|
|
|
|
|
} |
11500
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
11501
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
11502
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
11503
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
11504
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
11505
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
11506
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
11507
|
|
|
|
|
|
|
) { |
11508
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
11509
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
11510
|
|
|
|
|
|
|
} |
11511
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
11512
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
11513
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
11514
|
|
|
|
|
|
|
) { |
11515
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
11516
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
11517
|
|
|
|
|
|
|
} |
11518
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
11519
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
11520
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
11521
|
|
|
|
|
|
|
) { |
11522
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
11523
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
11524
|
|
|
|
|
|
|
} |
11525
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
11526
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
11527
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
11528
|
|
|
|
|
|
|
) { |
11529
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
11530
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
11531
|
|
|
|
|
|
|
} |
11532
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
11533
|
0
|
0
|
|
|
|
|
!__creating[4] && |
11534
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
11535
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
11536
|
|
|
|
|
|
|
) { |
11537
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
11538
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
11539
|
|
|
|
|
|
|
} |
11540
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
11541
|
0
|
0
|
|
|
|
|
!__creating[5] && |
11542
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
11543
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
11544
|
|
|
|
|
|
|
) { |
11545
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
11546
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
11547
|
|
|
|
|
|
|
} |
11548
|
0
|
0
|
|
|
|
|
if (hdrp) { |
11549
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
11550
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
11551
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
11552
|
|
|
|
|
|
|
int count; |
11553
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
11554
|
0
|
|
|
|
|
|
dSP; |
11555
|
0
|
|
|
|
|
|
ENTER ; |
11556
|
0
|
|
|
|
|
|
SAVETMPS ; |
11557
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
11558
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
11559
|
0
|
|
|
|
|
|
PUTBACK ; |
11560
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
11561
|
0
|
|
|
|
|
|
SPAGAIN ; |
11562
|
0
|
0
|
|
|
|
|
if(count != 1) |
11563
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
11564
|
|
|
|
|
|
|
|
11565
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
11566
|
|
|
|
|
|
|
|
11567
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
11568
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
11569
|
|
|
|
|
|
|
} |
11570
|
|
|
|
|
|
|
|
11571
|
0
|
0
|
|
|
|
|
FREETMPS ; |
11572
|
0
|
|
|
|
|
|
LEAVE ; |
11573
|
|
|
|
|
|
|
|
11574
|
|
|
|
|
|
|
|
11575
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
11576
|
|
|
|
|
|
|
|
11577
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[4]->hdrsv != hdrp ){ |
11578
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
11579
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv ); |
11580
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
11581
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
11582
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->hdrsv = hdr_copy; |
11583
|
|
|
|
|
|
|
} |
11584
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
11585
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->state |= PDL_HDRCPY; |
11586
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[5]->hdrsv != hdrp ){ |
11587
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
11588
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv ); |
11589
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
11590
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
11591
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->hdrsv = hdr_copy; |
11592
|
|
|
|
|
|
|
} |
11593
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
11594
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->state |= PDL_HDRCPY; |
11595
|
|
|
|
|
|
|
|
11596
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
11597
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
11598
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
11599
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
11600
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
11601
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
11602
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
11603
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
11604
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
11605
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
11606
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
11607
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
11608
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
11609
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
11610
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
11611
|
0
|
|
|
|
|
|
__privtrans->__inc_distances_n0 = 0; else |
11612
|
0
|
0
|
|
|
|
|
__privtrans->__inc_distances_n0 = __privtrans->pdls[3]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 1 || __privtrans->pdls[3]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
11613
|
0
|
|
|
|
|
|
__privtrans->__inc_distances_n1 = 0; else |
11614
|
0
|
0
|
|
|
|
|
__privtrans->__inc_distances_n1 = __privtrans->pdls[3]->dimincs[1];if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
11615
|
0
|
|
|
|
|
|
__privtrans->__inc_tree_2 = 0; else |
11616
|
0
|
0
|
|
|
|
|
__privtrans->__inc_tree_2 = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[4]->ndims <= 1 || __privtrans->pdls[4]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
11617
|
0
|
|
|
|
|
|
__privtrans->__inc_tree_n = 0; else |
11618
|
0
|
0
|
|
|
|
|
__privtrans->__inc_tree_n = __privtrans->pdls[4]->dimincs[1];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
11619
|
0
|
|
|
|
|
|
__privtrans->__inc_lnkdist_n = 0; else |
11620
|
0
|
|
|
|
|
|
__privtrans->__inc_lnkdist_n = __privtrans->pdls[5]->dimincs[0]; __privtrans->__ddone = 1; |
11621
|
|
|
|
|
|
|
} |
11622
|
0
|
|
|
|
|
|
} |
11623
|
|
|
|
|
|
|
|
11624
|
|
|
|
|
|
|
|
11625
|
0
|
|
|
|
|
|
pdl_trans * pdl_treeclusterd_copy(pdl_trans *__tr ) { |
11626
|
|
|
|
|
|
|
int __dim; |
11627
|
0
|
|
|
|
|
|
pdl_treeclusterd_struct *__privtrans = (pdl_treeclusterd_struct *) __tr; |
11628
|
|
|
|
|
|
|
|
11629
|
|
|
|
|
|
|
{ |
11630
|
0
|
|
|
|
|
|
pdl_treeclusterd_struct *__copy = malloc(sizeof(pdl_treeclusterd_struct)); |
11631
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
11632
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
11633
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
11634
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
11635
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
11636
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
11637
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
11638
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
11639
|
|
|
|
|
|
|
{int i; |
11640
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
11641
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
11642
|
|
|
|
|
|
|
} |
11643
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
11644
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
11645
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_distances_n0=__copy->__inc_distances_n0;__privtrans->__inc_distances_n1=__copy->__inc_distances_n1;__privtrans->__inc_tree_2=__copy->__inc_tree_2;__privtrans->__inc_tree_n=__copy->__inc_tree_n;__privtrans->__inc_lnkdist_n=__copy->__inc_lnkdist_n;__copy->__n_size=__privtrans->__n_size;__copy->__d_size=__privtrans->__d_size;__copy->__2_size=__privtrans->__2_size; |
11646
|
|
|
|
|
|
|
} |
11647
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
11648
|
|
|
|
|
|
|
} |
11649
|
|
|
|
|
|
|
} |
11650
|
|
|
|
|
|
|
|
11651
|
|
|
|
|
|
|
|
11652
|
0
|
|
|
|
|
|
void pdl_treeclusterd_readdata(pdl_trans *__tr ) { |
11653
|
|
|
|
|
|
|
int __dim; |
11654
|
0
|
|
|
|
|
|
pdl_treeclusterd_struct *__privtrans = (pdl_treeclusterd_struct *) __tr; |
11655
|
|
|
|
|
|
|
|
11656
|
|
|
|
|
|
|
{ |
11657
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
11658
|
|
|
|
|
|
|
|
11659
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
11660
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
11661
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11662
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11663
|
|
|
|
|
|
|
|
11664
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11665
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11666
|
|
|
|
|
|
|
|
11667
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11668
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11669
|
|
|
|
|
|
|
|
11670
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11671
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11672
|
|
|
|
|
|
|
|
11673
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11674
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11675
|
|
|
|
|
|
|
|
11676
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11677
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11678
|
|
|
|
|
|
|
|
11679
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11680
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11681
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11682
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11683
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11684
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11685
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11686
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11687
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11688
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11689
|
|
|
|
|
|
|
|
11690
|
|
|
|
|
|
|
|
11691
|
0
|
|
|
|
|
|
int transpose = 0; |
11692
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
11693
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
11694
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
11695
|
0
|
|
|
|
|
|
Node *nod = NULL; |
11696
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
11697
|
|
|
|
|
|
|
|
11698
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
11699
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
11700
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
11701
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
11702
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
11703
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
11704
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
11705
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
11706
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
11707
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
11708
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
11709
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
11710
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
11711
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
11712
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
11713
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
11714
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
11715
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
11716
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
11717
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
11718
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
11719
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
11720
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
11721
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
11722
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
11723
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
11724
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
11725
|
0
|
|
|
|
|
|
__tind2++ |
11726
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
11727
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
11728
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
11729
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
11730
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
11731
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
11732
|
|
|
|
|
|
|
) |
11733
|
|
|
|
|
|
|
{ |
11734
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
11735
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
11736
|
0
|
|
|
|
|
|
__tind1++ |
11737
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
11738
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
11739
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
11740
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
11741
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
11742
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
11743
|
|
|
|
|
|
|
) |
11744
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
11745
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
11746
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
11747
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
11748
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
11749
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
11750
|
|
|
|
|
|
|
distpp); |
11751
|
|
|
|
|
|
|
|
11752
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
11753
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11754
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11755
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
11756
|
|
|
|
|
|
|
|
11757
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
11758
|
|
|
|
|
|
|
} |
11759
|
|
|
|
|
|
|
} |
11760
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
11761
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
11762
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
11763
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
11764
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
11765
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
11766
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
11767
|
|
|
|
|
|
|
/*-- cleanup --*/ |
11768
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
11769
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
11770
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
11771
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
11772
|
|
|
|
|
|
|
|
11773
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
11774
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11775
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11776
|
|
|
|
|
|
|
|
11777
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11778
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11779
|
|
|
|
|
|
|
|
11780
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11781
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11782
|
|
|
|
|
|
|
|
11783
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11784
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11785
|
|
|
|
|
|
|
|
11786
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11787
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11788
|
|
|
|
|
|
|
|
11789
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11790
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11791
|
|
|
|
|
|
|
|
11792
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11793
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11794
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11795
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11796
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11797
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11798
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11799
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11800
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11801
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11802
|
|
|
|
|
|
|
|
11803
|
|
|
|
|
|
|
|
11804
|
0
|
|
|
|
|
|
int transpose = 0; |
11805
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
11806
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
11807
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
11808
|
0
|
|
|
|
|
|
Node *nod = NULL; |
11809
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
11810
|
|
|
|
|
|
|
|
11811
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
11812
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
11813
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
11814
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
11815
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
11816
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
11817
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
11818
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
11819
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
11820
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
11821
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
11822
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
11823
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
11824
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
11825
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
11826
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
11827
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
11828
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
11829
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
11830
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
11831
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
11832
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
11833
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
11834
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
11835
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
11836
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
11837
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
11838
|
0
|
|
|
|
|
|
__tind2++ |
11839
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
11840
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
11841
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
11842
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
11843
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
11844
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
11845
|
|
|
|
|
|
|
) |
11846
|
|
|
|
|
|
|
{ |
11847
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
11848
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
11849
|
0
|
|
|
|
|
|
__tind1++ |
11850
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
11851
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
11852
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
11853
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
11854
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
11855
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
11856
|
|
|
|
|
|
|
) |
11857
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
11858
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
11859
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
11860
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
11861
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
11862
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
11863
|
|
|
|
|
|
|
distpp); |
11864
|
|
|
|
|
|
|
|
11865
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
11866
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11867
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11868
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
11869
|
|
|
|
|
|
|
|
11870
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
11871
|
|
|
|
|
|
|
} |
11872
|
|
|
|
|
|
|
} |
11873
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
11874
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
11875
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
11876
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
11877
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
11878
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
11879
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
11880
|
|
|
|
|
|
|
/*-- cleanup --*/ |
11881
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
11882
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
11883
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
11884
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
11885
|
|
|
|
|
|
|
|
11886
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
11887
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
11888
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
11889
|
|
|
|
|
|
|
|
11890
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
11891
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
11892
|
|
|
|
|
|
|
|
11893
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
11894
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
11895
|
|
|
|
|
|
|
|
11896
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
11897
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
11898
|
|
|
|
|
|
|
|
11899
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
11900
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
11901
|
|
|
|
|
|
|
|
11902
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
11903
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
11904
|
|
|
|
|
|
|
|
11905
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
11906
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
11907
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
11908
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
11909
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
11910
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
11911
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
11912
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
11913
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
11914
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
11915
|
|
|
|
|
|
|
|
11916
|
|
|
|
|
|
|
|
11917
|
0
|
|
|
|
|
|
int transpose = 0; |
11918
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
11919
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
11920
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
11921
|
0
|
|
|
|
|
|
Node *nod = NULL; |
11922
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
11923
|
|
|
|
|
|
|
|
11924
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
11925
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
11926
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
11927
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
11928
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
11929
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
11930
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
11931
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
11932
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
11933
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
11934
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
11935
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
11936
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
11937
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
11938
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
11939
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
11940
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
11941
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
11942
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
11943
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
11944
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
11945
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
11946
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
11947
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
11948
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
11949
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
11950
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
11951
|
0
|
|
|
|
|
|
__tind2++ |
11952
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
11953
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
11954
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
11955
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
11956
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
11957
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
11958
|
|
|
|
|
|
|
) |
11959
|
|
|
|
|
|
|
{ |
11960
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
11961
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
11962
|
0
|
|
|
|
|
|
__tind1++ |
11963
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
11964
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
11965
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
11966
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
11967
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
11968
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
11969
|
|
|
|
|
|
|
) |
11970
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
11971
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
11972
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
11973
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
11974
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
11975
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
11976
|
|
|
|
|
|
|
distpp); |
11977
|
|
|
|
|
|
|
|
11978
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
11979
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11980
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
11981
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
11982
|
|
|
|
|
|
|
|
11983
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
11984
|
|
|
|
|
|
|
} |
11985
|
|
|
|
|
|
|
} |
11986
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
11987
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
11988
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
11989
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
11990
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
11991
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
11992
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
11993
|
|
|
|
|
|
|
/*-- cleanup --*/ |
11994
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
11995
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
11996
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
11997
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
11998
|
|
|
|
|
|
|
|
11999
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
12000
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12001
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
12002
|
|
|
|
|
|
|
|
12003
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12004
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12005
|
|
|
|
|
|
|
|
12006
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12007
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
12008
|
|
|
|
|
|
|
|
12009
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
12010
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
12011
|
|
|
|
|
|
|
|
12012
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
12013
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
12014
|
|
|
|
|
|
|
|
12015
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
12016
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
12017
|
|
|
|
|
|
|
|
12018
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
12019
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
12020
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
12021
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
12022
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
12023
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
12024
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
12025
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
12026
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12027
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12028
|
|
|
|
|
|
|
|
12029
|
|
|
|
|
|
|
|
12030
|
0
|
|
|
|
|
|
int transpose = 0; |
12031
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
12032
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
12033
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
12034
|
0
|
|
|
|
|
|
Node *nod = NULL; |
12035
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
12036
|
|
|
|
|
|
|
|
12037
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12038
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12039
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12040
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12041
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12042
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12043
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12044
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12045
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12046
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12047
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
12048
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
12049
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
12050
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12051
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12052
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12053
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
12054
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
12055
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
12056
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
12057
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
12058
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
12059
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
12060
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
12061
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
12062
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12063
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12064
|
0
|
|
|
|
|
|
__tind2++ |
12065
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
12066
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
12067
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
12068
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
12069
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
12070
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
12071
|
|
|
|
|
|
|
) |
12072
|
|
|
|
|
|
|
{ |
12073
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
12074
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
12075
|
0
|
|
|
|
|
|
__tind1++ |
12076
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
12077
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
12078
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
12079
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
12080
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
12081
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
12082
|
|
|
|
|
|
|
) |
12083
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
12084
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
12085
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
12086
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
12087
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
12088
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
12089
|
|
|
|
|
|
|
distpp); |
12090
|
|
|
|
|
|
|
|
12091
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
12092
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12093
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12094
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
12095
|
|
|
|
|
|
|
|
12096
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
12097
|
|
|
|
|
|
|
} |
12098
|
|
|
|
|
|
|
} |
12099
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
12100
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
12101
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
12102
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
12103
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
12104
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
12105
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
12106
|
|
|
|
|
|
|
/*-- cleanup --*/ |
12107
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
12108
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
12109
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
12110
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
12111
|
|
|
|
|
|
|
|
12112
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
12113
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12114
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
12115
|
|
|
|
|
|
|
|
12116
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12117
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12118
|
|
|
|
|
|
|
|
12119
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12120
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
12121
|
|
|
|
|
|
|
|
12122
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
12123
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
12124
|
|
|
|
|
|
|
|
12125
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
12126
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
12127
|
|
|
|
|
|
|
|
12128
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
12129
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
12130
|
|
|
|
|
|
|
|
12131
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
12132
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
12133
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
12134
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
12135
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
12136
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
12137
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
12138
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
12139
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12140
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12141
|
|
|
|
|
|
|
|
12142
|
|
|
|
|
|
|
|
12143
|
0
|
|
|
|
|
|
int transpose = 0; |
12144
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
12145
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
12146
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
12147
|
0
|
|
|
|
|
|
Node *nod = NULL; |
12148
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
12149
|
|
|
|
|
|
|
|
12150
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12151
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12152
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12153
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12154
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12155
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12156
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12157
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12158
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12159
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12160
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
12161
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
12162
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
12163
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12164
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12165
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12166
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
12167
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
12168
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
12169
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
12170
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
12171
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
12172
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
12173
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
12174
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
12175
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12176
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12177
|
0
|
|
|
|
|
|
__tind2++ |
12178
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
12179
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
12180
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
12181
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
12182
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
12183
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
12184
|
|
|
|
|
|
|
) |
12185
|
|
|
|
|
|
|
{ |
12186
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
12187
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
12188
|
0
|
|
|
|
|
|
__tind1++ |
12189
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
12190
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
12191
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
12192
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
12193
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
12194
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
12195
|
|
|
|
|
|
|
) |
12196
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
12197
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
12198
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
12199
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
12200
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
12201
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
12202
|
|
|
|
|
|
|
distpp); |
12203
|
|
|
|
|
|
|
|
12204
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
12205
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12206
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12207
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
12208
|
|
|
|
|
|
|
|
12209
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
12210
|
|
|
|
|
|
|
} |
12211
|
|
|
|
|
|
|
} |
12212
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
12213
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
12214
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
12215
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
12216
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
12217
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
12218
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
12219
|
|
|
|
|
|
|
/*-- cleanup --*/ |
12220
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
12221
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
12222
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
12223
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
12224
|
|
|
|
|
|
|
|
12225
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
12226
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12227
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
12228
|
|
|
|
|
|
|
|
12229
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12230
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12231
|
|
|
|
|
|
|
|
12232
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12233
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
12234
|
|
|
|
|
|
|
|
12235
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
12236
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
12237
|
|
|
|
|
|
|
|
12238
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
12239
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
12240
|
|
|
|
|
|
|
|
12241
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
12242
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
12243
|
|
|
|
|
|
|
|
12244
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
12245
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
12246
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
12247
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
12248
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
12249
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
12250
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
12251
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
12252
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12253
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12254
|
|
|
|
|
|
|
|
12255
|
|
|
|
|
|
|
|
12256
|
0
|
|
|
|
|
|
int transpose = 0; |
12257
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
12258
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
12259
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
12260
|
0
|
|
|
|
|
|
Node *nod = NULL; |
12261
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
12262
|
|
|
|
|
|
|
|
12263
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12264
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12265
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12266
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12267
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12268
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12269
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12270
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12271
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12272
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12273
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
12274
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
12275
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
12276
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12277
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12278
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12279
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
12280
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
12281
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
12282
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
12283
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
12284
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
12285
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
12286
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
12287
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
12288
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12289
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12290
|
0
|
|
|
|
|
|
__tind2++ |
12291
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
12292
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
12293
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
12294
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
12295
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
12296
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
12297
|
|
|
|
|
|
|
) |
12298
|
|
|
|
|
|
|
{ |
12299
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
12300
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
12301
|
0
|
|
|
|
|
|
__tind1++ |
12302
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
12303
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
12304
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
12305
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
12306
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
12307
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
12308
|
|
|
|
|
|
|
) |
12309
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
12310
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
12311
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
12312
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
12313
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
12314
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
12315
|
|
|
|
|
|
|
distpp); |
12316
|
|
|
|
|
|
|
|
12317
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
12318
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12319
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12320
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
12321
|
|
|
|
|
|
|
|
12322
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
12323
|
|
|
|
|
|
|
} |
12324
|
|
|
|
|
|
|
} |
12325
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
12326
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
12327
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
12328
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
12329
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
12330
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
12331
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
12332
|
|
|
|
|
|
|
/*-- cleanup --*/ |
12333
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
12334
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
12335
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
12336
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
12337
|
|
|
|
|
|
|
|
12338
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
12339
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12340
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
12341
|
|
|
|
|
|
|
|
12342
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12343
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12344
|
|
|
|
|
|
|
|
12345
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12346
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
12347
|
|
|
|
|
|
|
|
12348
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
12349
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
12350
|
|
|
|
|
|
|
|
12351
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
12352
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
12353
|
|
|
|
|
|
|
|
12354
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
12355
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
12356
|
|
|
|
|
|
|
|
12357
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
12358
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
12359
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
12360
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
12361
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
12362
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
12363
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
12364
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
12365
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12366
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12367
|
|
|
|
|
|
|
|
12368
|
|
|
|
|
|
|
|
12369
|
0
|
|
|
|
|
|
int transpose = 0; |
12370
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
12371
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
12372
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
12373
|
0
|
|
|
|
|
|
Node *nod = NULL; |
12374
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
12375
|
|
|
|
|
|
|
|
12376
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12377
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12378
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12379
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12380
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12381
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12382
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12383
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12384
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12385
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12386
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
12387
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
12388
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
12389
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12390
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12391
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12392
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
12393
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
12394
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
12395
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
12396
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
12397
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
12398
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
12399
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
12400
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
12401
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12402
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12403
|
0
|
|
|
|
|
|
__tind2++ |
12404
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
12405
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
12406
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
12407
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
12408
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
12409
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
12410
|
|
|
|
|
|
|
) |
12411
|
|
|
|
|
|
|
{ |
12412
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
12413
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
12414
|
0
|
|
|
|
|
|
__tind1++ |
12415
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
12416
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
12417
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
12418
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
12419
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
12420
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
12421
|
|
|
|
|
|
|
) |
12422
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
12423
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
12424
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
12425
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
12426
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
12427
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
12428
|
|
|
|
|
|
|
distpp); |
12429
|
|
|
|
|
|
|
|
12430
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
12431
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12432
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12433
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
12434
|
|
|
|
|
|
|
|
12435
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
12436
|
|
|
|
|
|
|
} |
12437
|
|
|
|
|
|
|
} |
12438
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
12439
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
12440
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
12441
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
12442
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
12443
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
12444
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
12445
|
|
|
|
|
|
|
/*-- cleanup --*/ |
12446
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
12447
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
12448
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
12449
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
12450
|
|
|
|
|
|
|
|
12451
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
12452
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12453
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
12454
|
|
|
|
|
|
|
|
12455
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12456
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12457
|
|
|
|
|
|
|
|
12458
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12459
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
12460
|
|
|
|
|
|
|
|
12461
|
0
|
0
|
|
|
|
|
PDL_Double * distances_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
12462
|
0
|
|
|
|
|
|
PDL_Double * distances_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
12463
|
|
|
|
|
|
|
|
12464
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
12465
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
12466
|
|
|
|
|
|
|
|
12467
|
0
|
0
|
|
|
|
|
PDL_Double * lnkdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
12468
|
0
|
|
|
|
|
|
PDL_Double * lnkdist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
12469
|
|
|
|
|
|
|
|
12470
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_lnkdist_n = __privtrans->__inc_lnkdist_n; |
12471
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
12472
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
12473
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
12474
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
12475
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
12476
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n0 = __privtrans->__inc_distances_n0; |
12477
|
0
|
|
|
|
|
|
register PDL_Indx __inc_distances_n1 = __privtrans->__inc_distances_n1; |
12478
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12479
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12480
|
|
|
|
|
|
|
|
12481
|
|
|
|
|
|
|
|
12482
|
0
|
|
|
|
|
|
int transpose = 0; |
12483
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
12484
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
12485
|
0
|
|
|
|
|
|
double **distpp = (double **)pp_alloc(__privtrans->__n_size); |
12486
|
0
|
|
|
|
|
|
Node *nod = NULL; |
12487
|
0
|
|
|
|
|
|
int nmax = __privtrans->__n_size-1; |
12488
|
|
|
|
|
|
|
|
12489
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12490
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12491
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12492
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12493
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12494
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12495
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12496
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12497
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12498
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12499
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
12500
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
12501
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
12502
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12503
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12504
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12505
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
12506
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
12507
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
12508
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
12509
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
12510
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
12511
|
0
|
|
|
|
|
|
distances_datap += __offsp[3]; |
12512
|
0
|
|
|
|
|
|
tree_datap += __offsp[4]; |
12513
|
0
|
|
|
|
|
|
lnkdist_datap += __offsp[5]; |
12514
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12515
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12516
|
0
|
|
|
|
|
|
__tind2++ |
12517
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
12518
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
12519
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
12520
|
0
|
|
|
|
|
|
,distances_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
12521
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
12522
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
12523
|
|
|
|
|
|
|
) |
12524
|
|
|
|
|
|
|
{ |
12525
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
12526
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
12527
|
0
|
|
|
|
|
|
__tind1++ |
12528
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
12529
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
12530
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
12531
|
0
|
|
|
|
|
|
,distances_datap += __tinc0_3 |
12532
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_4 |
12533
|
0
|
|
|
|
|
|
,lnkdist_datap += __tinc0_5 |
12534
|
|
|
|
|
|
|
) |
12535
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
12536
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
12537
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
12538
|
0
|
|
|
|
|
|
p2pp_dbl_ragged(__privtrans->__n_size, __privtrans->__n_size, distances_datap, distpp); |
12539
|
0
|
|
|
|
|
|
nod = treecluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
12540
|
0
|
|
|
|
|
|
weight_datap, transpose, *__privtrans->distFlag, *__privtrans->methodFlag, |
12541
|
|
|
|
|
|
|
distpp); |
12542
|
|
|
|
|
|
|
|
12543
|
0
|
|
|
|
|
|
node2p(nmax, nod, tree_datap, lnkdist_datap); |
12544
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 0))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12545
|
0
|
0
|
|
|
|
|
(tree_datap)[0+(__inc_tree_2*PP_INDTERM(__privtrans->__2_size, 1))+(__inc_tree_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
|
|
0
|
|
|
|
|
|
12546
|
0
|
0
|
|
|
|
|
(lnkdist_datap)[0+(__inc_lnkdist_n*PP_INDTERM(__privtrans->__n_size, nmax))] PDL_COMMENT("ACCESS()") = 0; |
12547
|
|
|
|
|
|
|
|
12548
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
12549
|
|
|
|
|
|
|
} |
12550
|
|
|
|
|
|
|
} |
12551
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
12552
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
12553
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
12554
|
0
|
|
|
|
|
|
distances_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
12555
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
12556
|
0
|
|
|
|
|
|
lnkdist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
12557
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
12558
|
|
|
|
|
|
|
/*-- cleanup --*/ |
12559
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
12560
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
12561
|
0
|
0
|
|
|
|
|
if (distpp) free(distpp); |
12562
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
12563
|
|
|
|
|
|
|
|
12564
|
0
|
|
|
|
|
|
} break;} |
12565
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
12566
|
|
|
|
|
|
|
} |
12567
|
|
|
|
|
|
|
} |
12568
|
|
|
|
|
|
|
} |
12569
|
|
|
|
|
|
|
|
12570
|
|
|
|
|
|
|
|
12571
|
|
|
|
|
|
|
|
12572
|
|
|
|
|
|
|
|
12573
|
0
|
|
|
|
|
|
void pdl_treeclusterd_free(pdl_trans *__tr ) { |
12574
|
|
|
|
|
|
|
int __dim; |
12575
|
0
|
|
|
|
|
|
pdl_treeclusterd_struct *__privtrans = (pdl_treeclusterd_struct *) __tr; |
12576
|
|
|
|
|
|
|
|
12577
|
|
|
|
|
|
|
{ |
12578
|
|
|
|
|
|
|
|
12579
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
12580
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
12581
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
12582
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
12583
|
|
|
|
|
|
|
;;;;;;;;;;;;;; |
12584
|
|
|
|
|
|
|
} |
12585
|
|
|
|
|
|
|
|
12586
|
|
|
|
|
|
|
} |
12587
|
0
|
|
|
|
|
|
} |
12588
|
|
|
|
|
|
|
|
12589
|
|
|
|
|
|
|
|
12590
|
|
|
|
|
|
|
|
12591
|
|
|
|
|
|
|
|
12592
|
|
|
|
|
|
|
static char pdl_treeclusterd_vtable_flags[] = |
12593
|
|
|
|
|
|
|
{ 0,0,0,0,0,0}; |
12594
|
|
|
|
|
|
|
pdl_transvtable pdl_treeclusterd_vtable = { |
12595
|
|
|
|
|
|
|
0,0, 4, 6, pdl_treeclusterd_vtable_flags, |
12596
|
|
|
|
|
|
|
pdl_treeclusterd_redodims, pdl_treeclusterd_readdata, NULL, |
12597
|
|
|
|
|
|
|
pdl_treeclusterd_free,NULL,NULL,pdl_treeclusterd_copy, |
12598
|
|
|
|
|
|
|
sizeof(pdl_treeclusterd_struct),"pdl_treeclusterd_vtable" |
12599
|
|
|
|
|
|
|
}; |
12600
|
|
|
|
|
|
|
|
12601
|
|
|
|
|
|
|
typedef struct pdl_cuttree_struct { |
12602
|
|
|
|
|
|
|
PDL_TRANS_START(3); |
12603
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_tree_2;PDL_Indx __inc_tree_n;PDL_Indx __inc_clusterids_n;PDL_Indx __n_size;PDL_Indx __2_size; |
12604
|
|
|
|
|
|
|
|
12605
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
12606
|
|
|
|
|
|
|
} pdl_cuttree_struct; |
12607
|
|
|
|
|
|
|
|
12608
|
0
|
|
|
|
|
|
void pdl_cuttree_redodims(pdl_trans *__tr ) { |
12609
|
|
|
|
|
|
|
int __dim; |
12610
|
0
|
|
|
|
|
|
pdl_cuttree_struct *__privtrans = (pdl_cuttree_struct *) __tr; |
12611
|
|
|
|
|
|
|
|
12612
|
|
|
|
|
|
|
{ |
12613
|
|
|
|
|
|
|
PDL_Indx __creating[3]; |
12614
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
12615
|
0
|
|
|
|
|
|
__privtrans->__2_size = -1; |
12616
|
0
|
|
|
|
|
|
__creating[0] = 0; |
12617
|
0
|
|
|
|
|
|
__creating[1] = 0; |
12618
|
0
|
0
|
|
|
|
|
__creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]); |
|
|
0
|
|
|
|
|
|
12619
|
|
|
|
|
|
|
{ |
12620
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
12621
|
|
|
|
|
|
|
|
12622
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
12623
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
12624
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12625
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12626
|
|
|
|
|
|
|
|
12627
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12628
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12629
|
|
|
|
|
|
|
|
12630
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12631
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12632
|
|
|
|
|
|
|
|
12633
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12634
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12635
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12636
|
|
|
|
|
|
|
|
12637
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12638
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
12639
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12640
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12641
|
|
|
|
|
|
|
|
12642
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12643
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12644
|
|
|
|
|
|
|
|
12645
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12646
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12647
|
|
|
|
|
|
|
|
12648
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12649
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12650
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12651
|
|
|
|
|
|
|
|
12652
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12653
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
12654
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12655
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12656
|
|
|
|
|
|
|
|
12657
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12658
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12659
|
|
|
|
|
|
|
|
12660
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12661
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12662
|
|
|
|
|
|
|
|
12663
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12664
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12665
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12666
|
|
|
|
|
|
|
|
12667
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12668
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
12669
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12670
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12671
|
|
|
|
|
|
|
|
12672
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12673
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12674
|
|
|
|
|
|
|
|
12675
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12676
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12677
|
|
|
|
|
|
|
|
12678
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12679
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12680
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12681
|
|
|
|
|
|
|
|
12682
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12683
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
12684
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12685
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12686
|
|
|
|
|
|
|
|
12687
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12688
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12689
|
|
|
|
|
|
|
|
12690
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12691
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12692
|
|
|
|
|
|
|
|
12693
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12694
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12695
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12696
|
|
|
|
|
|
|
|
12697
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12698
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
12699
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12700
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12701
|
|
|
|
|
|
|
|
12702
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12703
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12704
|
|
|
|
|
|
|
|
12705
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12706
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12707
|
|
|
|
|
|
|
|
12708
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12709
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12710
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12711
|
|
|
|
|
|
|
|
12712
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12713
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
12714
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12715
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12716
|
|
|
|
|
|
|
|
12717
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12718
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12719
|
|
|
|
|
|
|
|
12720
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12721
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12722
|
|
|
|
|
|
|
|
12723
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12724
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12725
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12726
|
|
|
|
|
|
|
|
12727
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12728
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
12729
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12730
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12731
|
|
|
|
|
|
|
|
12732
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12733
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12734
|
|
|
|
|
|
|
|
12735
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12736
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12737
|
|
|
|
|
|
|
|
12738
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12739
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12740
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12741
|
|
|
|
|
|
|
|
12742
|
|
|
|
|
|
|
PDL_COMMENT("none") |
12743
|
0
|
|
|
|
|
|
} break;} |
12744
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
12745
|
|
|
|
|
|
|
} |
12746
|
|
|
|
|
|
|
} |
12747
|
|
|
|
|
|
|
{ |
12748
|
|
|
|
|
|
|
static char *__parnames[] = {"tree","nclusters","clusterids"}; |
12749
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,0,1}; |
12750
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::cuttree"; |
12751
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
12752
|
|
|
|
|
|
|
__funcname, __parnames, 3 |
12753
|
|
|
|
|
|
|
}; |
12754
|
|
|
|
|
|
|
|
12755
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
12756
|
|
|
|
|
|
|
__realdims,__creating,3, |
12757
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
12758
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
12759
|
|
|
|
|
|
|
0 ); |
12760
|
|
|
|
|
|
|
} |
12761
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
12762
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1; |
|
|
0
|
|
|
|
|
|
12763
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
12764
|
|
|
|
|
|
|
} |
12765
|
0
|
0
|
|
|
|
|
if(__privtrans->__2_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
12766
|
0
|
|
|
|
|
|
__privtrans->__2_size = ((__privtrans->pdls[0]))->dims[0]; |
12767
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
12768
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
12769
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in cuttree:" "Wrong dims\n"); |
12770
|
|
|
|
|
|
|
} |
12771
|
|
|
|
|
|
|
} |
12772
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
12773
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
12774
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
12775
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
12776
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in cuttree:" "Wrong dims\n"); |
12777
|
|
|
|
|
|
|
} |
12778
|
|
|
|
|
|
|
} |
12779
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
12780
|
0
|
0
|
|
|
|
|
if(!__creating[2]) { |
12781
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
12782
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
12783
|
|
|
|
|
|
|
} |
12784
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
12785
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[2]))->dims[0]; |
12786
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
12787
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
12788
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in cuttree:" "Wrong dims\n"); |
12789
|
|
|
|
|
|
|
} |
12790
|
|
|
|
|
|
|
} |
12791
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
12792
|
|
|
|
|
|
|
} else { |
12793
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
12794
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,0); |
12795
|
|
|
|
|
|
|
} |
12796
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
12797
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
12798
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
12799
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
12800
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
12801
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
12802
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
12803
|
|
|
|
|
|
|
) { |
12804
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
12805
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
12806
|
|
|
|
|
|
|
} |
12807
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
12808
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
12809
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
12810
|
|
|
|
|
|
|
) { |
12811
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
12812
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
12813
|
|
|
|
|
|
|
} |
12814
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
12815
|
0
|
0
|
|
|
|
|
!__creating[2] && |
12816
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
12817
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
12818
|
|
|
|
|
|
|
) { |
12819
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
12820
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
12821
|
|
|
|
|
|
|
} |
12822
|
0
|
0
|
|
|
|
|
if (hdrp) { |
12823
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
12824
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
12825
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
12826
|
|
|
|
|
|
|
int count; |
12827
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
12828
|
0
|
|
|
|
|
|
dSP; |
12829
|
0
|
|
|
|
|
|
ENTER ; |
12830
|
0
|
|
|
|
|
|
SAVETMPS ; |
12831
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
12832
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
12833
|
0
|
|
|
|
|
|
PUTBACK ; |
12834
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
12835
|
0
|
|
|
|
|
|
SPAGAIN ; |
12836
|
0
|
0
|
|
|
|
|
if(count != 1) |
12837
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
12838
|
|
|
|
|
|
|
|
12839
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
12840
|
|
|
|
|
|
|
|
12841
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
12842
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
12843
|
|
|
|
|
|
|
} |
12844
|
|
|
|
|
|
|
|
12845
|
0
|
0
|
|
|
|
|
FREETMPS ; |
12846
|
0
|
|
|
|
|
|
LEAVE ; |
12847
|
|
|
|
|
|
|
|
12848
|
|
|
|
|
|
|
|
12849
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
12850
|
|
|
|
|
|
|
|
12851
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[2]->hdrsv != hdrp ){ |
12852
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
12853
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv ); |
12854
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
12855
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
12856
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->hdrsv = hdr_copy; |
12857
|
|
|
|
|
|
|
} |
12858
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
12859
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->state |= PDL_HDRCPY; |
12860
|
|
|
|
|
|
|
|
12861
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
12862
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
12863
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
12864
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
12865
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
12866
|
0
|
|
|
|
|
|
__privtrans->__inc_tree_2 = 0; else |
12867
|
0
|
0
|
|
|
|
|
__privtrans->__inc_tree_2 = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
12868
|
0
|
|
|
|
|
|
__privtrans->__inc_tree_n = 0; else |
12869
|
0
|
0
|
|
|
|
|
__privtrans->__inc_tree_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
12870
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
12871
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = __privtrans->pdls[2]->dimincs[0]; __privtrans->__ddone = 1; |
12872
|
|
|
|
|
|
|
} |
12873
|
0
|
|
|
|
|
|
} |
12874
|
|
|
|
|
|
|
|
12875
|
|
|
|
|
|
|
|
12876
|
0
|
|
|
|
|
|
pdl_trans * pdl_cuttree_copy(pdl_trans *__tr ) { |
12877
|
|
|
|
|
|
|
int __dim; |
12878
|
0
|
|
|
|
|
|
pdl_cuttree_struct *__privtrans = (pdl_cuttree_struct *) __tr; |
12879
|
|
|
|
|
|
|
|
12880
|
|
|
|
|
|
|
{ |
12881
|
0
|
|
|
|
|
|
pdl_cuttree_struct *__copy = malloc(sizeof(pdl_cuttree_struct)); |
12882
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
12883
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
12884
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
12885
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
12886
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
12887
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
12888
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
12889
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
12890
|
|
|
|
|
|
|
{int i; |
12891
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
12892
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
12893
|
|
|
|
|
|
|
} |
12894
|
|
|
|
|
|
|
|
12895
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
12896
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_tree_2=__copy->__inc_tree_2;__privtrans->__inc_tree_n=__copy->__inc_tree_n;__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__copy->__n_size=__privtrans->__n_size;__copy->__2_size=__privtrans->__2_size; |
12897
|
|
|
|
|
|
|
} |
12898
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
12899
|
|
|
|
|
|
|
} |
12900
|
|
|
|
|
|
|
} |
12901
|
|
|
|
|
|
|
|
12902
|
|
|
|
|
|
|
|
12903
|
0
|
|
|
|
|
|
void pdl_cuttree_readdata(pdl_trans *__tr ) { |
12904
|
|
|
|
|
|
|
int __dim; |
12905
|
0
|
|
|
|
|
|
pdl_cuttree_struct *__privtrans = (pdl_cuttree_struct *) __tr; |
12906
|
|
|
|
|
|
|
|
12907
|
|
|
|
|
|
|
{ |
12908
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
12909
|
|
|
|
|
|
|
|
12910
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
12911
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
12912
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12913
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12914
|
|
|
|
|
|
|
|
12915
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12916
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12917
|
|
|
|
|
|
|
|
12918
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12919
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12920
|
|
|
|
|
|
|
|
12921
|
|
|
|
|
|
|
|
12922
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12923
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12924
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12925
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12926
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12927
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12928
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12929
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12930
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12931
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12932
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12933
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12934
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12935
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
12936
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
12937
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
12938
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12939
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12940
|
0
|
|
|
|
|
|
__tind2++ |
12941
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
12942
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
12943
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
12944
|
|
|
|
|
|
|
) |
12945
|
|
|
|
|
|
|
{ |
12946
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
12947
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
12948
|
0
|
|
|
|
|
|
__tind1++ |
12949
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
12950
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
12951
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
12952
|
|
|
|
|
|
|
) |
12953
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
12954
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
12955
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
12956
|
|
|
|
|
|
|
|
12957
|
|
|
|
|
|
|
|
12958
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
12959
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
12960
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
12961
|
|
|
|
|
|
|
|
12962
|
|
|
|
|
|
|
} |
12963
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
12964
|
|
|
|
|
|
|
} |
12965
|
|
|
|
|
|
|
} |
12966
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
12967
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
12968
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
12969
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: { |
12970
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
12971
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
12972
|
|
|
|
|
|
|
|
12973
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
12974
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
12975
|
|
|
|
|
|
|
|
12976
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
12977
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
12978
|
|
|
|
|
|
|
|
12979
|
|
|
|
|
|
|
|
12980
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
12981
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
12982
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
12983
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
12984
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
12985
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
12986
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
12987
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
12988
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
12989
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
12990
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
12991
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
12992
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
12993
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
12994
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
12995
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
12996
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
12997
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
12998
|
0
|
|
|
|
|
|
__tind2++ |
12999
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13000
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13001
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13002
|
|
|
|
|
|
|
) |
13003
|
|
|
|
|
|
|
{ |
13004
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13005
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13006
|
0
|
|
|
|
|
|
__tind1++ |
13007
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13008
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13009
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13010
|
|
|
|
|
|
|
) |
13011
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13012
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13013
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13014
|
|
|
|
|
|
|
|
13015
|
|
|
|
|
|
|
|
13016
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13017
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13018
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13019
|
|
|
|
|
|
|
|
13020
|
|
|
|
|
|
|
} |
13021
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13022
|
|
|
|
|
|
|
} |
13023
|
|
|
|
|
|
|
} |
13024
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13025
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13026
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13027
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: { |
13028
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13029
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
13030
|
|
|
|
|
|
|
|
13031
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13032
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13033
|
|
|
|
|
|
|
|
13034
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13035
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
13036
|
|
|
|
|
|
|
|
13037
|
|
|
|
|
|
|
|
13038
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
13039
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
13040
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
13041
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
13042
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
13043
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
13044
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
13045
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
13046
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
13047
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
13048
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
13049
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
13050
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
13051
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
13052
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
13053
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
13054
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
13055
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
13056
|
0
|
|
|
|
|
|
__tind2++ |
13057
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13058
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13059
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13060
|
|
|
|
|
|
|
) |
13061
|
|
|
|
|
|
|
{ |
13062
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13063
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13064
|
0
|
|
|
|
|
|
__tind1++ |
13065
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13066
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13067
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13068
|
|
|
|
|
|
|
) |
13069
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13070
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13071
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13072
|
|
|
|
|
|
|
|
13073
|
|
|
|
|
|
|
|
13074
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13075
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13076
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13077
|
|
|
|
|
|
|
|
13078
|
|
|
|
|
|
|
} |
13079
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13080
|
|
|
|
|
|
|
} |
13081
|
|
|
|
|
|
|
} |
13082
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13083
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13084
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13085
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: { |
13086
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13087
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
13088
|
|
|
|
|
|
|
|
13089
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13090
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13091
|
|
|
|
|
|
|
|
13092
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13093
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
13094
|
|
|
|
|
|
|
|
13095
|
|
|
|
|
|
|
|
13096
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
13097
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
13098
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
13099
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
13100
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
13101
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
13102
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
13103
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
13104
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
13105
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
13106
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
13107
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
13108
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
13109
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
13110
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
13111
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
13112
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
13113
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
13114
|
0
|
|
|
|
|
|
__tind2++ |
13115
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13116
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13117
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13118
|
|
|
|
|
|
|
) |
13119
|
|
|
|
|
|
|
{ |
13120
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13121
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13122
|
0
|
|
|
|
|
|
__tind1++ |
13123
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13124
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13125
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13126
|
|
|
|
|
|
|
) |
13127
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13128
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13129
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13130
|
|
|
|
|
|
|
|
13131
|
|
|
|
|
|
|
|
13132
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13133
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13134
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13135
|
|
|
|
|
|
|
|
13136
|
|
|
|
|
|
|
} |
13137
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13138
|
|
|
|
|
|
|
} |
13139
|
|
|
|
|
|
|
} |
13140
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13141
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13142
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13143
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: { |
13144
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13145
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
13146
|
|
|
|
|
|
|
|
13147
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13148
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13149
|
|
|
|
|
|
|
|
13150
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13151
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
13152
|
|
|
|
|
|
|
|
13153
|
|
|
|
|
|
|
|
13154
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
13155
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
13156
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
13157
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
13158
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
13159
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
13160
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
13161
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
13162
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
13163
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
13164
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
13165
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
13166
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
13167
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
13168
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
13169
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
13170
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
13171
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
13172
|
0
|
|
|
|
|
|
__tind2++ |
13173
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13174
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13175
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13176
|
|
|
|
|
|
|
) |
13177
|
|
|
|
|
|
|
{ |
13178
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13179
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13180
|
0
|
|
|
|
|
|
__tind1++ |
13181
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13182
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13183
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13184
|
|
|
|
|
|
|
) |
13185
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13186
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13187
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13188
|
|
|
|
|
|
|
|
13189
|
|
|
|
|
|
|
|
13190
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13191
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13192
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13193
|
|
|
|
|
|
|
|
13194
|
|
|
|
|
|
|
} |
13195
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13196
|
|
|
|
|
|
|
} |
13197
|
|
|
|
|
|
|
} |
13198
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13199
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13200
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13201
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: { |
13202
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13203
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
13204
|
|
|
|
|
|
|
|
13205
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13206
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13207
|
|
|
|
|
|
|
|
13208
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13209
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
13210
|
|
|
|
|
|
|
|
13211
|
|
|
|
|
|
|
|
13212
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
13213
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
13214
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
13215
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
13216
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
13217
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
13218
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
13219
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
13220
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
13221
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
13222
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
13223
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
13224
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
13225
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
13226
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
13227
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
13228
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
13229
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
13230
|
0
|
|
|
|
|
|
__tind2++ |
13231
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13232
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13233
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13234
|
|
|
|
|
|
|
) |
13235
|
|
|
|
|
|
|
{ |
13236
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13237
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13238
|
0
|
|
|
|
|
|
__tind1++ |
13239
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13240
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13241
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13242
|
|
|
|
|
|
|
) |
13243
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13244
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13245
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13246
|
|
|
|
|
|
|
|
13247
|
|
|
|
|
|
|
|
13248
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13249
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13250
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13251
|
|
|
|
|
|
|
|
13252
|
|
|
|
|
|
|
} |
13253
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13254
|
|
|
|
|
|
|
} |
13255
|
|
|
|
|
|
|
} |
13256
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13257
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13258
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13259
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: { |
13260
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13261
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
13262
|
|
|
|
|
|
|
|
13263
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13264
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13265
|
|
|
|
|
|
|
|
13266
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13267
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
13268
|
|
|
|
|
|
|
|
13269
|
|
|
|
|
|
|
|
13270
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
13271
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
13272
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
13273
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
13274
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
13275
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
13276
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
13277
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
13278
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
13279
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
13280
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
13281
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
13282
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
13283
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
13284
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
13285
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
13286
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
13287
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
13288
|
0
|
|
|
|
|
|
__tind2++ |
13289
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13290
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13291
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13292
|
|
|
|
|
|
|
) |
13293
|
|
|
|
|
|
|
{ |
13294
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13295
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13296
|
0
|
|
|
|
|
|
__tind1++ |
13297
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13298
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13299
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13300
|
|
|
|
|
|
|
) |
13301
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13302
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13303
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13304
|
|
|
|
|
|
|
|
13305
|
|
|
|
|
|
|
|
13306
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13307
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13308
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13309
|
|
|
|
|
|
|
|
13310
|
|
|
|
|
|
|
} |
13311
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13312
|
|
|
|
|
|
|
} |
13313
|
|
|
|
|
|
|
} |
13314
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13315
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13316
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13317
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: { |
13318
|
0
|
0
|
|
|
|
|
PDL_Long * tree_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13319
|
0
|
|
|
|
|
|
PDL_Long * tree_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
13320
|
|
|
|
|
|
|
|
13321
|
0
|
0
|
|
|
|
|
PDL_Long * nclusters_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13322
|
0
|
|
|
|
|
|
PDL_Long * nclusters_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13323
|
|
|
|
|
|
|
|
13324
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13325
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
13326
|
|
|
|
|
|
|
|
13327
|
|
|
|
|
|
|
|
13328
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
13329
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
13330
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
13331
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
13332
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
13333
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
13334
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
13335
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
13336
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
13337
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
13338
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
13339
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
13340
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
13341
|
0
|
|
|
|
|
|
tree_datap += __offsp[0]; |
13342
|
0
|
|
|
|
|
|
nclusters_datap += __offsp[1]; |
13343
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[2]; |
13344
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
13345
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
13346
|
0
|
|
|
|
|
|
__tind2++ |
13347
|
0
|
|
|
|
|
|
,tree_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
13348
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
13349
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
13350
|
|
|
|
|
|
|
) |
13351
|
|
|
|
|
|
|
{ |
13352
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
13353
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
13354
|
0
|
|
|
|
|
|
__tind1++ |
13355
|
0
|
|
|
|
|
|
,tree_datap += __tinc0_0 |
13356
|
0
|
|
|
|
|
|
,nclusters_datap += __tinc0_1 |
13357
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_2 |
13358
|
|
|
|
|
|
|
) |
13359
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_tree_2 = __privtrans->__inc_tree_2; |
13360
|
0
|
|
|
|
|
|
register PDL_Indx __inc_tree_n = __privtrans->__inc_tree_n; |
13361
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13362
|
|
|
|
|
|
|
|
13363
|
|
|
|
|
|
|
|
13364
|
0
|
|
|
|
|
|
Node *nod = p2node(__privtrans->__n_size-1,tree_datap,NULL); |
13365
|
0
|
|
|
|
|
|
cuttree(__privtrans->__n_size, nod, (nclusters_datap)[0] PDL_COMMENT("ACCESS()") , clusterids_datap); |
13366
|
0
|
0
|
|
|
|
|
if (nod) free(nod); |
13367
|
|
|
|
|
|
|
|
13368
|
|
|
|
|
|
|
} |
13369
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
13370
|
|
|
|
|
|
|
} |
13371
|
|
|
|
|
|
|
} |
13372
|
0
|
|
|
|
|
|
tree_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
13373
|
0
|
|
|
|
|
|
nclusters_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
13374
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
13375
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
13376
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
13377
|
|
|
|
|
|
|
} |
13378
|
|
|
|
|
|
|
} |
13379
|
|
|
|
|
|
|
} |
13380
|
|
|
|
|
|
|
|
13381
|
|
|
|
|
|
|
|
13382
|
|
|
|
|
|
|
|
13383
|
|
|
|
|
|
|
|
13384
|
0
|
|
|
|
|
|
void pdl_cuttree_free(pdl_trans *__tr ) { |
13385
|
|
|
|
|
|
|
int __dim; |
13386
|
0
|
|
|
|
|
|
pdl_cuttree_struct *__privtrans = (pdl_cuttree_struct *) __tr; |
13387
|
|
|
|
|
|
|
|
13388
|
|
|
|
|
|
|
{ |
13389
|
|
|
|
|
|
|
|
13390
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
13391
|
|
|
|
|
|
|
|
13392
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
13393
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
13394
|
|
|
|
|
|
|
;;;;;; |
13395
|
|
|
|
|
|
|
} |
13396
|
|
|
|
|
|
|
|
13397
|
|
|
|
|
|
|
} |
13398
|
0
|
|
|
|
|
|
} |
13399
|
|
|
|
|
|
|
|
13400
|
|
|
|
|
|
|
|
13401
|
|
|
|
|
|
|
|
13402
|
|
|
|
|
|
|
|
13403
|
|
|
|
|
|
|
static char pdl_cuttree_vtable_flags[] = |
13404
|
|
|
|
|
|
|
{ 0,PDL_TPDL_VAFFINE_OK,0}; |
13405
|
|
|
|
|
|
|
pdl_transvtable pdl_cuttree_vtable = { |
13406
|
|
|
|
|
|
|
0,0, 2, 3, pdl_cuttree_vtable_flags, |
13407
|
|
|
|
|
|
|
pdl_cuttree_redodims, pdl_cuttree_readdata, NULL, |
13408
|
|
|
|
|
|
|
pdl_cuttree_free,NULL,NULL,pdl_cuttree_copy, |
13409
|
|
|
|
|
|
|
sizeof(pdl_cuttree_struct),"pdl_cuttree_vtable" |
13410
|
|
|
|
|
|
|
}; |
13411
|
|
|
|
|
|
|
|
13412
|
|
|
|
|
|
|
typedef struct pdl_somcluster_struct { |
13413
|
|
|
|
|
|
|
PDL_TRANS_START(8); |
13414
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_clusterids_2;PDL_Indx __inc_clusterids_n;PDL_Indx __n_size;PDL_Indx __2_size;PDL_Indx __d_size; |
13415
|
|
|
|
|
|
|
char *distFlag; |
13416
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
13417
|
|
|
|
|
|
|
} pdl_somcluster_struct; |
13418
|
|
|
|
|
|
|
|
13419
|
2
|
|
|
|
|
|
void pdl_somcluster_redodims(pdl_trans *__tr ) { |
13420
|
|
|
|
|
|
|
int __dim; |
13421
|
2
|
|
|
|
|
|
pdl_somcluster_struct *__privtrans = (pdl_somcluster_struct *) __tr; |
13422
|
|
|
|
|
|
|
|
13423
|
|
|
|
|
|
|
{ |
13424
|
|
|
|
|
|
|
PDL_Indx __creating[8]; |
13425
|
2
|
|
|
|
|
|
__privtrans->__n_size = -1; |
13426
|
2
|
|
|
|
|
|
__privtrans->__2_size = -1; |
13427
|
2
|
|
|
|
|
|
__privtrans->__d_size = -1; |
13428
|
2
|
|
|
|
|
|
__creating[0] = 0; |
13429
|
2
|
|
|
|
|
|
__creating[1] = 0; |
13430
|
2
|
|
|
|
|
|
__creating[2] = 0; |
13431
|
2
|
|
|
|
|
|
__creating[3] = 0; |
13432
|
2
|
|
|
|
|
|
__creating[4] = 0; |
13433
|
2
|
|
|
|
|
|
__creating[5] = 0; |
13434
|
2
|
|
|
|
|
|
__creating[6] = 0; |
13435
|
2
|
50
|
|
|
|
|
__creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]); |
|
|
0
|
|
|
|
|
|
13436
|
|
|
|
|
|
|
{ |
13437
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
13438
|
|
|
|
|
|
|
|
13439
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
13440
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
13441
|
2
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13442
|
2
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13443
|
|
|
|
|
|
|
|
13444
|
2
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13445
|
2
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13446
|
|
|
|
|
|
|
|
13447
|
2
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13448
|
2
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13449
|
|
|
|
|
|
|
|
13450
|
2
|
50
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13451
|
2
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13452
|
|
|
|
|
|
|
|
13453
|
2
|
50
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13454
|
2
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13455
|
|
|
|
|
|
|
|
13456
|
2
|
50
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13457
|
2
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13458
|
|
|
|
|
|
|
|
13459
|
2
|
50
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13460
|
2
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13461
|
|
|
|
|
|
|
|
13462
|
2
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13463
|
2
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13464
|
|
|
|
|
|
|
|
13465
|
2
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13466
|
2
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13467
|
2
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13468
|
2
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13469
|
2
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13470
|
2
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13471
|
2
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13472
|
|
|
|
|
|
|
|
13473
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13474
|
2
|
|
|
|
|
|
} } break; case PDL_S: { |
13475
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13476
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13477
|
|
|
|
|
|
|
|
13478
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13479
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13480
|
|
|
|
|
|
|
|
13481
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13482
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13483
|
|
|
|
|
|
|
|
13484
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13485
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13486
|
|
|
|
|
|
|
|
13487
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13488
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13489
|
|
|
|
|
|
|
|
13490
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13491
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13492
|
|
|
|
|
|
|
|
13493
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13494
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13495
|
|
|
|
|
|
|
|
13496
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13497
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13498
|
|
|
|
|
|
|
|
13499
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13500
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13501
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13502
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13503
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13504
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13505
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13506
|
|
|
|
|
|
|
|
13507
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13508
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
13509
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13510
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13511
|
|
|
|
|
|
|
|
13512
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13513
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13514
|
|
|
|
|
|
|
|
13515
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13516
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13517
|
|
|
|
|
|
|
|
13518
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13519
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13520
|
|
|
|
|
|
|
|
13521
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13522
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13523
|
|
|
|
|
|
|
|
13524
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13525
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13526
|
|
|
|
|
|
|
|
13527
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13528
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13529
|
|
|
|
|
|
|
|
13530
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13531
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13532
|
|
|
|
|
|
|
|
13533
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13534
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13535
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13536
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13537
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13538
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13539
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13540
|
|
|
|
|
|
|
|
13541
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13542
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
13543
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13544
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13545
|
|
|
|
|
|
|
|
13546
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13547
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13548
|
|
|
|
|
|
|
|
13549
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13550
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13551
|
|
|
|
|
|
|
|
13552
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13553
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13554
|
|
|
|
|
|
|
|
13555
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13556
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13557
|
|
|
|
|
|
|
|
13558
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13559
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13560
|
|
|
|
|
|
|
|
13561
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13562
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13563
|
|
|
|
|
|
|
|
13564
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13565
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13566
|
|
|
|
|
|
|
|
13567
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13568
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13569
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13570
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13571
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13572
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13573
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13574
|
|
|
|
|
|
|
|
13575
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13576
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
13577
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13578
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13579
|
|
|
|
|
|
|
|
13580
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13581
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13582
|
|
|
|
|
|
|
|
13583
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13584
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13585
|
|
|
|
|
|
|
|
13586
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13587
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13588
|
|
|
|
|
|
|
|
13589
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13590
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13591
|
|
|
|
|
|
|
|
13592
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13593
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13594
|
|
|
|
|
|
|
|
13595
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13596
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13597
|
|
|
|
|
|
|
|
13598
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13599
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13600
|
|
|
|
|
|
|
|
13601
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13602
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13603
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13604
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13605
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13606
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13607
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13608
|
|
|
|
|
|
|
|
13609
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13610
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
13611
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13612
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13613
|
|
|
|
|
|
|
|
13614
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13615
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13616
|
|
|
|
|
|
|
|
13617
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13618
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13619
|
|
|
|
|
|
|
|
13620
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13621
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13622
|
|
|
|
|
|
|
|
13623
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13624
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13625
|
|
|
|
|
|
|
|
13626
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13627
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13628
|
|
|
|
|
|
|
|
13629
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13630
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13631
|
|
|
|
|
|
|
|
13632
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13633
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13634
|
|
|
|
|
|
|
|
13635
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13636
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13637
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13638
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13639
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13640
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13641
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13642
|
|
|
|
|
|
|
|
13643
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13644
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
13645
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13646
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13647
|
|
|
|
|
|
|
|
13648
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13649
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13650
|
|
|
|
|
|
|
|
13651
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13652
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13653
|
|
|
|
|
|
|
|
13654
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13655
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13656
|
|
|
|
|
|
|
|
13657
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13658
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13659
|
|
|
|
|
|
|
|
13660
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13661
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13662
|
|
|
|
|
|
|
|
13663
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13664
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13665
|
|
|
|
|
|
|
|
13666
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13667
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13668
|
|
|
|
|
|
|
|
13669
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13670
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13671
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13672
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13673
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13674
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13675
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13676
|
|
|
|
|
|
|
|
13677
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13678
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
13679
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13680
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13681
|
|
|
|
|
|
|
|
13682
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13683
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13684
|
|
|
|
|
|
|
|
13685
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13686
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13687
|
|
|
|
|
|
|
|
13688
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13689
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13690
|
|
|
|
|
|
|
|
13691
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13692
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13693
|
|
|
|
|
|
|
|
13694
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13695
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13696
|
|
|
|
|
|
|
|
13697
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13698
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13699
|
|
|
|
|
|
|
|
13700
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13701
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13702
|
|
|
|
|
|
|
|
13703
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13704
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13705
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13706
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13707
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13708
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13709
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13710
|
|
|
|
|
|
|
|
13711
|
|
|
|
|
|
|
PDL_COMMENT("none") |
13712
|
0
|
|
|
|
|
|
} break;} |
13713
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
13714
|
|
|
|
|
|
|
} |
13715
|
|
|
|
|
|
|
} |
13716
|
|
|
|
|
|
|
{ |
13717
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","nxnodes","nynodes","inittau","niter","clusterids"}; |
13718
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,0,0,0,0,2}; |
13719
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::somcluster"; |
13720
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
13721
|
|
|
|
|
|
|
__funcname, __parnames, 8 |
13722
|
|
|
|
|
|
|
}; |
13723
|
|
|
|
|
|
|
|
13724
|
2
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
13725
|
|
|
|
|
|
|
__realdims,__creating,8, |
13726
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
13727
|
2
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
13728
|
|
|
|
|
|
|
0 ); |
13729
|
|
|
|
|
|
|
} |
13730
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
13731
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
13732
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
13733
|
|
|
|
|
|
|
} |
13734
|
2
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
13735
|
2
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
13736
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
13737
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
13738
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13739
|
|
|
|
|
|
|
} |
13740
|
|
|
|
|
|
|
} |
13741
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
13742
|
2
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
13743
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
13744
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
13745
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13746
|
|
|
|
|
|
|
} |
13747
|
|
|
|
|
|
|
} |
13748
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
13749
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
13750
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
13751
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
13752
|
|
|
|
|
|
|
} |
13753
|
2
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
13754
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
13755
|
2
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
13756
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
13757
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13758
|
|
|
|
|
|
|
} |
13759
|
|
|
|
|
|
|
} |
13760
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
13761
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
13762
|
2
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
13763
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
13764
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13765
|
|
|
|
|
|
|
} |
13766
|
|
|
|
|
|
|
} |
13767
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
13768
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
13769
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
13770
|
|
|
|
|
|
|
} |
13771
|
2
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
13772
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
13773
|
2
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
13774
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
13775
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13776
|
|
|
|
|
|
|
} |
13777
|
|
|
|
|
|
|
} |
13778
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
13779
|
2
|
50
|
|
|
|
|
if(!__creating[7]) { |
13780
|
2
|
50
|
|
|
|
|
if(((__privtrans->pdls[7]))->ndims < 2) { |
13781
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[7]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1; |
|
|
0
|
|
|
|
|
|
13782
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[7]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
13783
|
|
|
|
|
|
|
} |
13784
|
2
|
50
|
|
|
|
|
if(__privtrans->__2_size == -1 || (((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
13785
|
2
|
|
|
|
|
|
__privtrans->__2_size = ((__privtrans->pdls[7]))->dims[0]; |
13786
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[7]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
13787
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->dims[0] != 1) { |
13788
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13789
|
|
|
|
|
|
|
} |
13790
|
|
|
|
|
|
|
} |
13791
|
2
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
13792
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[7]))->dims[1]; |
13793
|
2
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[7]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
13794
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->dims[1] != 1) { |
13795
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in somcluster:" "Wrong dims\n"); |
13796
|
|
|
|
|
|
|
} |
13797
|
|
|
|
|
|
|
} |
13798
|
2
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[7]))); |
13799
|
|
|
|
|
|
|
} else { |
13800
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__2_size;dims[1] = __privtrans->__n_size; |
13801
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0); |
13802
|
|
|
|
|
|
|
} |
13803
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
13804
|
2
|
|
|
|
|
|
void *hdrp = NULL; |
13805
|
2
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
13806
|
2
|
|
|
|
|
|
SV *hdr_copy = NULL; |
13807
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13808
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
13809
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
13810
|
|
|
|
|
|
|
) { |
13811
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
13812
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
13813
|
|
|
|
|
|
|
} |
13814
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13815
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
13816
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
13817
|
|
|
|
|
|
|
) { |
13818
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
13819
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
13820
|
|
|
|
|
|
|
} |
13821
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13822
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
13823
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
13824
|
|
|
|
|
|
|
) { |
13825
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
13826
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
13827
|
|
|
|
|
|
|
} |
13828
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13829
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
13830
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
13831
|
|
|
|
|
|
|
) { |
13832
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
13833
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
13834
|
|
|
|
|
|
|
} |
13835
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13836
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
13837
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
13838
|
|
|
|
|
|
|
) { |
13839
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
13840
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
13841
|
|
|
|
|
|
|
} |
13842
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13843
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
13844
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
13845
|
|
|
|
|
|
|
) { |
13846
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
13847
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
13848
|
|
|
|
|
|
|
} |
13849
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13850
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
13851
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
13852
|
|
|
|
|
|
|
) { |
13853
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
13854
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
13855
|
|
|
|
|
|
|
} |
13856
|
2
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
13857
|
2
|
50
|
|
|
|
|
!__creating[7] && |
13858
|
0
|
0
|
|
|
|
|
__privtrans->pdls[7]->hdrsv && |
13859
|
0
|
|
|
|
|
|
(__privtrans->pdls[7]->state & PDL_HDRCPY) |
13860
|
|
|
|
|
|
|
) { |
13861
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[7]->hdrsv; |
13862
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0); |
13863
|
|
|
|
|
|
|
} |
13864
|
2
|
50
|
|
|
|
|
if (hdrp) { |
13865
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
13866
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
13867
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
13868
|
|
|
|
|
|
|
int count; |
13869
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
13870
|
0
|
|
|
|
|
|
dSP; |
13871
|
0
|
|
|
|
|
|
ENTER ; |
13872
|
0
|
|
|
|
|
|
SAVETMPS ; |
13873
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
13874
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
13875
|
0
|
|
|
|
|
|
PUTBACK ; |
13876
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
13877
|
0
|
|
|
|
|
|
SPAGAIN ; |
13878
|
0
|
0
|
|
|
|
|
if(count != 1) |
13879
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
13880
|
|
|
|
|
|
|
|
13881
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
13882
|
|
|
|
|
|
|
|
13883
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
13884
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
13885
|
|
|
|
|
|
|
} |
13886
|
|
|
|
|
|
|
|
13887
|
0
|
0
|
|
|
|
|
FREETMPS ; |
13888
|
0
|
|
|
|
|
|
LEAVE ; |
13889
|
|
|
|
|
|
|
|
13890
|
|
|
|
|
|
|
|
13891
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
13892
|
|
|
|
|
|
|
|
13893
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[7]->hdrsv != hdrp ){ |
13894
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
13895
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv ); |
13896
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
13897
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
13898
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->hdrsv = hdr_copy; |
13899
|
|
|
|
|
|
|
} |
13900
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
13901
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->state |= PDL_HDRCPY; |
13902
|
|
|
|
|
|
|
|
13903
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
13904
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
13905
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
13906
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
13907
|
2
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
13908
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
13909
|
2
|
50
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
13910
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
13911
|
2
|
50
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
13912
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
13913
|
2
|
50
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
13914
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
13915
|
2
|
50
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
13916
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
13917
|
2
|
50
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 0 || __privtrans->pdls[7]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
13918
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_2 = 0; else |
13919
|
2
|
50
|
|
|
|
|
__privtrans->__inc_clusterids_2 = __privtrans->pdls[7]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 1 || __privtrans->pdls[7]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
13920
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
13921
|
2
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = __privtrans->pdls[7]->dimincs[1]; __privtrans->__ddone = 1; |
13922
|
|
|
|
|
|
|
} |
13923
|
2
|
|
|
|
|
|
} |
13924
|
|
|
|
|
|
|
|
13925
|
|
|
|
|
|
|
|
13926
|
0
|
|
|
|
|
|
pdl_trans * pdl_somcluster_copy(pdl_trans *__tr ) { |
13927
|
|
|
|
|
|
|
int __dim; |
13928
|
0
|
|
|
|
|
|
pdl_somcluster_struct *__privtrans = (pdl_somcluster_struct *) __tr; |
13929
|
|
|
|
|
|
|
|
13930
|
|
|
|
|
|
|
{ |
13931
|
0
|
|
|
|
|
|
pdl_somcluster_struct *__copy = malloc(sizeof(pdl_somcluster_struct)); |
13932
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
13933
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
13934
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
13935
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
13936
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
13937
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
13938
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
13939
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
13940
|
|
|
|
|
|
|
{int i; |
13941
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
13942
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
13943
|
|
|
|
|
|
|
} |
13944
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);; |
13945
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
13946
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_clusterids_2=__copy->__inc_clusterids_2;__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__copy->__n_size=__privtrans->__n_size;__copy->__2_size=__privtrans->__2_size;__copy->__d_size=__privtrans->__d_size; |
13947
|
|
|
|
|
|
|
} |
13948
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
13949
|
|
|
|
|
|
|
} |
13950
|
|
|
|
|
|
|
} |
13951
|
|
|
|
|
|
|
|
13952
|
|
|
|
|
|
|
|
13953
|
2
|
|
|
|
|
|
void pdl_somcluster_readdata(pdl_trans *__tr ) { |
13954
|
|
|
|
|
|
|
int __dim; |
13955
|
2
|
|
|
|
|
|
pdl_somcluster_struct *__privtrans = (pdl_somcluster_struct *) __tr; |
13956
|
|
|
|
|
|
|
|
13957
|
|
|
|
|
|
|
{ |
13958
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
13959
|
|
|
|
|
|
|
|
13960
|
2
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
13961
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
13962
|
2
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
13963
|
2
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
13964
|
|
|
|
|
|
|
|
13965
|
2
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
13966
|
2
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
13967
|
|
|
|
|
|
|
|
13968
|
2
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
13969
|
2
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
13970
|
|
|
|
|
|
|
|
13971
|
2
|
50
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
13972
|
2
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
13973
|
|
|
|
|
|
|
|
13974
|
2
|
50
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
13975
|
2
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
13976
|
|
|
|
|
|
|
|
13977
|
2
|
50
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
13978
|
2
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
13979
|
|
|
|
|
|
|
|
13980
|
2
|
50
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
13981
|
2
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
13982
|
|
|
|
|
|
|
|
13983
|
2
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
13984
|
2
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
13985
|
|
|
|
|
|
|
|
13986
|
2
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
13987
|
2
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
13988
|
2
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
13989
|
2
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
13990
|
2
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
13991
|
2
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
13992
|
2
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
13993
|
|
|
|
|
|
|
|
13994
|
|
|
|
|
|
|
|
13995
|
2
|
|
|
|
|
|
int transpose = 0; |
13996
|
2
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
13997
|
2
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
13998
|
|
|
|
|
|
|
|
13999
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14000
|
2
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14001
|
2
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14002
|
2
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14003
|
2
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14004
|
2
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14005
|
2
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14006
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14007
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14008
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14009
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14010
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14011
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14012
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14013
|
2
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14014
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14015
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14016
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14017
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14018
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14019
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14020
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14021
|
2
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14022
|
2
|
|
|
|
|
|
data_datap += __offsp[0]; |
14023
|
2
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14024
|
2
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14025
|
2
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14026
|
2
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14027
|
2
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14028
|
2
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14029
|
2
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14030
|
4
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
14031
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14032
|
2
|
|
|
|
|
|
__tind2++ |
14033
|
2
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14034
|
2
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14035
|
2
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14036
|
2
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14037
|
2
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14038
|
2
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14039
|
2
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14040
|
2
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14041
|
|
|
|
|
|
|
) |
14042
|
|
|
|
|
|
|
{ |
14043
|
4
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
14044
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14045
|
2
|
|
|
|
|
|
__tind1++ |
14046
|
2
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14047
|
2
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14048
|
2
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14049
|
2
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14050
|
2
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14051
|
2
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14052
|
2
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14053
|
2
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14054
|
|
|
|
|
|
|
) |
14055
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14056
|
2
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14057
|
2
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14058
|
2
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14059
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14060
|
2
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14061
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14062
|
|
|
|
|
|
|
|
14063
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14064
|
|
|
|
|
|
|
} |
14065
|
|
|
|
|
|
|
} |
14066
|
2
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14067
|
2
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14068
|
2
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14069
|
2
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14070
|
2
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14071
|
2
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14072
|
2
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14073
|
2
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14074
|
2
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14075
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14076
|
2
|
50
|
|
|
|
|
if (datapp) free(datapp); |
14077
|
2
|
50
|
|
|
|
|
if (maskpp) free(maskpp); |
14078
|
|
|
|
|
|
|
|
14079
|
2
|
|
|
|
|
|
} } break; case PDL_S: { |
14080
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14081
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14082
|
|
|
|
|
|
|
|
14083
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14084
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14085
|
|
|
|
|
|
|
|
14086
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14087
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14088
|
|
|
|
|
|
|
|
14089
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14090
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14091
|
|
|
|
|
|
|
|
14092
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14093
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14094
|
|
|
|
|
|
|
|
14095
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14096
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14097
|
|
|
|
|
|
|
|
14098
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14099
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14100
|
|
|
|
|
|
|
|
14101
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14102
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14103
|
|
|
|
|
|
|
|
14104
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14105
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14106
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14107
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14108
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14109
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14110
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14111
|
|
|
|
|
|
|
|
14112
|
|
|
|
|
|
|
|
14113
|
0
|
|
|
|
|
|
int transpose = 0; |
14114
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14115
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14116
|
|
|
|
|
|
|
|
14117
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14118
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14119
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14120
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14121
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14122
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14123
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14124
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14125
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14126
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14127
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14128
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14129
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14130
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14131
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14132
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14133
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14134
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14135
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14136
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14137
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14138
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14139
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14140
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14141
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14142
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14143
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14144
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14145
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14146
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14147
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14148
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14149
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14150
|
0
|
|
|
|
|
|
__tind2++ |
14151
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14152
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14153
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14154
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14155
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14156
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14157
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14158
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14159
|
|
|
|
|
|
|
) |
14160
|
|
|
|
|
|
|
{ |
14161
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14162
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14163
|
0
|
|
|
|
|
|
__tind1++ |
14164
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14165
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14166
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14167
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14168
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14169
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14170
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14171
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14172
|
|
|
|
|
|
|
) |
14173
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14174
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14175
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14176
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14177
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14178
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14179
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14180
|
|
|
|
|
|
|
|
14181
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14182
|
|
|
|
|
|
|
} |
14183
|
|
|
|
|
|
|
} |
14184
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14185
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14186
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14187
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14188
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14189
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14190
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14191
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14192
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14193
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14194
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14195
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14196
|
|
|
|
|
|
|
|
14197
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
14198
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14199
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14200
|
|
|
|
|
|
|
|
14201
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14202
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14203
|
|
|
|
|
|
|
|
14204
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14205
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14206
|
|
|
|
|
|
|
|
14207
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14208
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14209
|
|
|
|
|
|
|
|
14210
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14211
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14212
|
|
|
|
|
|
|
|
14213
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14214
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14215
|
|
|
|
|
|
|
|
14216
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14217
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14218
|
|
|
|
|
|
|
|
14219
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14220
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14221
|
|
|
|
|
|
|
|
14222
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14223
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14224
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14225
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14226
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14227
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14228
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14229
|
|
|
|
|
|
|
|
14230
|
|
|
|
|
|
|
|
14231
|
0
|
|
|
|
|
|
int transpose = 0; |
14232
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14233
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14234
|
|
|
|
|
|
|
|
14235
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14236
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14237
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14238
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14239
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14240
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14241
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14242
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14243
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14244
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14245
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14246
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14247
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14248
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14249
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14250
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14251
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14252
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14253
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14254
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14255
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14256
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14257
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14258
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14259
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14260
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14261
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14262
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14263
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14264
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14265
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14266
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14267
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14268
|
0
|
|
|
|
|
|
__tind2++ |
14269
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14270
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14271
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14272
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14273
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14274
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14275
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14276
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14277
|
|
|
|
|
|
|
) |
14278
|
|
|
|
|
|
|
{ |
14279
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14280
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14281
|
0
|
|
|
|
|
|
__tind1++ |
14282
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14283
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14284
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14285
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14286
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14287
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14288
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14289
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14290
|
|
|
|
|
|
|
) |
14291
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14292
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14293
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14294
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14295
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14296
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14297
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14298
|
|
|
|
|
|
|
|
14299
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14300
|
|
|
|
|
|
|
} |
14301
|
|
|
|
|
|
|
} |
14302
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14303
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14304
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14305
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14306
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14307
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14308
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14309
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14310
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14311
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14312
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14313
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14314
|
|
|
|
|
|
|
|
14315
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
14316
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14317
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14318
|
|
|
|
|
|
|
|
14319
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14320
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14321
|
|
|
|
|
|
|
|
14322
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14323
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14324
|
|
|
|
|
|
|
|
14325
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14326
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14327
|
|
|
|
|
|
|
|
14328
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14329
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14330
|
|
|
|
|
|
|
|
14331
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14332
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14333
|
|
|
|
|
|
|
|
14334
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14335
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14336
|
|
|
|
|
|
|
|
14337
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14338
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14339
|
|
|
|
|
|
|
|
14340
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14341
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14342
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14344
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14345
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14346
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14347
|
|
|
|
|
|
|
|
14348
|
|
|
|
|
|
|
|
14349
|
0
|
|
|
|
|
|
int transpose = 0; |
14350
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14351
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14352
|
|
|
|
|
|
|
|
14353
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14354
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14355
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14356
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14357
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14358
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14359
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14360
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14361
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14362
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14363
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14364
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14365
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14366
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14367
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14368
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14369
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14370
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14371
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14372
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14373
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14374
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14375
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14376
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14377
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14378
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14379
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14380
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14381
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14382
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14383
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14384
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14385
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14386
|
0
|
|
|
|
|
|
__tind2++ |
14387
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14388
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14389
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14390
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14391
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14392
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14393
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14394
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14395
|
|
|
|
|
|
|
) |
14396
|
|
|
|
|
|
|
{ |
14397
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14398
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14399
|
0
|
|
|
|
|
|
__tind1++ |
14400
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14401
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14402
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14403
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14404
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14405
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14406
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14407
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14408
|
|
|
|
|
|
|
) |
14409
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14410
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14411
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14412
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14413
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14414
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14415
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14416
|
|
|
|
|
|
|
|
14417
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14418
|
|
|
|
|
|
|
} |
14419
|
|
|
|
|
|
|
} |
14420
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14421
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14422
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14423
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14424
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14425
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14426
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14427
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14428
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14429
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14430
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14431
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14432
|
|
|
|
|
|
|
|
14433
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
14434
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14435
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14436
|
|
|
|
|
|
|
|
14437
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14438
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14439
|
|
|
|
|
|
|
|
14440
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14441
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14442
|
|
|
|
|
|
|
|
14443
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14444
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14445
|
|
|
|
|
|
|
|
14446
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14447
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14448
|
|
|
|
|
|
|
|
14449
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14450
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14451
|
|
|
|
|
|
|
|
14452
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14453
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14454
|
|
|
|
|
|
|
|
14455
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14456
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14457
|
|
|
|
|
|
|
|
14458
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14459
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14460
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14461
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14462
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14463
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14464
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14465
|
|
|
|
|
|
|
|
14466
|
|
|
|
|
|
|
|
14467
|
0
|
|
|
|
|
|
int transpose = 0; |
14468
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14469
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14470
|
|
|
|
|
|
|
|
14471
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14472
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14473
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14474
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14475
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14476
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14477
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14478
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14479
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14480
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14481
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14482
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14483
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14484
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14485
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14486
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14487
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14488
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14489
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14490
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14491
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14492
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14493
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14494
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14495
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14496
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14497
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14498
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14499
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14500
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14501
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14502
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14503
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14504
|
0
|
|
|
|
|
|
__tind2++ |
14505
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14506
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14507
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14508
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14509
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14510
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14511
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14512
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14513
|
|
|
|
|
|
|
) |
14514
|
|
|
|
|
|
|
{ |
14515
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14516
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14517
|
0
|
|
|
|
|
|
__tind1++ |
14518
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14519
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14520
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14521
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14522
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14523
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14524
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14525
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14526
|
|
|
|
|
|
|
) |
14527
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14528
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14529
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14530
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14531
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14532
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14533
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14534
|
|
|
|
|
|
|
|
14535
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14536
|
|
|
|
|
|
|
} |
14537
|
|
|
|
|
|
|
} |
14538
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14539
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14540
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14541
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14542
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14543
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14544
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14545
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14546
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14547
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14548
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14549
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14550
|
|
|
|
|
|
|
|
14551
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
14552
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14553
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14554
|
|
|
|
|
|
|
|
14555
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14556
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14557
|
|
|
|
|
|
|
|
14558
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14559
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14560
|
|
|
|
|
|
|
|
14561
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14562
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14563
|
|
|
|
|
|
|
|
14564
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14565
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14566
|
|
|
|
|
|
|
|
14567
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14568
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14569
|
|
|
|
|
|
|
|
14570
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14571
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14572
|
|
|
|
|
|
|
|
14573
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14574
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14575
|
|
|
|
|
|
|
|
14576
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14577
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14578
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14581
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14583
|
|
|
|
|
|
|
|
14584
|
|
|
|
|
|
|
|
14585
|
0
|
|
|
|
|
|
int transpose = 0; |
14586
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14587
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14588
|
|
|
|
|
|
|
|
14589
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14590
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14591
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14592
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14593
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14594
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14595
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14596
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14597
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14598
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14599
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14600
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14601
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14602
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14603
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14604
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14605
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14606
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14607
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14608
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14609
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14610
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14611
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14612
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14613
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14614
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14615
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14616
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14617
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14618
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14619
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14620
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14621
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14622
|
0
|
|
|
|
|
|
__tind2++ |
14623
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14624
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14625
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14626
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14627
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14628
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14629
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14630
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14631
|
|
|
|
|
|
|
) |
14632
|
|
|
|
|
|
|
{ |
14633
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14634
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14635
|
0
|
|
|
|
|
|
__tind1++ |
14636
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14637
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14638
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14639
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14640
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14641
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14642
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14643
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14644
|
|
|
|
|
|
|
) |
14645
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14646
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14647
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14648
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14649
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14650
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14651
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14652
|
|
|
|
|
|
|
|
14653
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14654
|
|
|
|
|
|
|
} |
14655
|
|
|
|
|
|
|
} |
14656
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14657
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14658
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14659
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14660
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14661
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14662
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14663
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14664
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14665
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14666
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14667
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14668
|
|
|
|
|
|
|
|
14669
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
14670
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14671
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14672
|
|
|
|
|
|
|
|
14673
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14674
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14675
|
|
|
|
|
|
|
|
14676
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14677
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14678
|
|
|
|
|
|
|
|
14679
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14680
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14681
|
|
|
|
|
|
|
|
14682
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14683
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14684
|
|
|
|
|
|
|
|
14685
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14686
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14687
|
|
|
|
|
|
|
|
14688
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14689
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14690
|
|
|
|
|
|
|
|
14691
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14692
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14693
|
|
|
|
|
|
|
|
14694
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14695
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14696
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14697
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14698
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14699
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14700
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14701
|
|
|
|
|
|
|
|
14702
|
|
|
|
|
|
|
|
14703
|
0
|
|
|
|
|
|
int transpose = 0; |
14704
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14705
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14706
|
|
|
|
|
|
|
|
14707
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14708
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14709
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14710
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14711
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14712
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14713
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14714
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14715
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14716
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14717
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14718
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14719
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14720
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14721
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14722
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14723
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14724
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14725
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14726
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14727
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14728
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14729
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14730
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14731
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14732
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14733
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14734
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14735
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14736
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14737
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14738
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14739
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14740
|
0
|
|
|
|
|
|
__tind2++ |
14741
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14742
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14743
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14744
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14745
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14746
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14747
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14748
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14749
|
|
|
|
|
|
|
) |
14750
|
|
|
|
|
|
|
{ |
14751
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14752
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14753
|
0
|
|
|
|
|
|
__tind1++ |
14754
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14755
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14756
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14757
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14758
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14759
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14760
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14761
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14762
|
|
|
|
|
|
|
) |
14763
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14764
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14765
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14766
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14767
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14768
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14769
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14770
|
|
|
|
|
|
|
|
14771
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14772
|
|
|
|
|
|
|
} |
14773
|
|
|
|
|
|
|
} |
14774
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14775
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14776
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14777
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14778
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14779
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14780
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14781
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14782
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14783
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14784
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14785
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14786
|
|
|
|
|
|
|
|
14787
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
14788
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14789
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14790
|
|
|
|
|
|
|
|
14791
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14792
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
14793
|
|
|
|
|
|
|
|
14794
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14795
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14796
|
|
|
|
|
|
|
|
14797
|
0
|
0
|
|
|
|
|
PDL_Long * nxnodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
14798
|
0
|
|
|
|
|
|
PDL_Long * nxnodes_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
14799
|
|
|
|
|
|
|
|
14800
|
0
|
0
|
|
|
|
|
PDL_Long * nynodes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
14801
|
0
|
|
|
|
|
|
PDL_Long * nynodes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
14802
|
|
|
|
|
|
|
|
14803
|
0
|
0
|
|
|
|
|
PDL_Double * inittau_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
14804
|
0
|
|
|
|
|
|
PDL_Double * inittau_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
14805
|
|
|
|
|
|
|
|
14806
|
0
|
0
|
|
|
|
|
PDL_Long * niter_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
14807
|
0
|
|
|
|
|
|
PDL_Long * niter_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
14808
|
|
|
|
|
|
|
|
14809
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
14810
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
14811
|
|
|
|
|
|
|
|
14812
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
14813
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
14814
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
14815
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
14816
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_2 = __privtrans->__inc_clusterids_2; |
14817
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
14818
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
14819
|
|
|
|
|
|
|
|
14820
|
|
|
|
|
|
|
|
14821
|
0
|
|
|
|
|
|
int transpose = 0; |
14822
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
14823
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
14824
|
|
|
|
|
|
|
|
14825
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
14826
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
14827
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
14828
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
14829
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
14830
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
14831
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
14832
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
14833
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
14834
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
14835
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
14836
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
14837
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
14838
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
14839
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
14840
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
14841
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
14842
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
14843
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
14844
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
14845
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
14846
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
14847
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
14848
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
14849
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
14850
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
14851
|
0
|
|
|
|
|
|
nxnodes_datap += __offsp[3]; |
14852
|
0
|
|
|
|
|
|
nynodes_datap += __offsp[4]; |
14853
|
0
|
|
|
|
|
|
inittau_datap += __offsp[5]; |
14854
|
0
|
|
|
|
|
|
niter_datap += __offsp[6]; |
14855
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[7]; |
14856
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
14857
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
14858
|
0
|
|
|
|
|
|
__tind2++ |
14859
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
14860
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
14861
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
14862
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
14863
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
14864
|
0
|
|
|
|
|
|
,inittau_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
14865
|
0
|
|
|
|
|
|
,niter_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
14866
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
14867
|
|
|
|
|
|
|
) |
14868
|
|
|
|
|
|
|
{ |
14869
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
14870
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
14871
|
0
|
|
|
|
|
|
__tind1++ |
14872
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
14873
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
14874
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
14875
|
0
|
|
|
|
|
|
,nxnodes_datap += __tinc0_3 |
14876
|
0
|
|
|
|
|
|
,nynodes_datap += __tinc0_4 |
14877
|
0
|
|
|
|
|
|
,inittau_datap += __tinc0_5 |
14878
|
0
|
|
|
|
|
|
,niter_datap += __tinc0_6 |
14879
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_7 |
14880
|
|
|
|
|
|
|
) |
14881
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
14882
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
14883
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
14884
|
0
|
|
|
|
|
|
somcluster(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, |
14885
|
|
|
|
|
|
|
weight_datap, transpose, (nxnodes_datap)[0] PDL_COMMENT("ACCESS()") , (nynodes_datap)[0] PDL_COMMENT("ACCESS()") , |
14886
|
0
|
|
|
|
|
|
(inittau_datap)[0] PDL_COMMENT("ACCESS()") , (niter_datap)[0] PDL_COMMENT("ACCESS()") , *__privtrans->distFlag, NULL, |
14887
|
|
|
|
|
|
|
(int (*)[2])(clusterids_datap)); |
14888
|
|
|
|
|
|
|
|
14889
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
14890
|
|
|
|
|
|
|
} |
14891
|
|
|
|
|
|
|
} |
14892
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
14893
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
14894
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
14895
|
0
|
|
|
|
|
|
nxnodes_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
14896
|
0
|
|
|
|
|
|
nynodes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
14897
|
0
|
|
|
|
|
|
inittau_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
14898
|
0
|
|
|
|
|
|
niter_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
14899
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
14900
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
14901
|
|
|
|
|
|
|
/*-- cleanup --*/ |
14902
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
14903
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
14904
|
|
|
|
|
|
|
|
14905
|
0
|
|
|
|
|
|
} break;} |
14906
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
14907
|
|
|
|
|
|
|
} |
14908
|
|
|
|
|
|
|
} |
14909
|
|
|
|
|
|
|
} |
14910
|
|
|
|
|
|
|
|
14911
|
|
|
|
|
|
|
|
14912
|
|
|
|
|
|
|
|
14913
|
|
|
|
|
|
|
|
14914
|
2
|
|
|
|
|
|
void pdl_somcluster_free(pdl_trans *__tr ) { |
14915
|
|
|
|
|
|
|
int __dim; |
14916
|
2
|
|
|
|
|
|
pdl_somcluster_struct *__privtrans = (pdl_somcluster_struct *) __tr; |
14917
|
|
|
|
|
|
|
|
14918
|
|
|
|
|
|
|
{ |
14919
|
|
|
|
|
|
|
|
14920
|
2
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
14921
|
2
|
|
|
|
|
|
free(__privtrans->distFlag);; |
14922
|
2
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
14923
|
2
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
14924
|
|
|
|
|
|
|
;;;;;;;;;;; |
14925
|
|
|
|
|
|
|
} |
14926
|
|
|
|
|
|
|
|
14927
|
|
|
|
|
|
|
} |
14928
|
2
|
|
|
|
|
|
} |
14929
|
|
|
|
|
|
|
|
14930
|
|
|
|
|
|
|
|
14931
|
|
|
|
|
|
|
|
14932
|
|
|
|
|
|
|
|
14933
|
|
|
|
|
|
|
static char pdl_somcluster_vtable_flags[] = |
14934
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,0}; |
14935
|
|
|
|
|
|
|
pdl_transvtable pdl_somcluster_vtable = { |
14936
|
|
|
|
|
|
|
0,0, 7, 8, pdl_somcluster_vtable_flags, |
14937
|
|
|
|
|
|
|
pdl_somcluster_redodims, pdl_somcluster_readdata, NULL, |
14938
|
|
|
|
|
|
|
pdl_somcluster_free,NULL,NULL,pdl_somcluster_copy, |
14939
|
|
|
|
|
|
|
sizeof(pdl_somcluster_struct),"pdl_somcluster_vtable" |
14940
|
|
|
|
|
|
|
}; |
14941
|
|
|
|
|
|
|
|
14942
|
|
|
|
|
|
|
typedef struct pdl_pca_struct { |
14943
|
|
|
|
|
|
|
PDL_TRANS_START(3); |
14944
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_U_d;PDL_Indx __inc_U_n;PDL_Indx __inc_S_d;PDL_Indx __inc_V_d0;PDL_Indx __inc_V_d1;PDL_Indx __n_size;PDL_Indx __d_size; |
14945
|
|
|
|
|
|
|
|
14946
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
14947
|
|
|
|
|
|
|
} pdl_pca_struct; |
14948
|
|
|
|
|
|
|
|
14949
|
0
|
|
|
|
|
|
void pdl_pca_redodims(pdl_trans *__tr ) { |
14950
|
|
|
|
|
|
|
int __dim; |
14951
|
0
|
|
|
|
|
|
pdl_pca_struct *__privtrans = (pdl_pca_struct *) __tr; |
14952
|
|
|
|
|
|
|
|
14953
|
|
|
|
|
|
|
{ |
14954
|
|
|
|
|
|
|
PDL_Indx __creating[3]; |
14955
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
14956
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
14957
|
0
|
0
|
|
|
|
|
__creating[0] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[0]); |
|
|
0
|
|
|
|
|
|
14958
|
0
|
0
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
0
|
|
|
|
|
|
14959
|
0
|
0
|
|
|
|
|
__creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]); |
|
|
0
|
|
|
|
|
|
14960
|
|
|
|
|
|
|
{ |
14961
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
14962
|
|
|
|
|
|
|
|
14963
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
14964
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
14965
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14966
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14967
|
|
|
|
|
|
|
|
14968
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14969
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
14970
|
|
|
|
|
|
|
|
14971
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14972
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14973
|
|
|
|
|
|
|
|
14974
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
14975
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
14976
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
14977
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
14978
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
14979
|
|
|
|
|
|
|
|
14980
|
|
|
|
|
|
|
PDL_COMMENT("none") |
14981
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
14982
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
14983
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
14984
|
|
|
|
|
|
|
|
14985
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
14986
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
14987
|
|
|
|
|
|
|
|
14988
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
14989
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
14990
|
|
|
|
|
|
|
|
14991
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
14992
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
14993
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
14994
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
14995
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
14996
|
|
|
|
|
|
|
|
14997
|
|
|
|
|
|
|
PDL_COMMENT("none") |
14998
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
14999
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15000
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15001
|
|
|
|
|
|
|
|
15002
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15003
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15004
|
|
|
|
|
|
|
|
15005
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15006
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15007
|
|
|
|
|
|
|
|
15008
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15009
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15010
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15011
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15012
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15013
|
|
|
|
|
|
|
|
15014
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15015
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
15016
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15017
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15018
|
|
|
|
|
|
|
|
15019
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15020
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15021
|
|
|
|
|
|
|
|
15022
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15023
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15024
|
|
|
|
|
|
|
|
15025
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15026
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15027
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15028
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15029
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15030
|
|
|
|
|
|
|
|
15031
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15032
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
15033
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15034
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15035
|
|
|
|
|
|
|
|
15036
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15037
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15038
|
|
|
|
|
|
|
|
15039
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15040
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15041
|
|
|
|
|
|
|
|
15042
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15043
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15044
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15045
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15046
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15047
|
|
|
|
|
|
|
|
15048
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15049
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
15050
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15051
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15052
|
|
|
|
|
|
|
|
15053
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15054
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15055
|
|
|
|
|
|
|
|
15056
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15057
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15058
|
|
|
|
|
|
|
|
15059
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15060
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15061
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15062
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15063
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15064
|
|
|
|
|
|
|
|
15065
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15066
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
15067
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15068
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15069
|
|
|
|
|
|
|
|
15070
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15071
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15072
|
|
|
|
|
|
|
|
15073
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15074
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15075
|
|
|
|
|
|
|
|
15076
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15077
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15078
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15079
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15080
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15081
|
|
|
|
|
|
|
|
15082
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15083
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
15084
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15085
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15086
|
|
|
|
|
|
|
|
15087
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15088
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15089
|
|
|
|
|
|
|
|
15090
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15091
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15092
|
|
|
|
|
|
|
|
15093
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15094
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15095
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15096
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15097
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15098
|
|
|
|
|
|
|
|
15099
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15100
|
0
|
|
|
|
|
|
} break;} |
15101
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
15102
|
|
|
|
|
|
|
} |
15103
|
|
|
|
|
|
|
} |
15104
|
|
|
|
|
|
|
{ |
15105
|
|
|
|
|
|
|
static char *__parnames[] = {"U","S","V"}; |
15106
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,1,2}; |
15107
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::pca"; |
15108
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
15109
|
|
|
|
|
|
|
__funcname, __parnames, 3 |
15110
|
|
|
|
|
|
|
}; |
15111
|
|
|
|
|
|
|
|
15112
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
15113
|
|
|
|
|
|
|
__realdims,__creating,3, |
15114
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
15115
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
15116
|
|
|
|
|
|
|
0 ); |
15117
|
|
|
|
|
|
|
} |
15118
|
0
|
0
|
|
|
|
|
if(!__creating[0]) { |
15119
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
15120
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
15121
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
15122
|
|
|
|
|
|
|
} |
15123
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
15124
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
15125
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
15126
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
15127
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in pca:" "Wrong dims\n"); |
15128
|
|
|
|
|
|
|
} |
15129
|
|
|
|
|
|
|
} |
15130
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
15131
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
15132
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
15133
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
15134
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in pca:" "Wrong dims\n"); |
15135
|
|
|
|
|
|
|
} |
15136
|
|
|
|
|
|
|
} |
15137
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
15138
|
|
|
|
|
|
|
} else { |
15139
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;dims[1] = __privtrans->__n_size; |
15140
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,0,dims,0); |
15141
|
0
|
0
|
|
|
|
|
}if(!__creating[1]) { |
15142
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 1) { |
15143
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
15144
|
|
|
|
|
|
|
} |
15145
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
15146
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
15147
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
15148
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
15149
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in pca:" "Wrong dims\n"); |
15150
|
|
|
|
|
|
|
} |
15151
|
|
|
|
|
|
|
} |
15152
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
15153
|
|
|
|
|
|
|
} else { |
15154
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size; |
15155
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
15156
|
0
|
0
|
|
|
|
|
}if(!__creating[2]) { |
15157
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 2) { |
15158
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
15159
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
15160
|
|
|
|
|
|
|
} |
15161
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
15162
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
15163
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
15164
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
15165
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in pca:" "Wrong dims\n"); |
15166
|
|
|
|
|
|
|
} |
15167
|
|
|
|
|
|
|
} |
15168
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
15169
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[1]; |
15170
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
15171
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[1] != 1) { |
15172
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in pca:" "Wrong dims\n"); |
15173
|
|
|
|
|
|
|
} |
15174
|
|
|
|
|
|
|
} |
15175
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
15176
|
|
|
|
|
|
|
} else { |
15177
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;dims[1] = __privtrans->__d_size; |
15178
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,0); |
15179
|
|
|
|
|
|
|
} |
15180
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
15181
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
15182
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
15183
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
15184
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
15185
|
0
|
0
|
|
|
|
|
!__creating[0] && |
15186
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
15187
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
15188
|
|
|
|
|
|
|
) { |
15189
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
15190
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
15191
|
|
|
|
|
|
|
} |
15192
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
15193
|
0
|
0
|
|
|
|
|
!__creating[1] && |
15194
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
15195
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
15196
|
|
|
|
|
|
|
) { |
15197
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
15198
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
15199
|
|
|
|
|
|
|
} |
15200
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
15201
|
0
|
0
|
|
|
|
|
!__creating[2] && |
15202
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
15203
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
15204
|
|
|
|
|
|
|
) { |
15205
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
15206
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
15207
|
|
|
|
|
|
|
} |
15208
|
0
|
0
|
|
|
|
|
if (hdrp) { |
15209
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
15210
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
15211
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
15212
|
|
|
|
|
|
|
int count; |
15213
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
15214
|
0
|
|
|
|
|
|
dSP; |
15215
|
0
|
|
|
|
|
|
ENTER ; |
15216
|
0
|
|
|
|
|
|
SAVETMPS ; |
15217
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
15218
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
15219
|
0
|
|
|
|
|
|
PUTBACK ; |
15220
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
15221
|
0
|
|
|
|
|
|
SPAGAIN ; |
15222
|
0
|
0
|
|
|
|
|
if(count != 1) |
15223
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
15224
|
|
|
|
|
|
|
|
15225
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
15226
|
|
|
|
|
|
|
|
15227
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
15228
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
15229
|
|
|
|
|
|
|
} |
15230
|
|
|
|
|
|
|
|
15231
|
0
|
0
|
|
|
|
|
FREETMPS ; |
15232
|
0
|
|
|
|
|
|
LEAVE ; |
15233
|
|
|
|
|
|
|
|
15234
|
|
|
|
|
|
|
|
15235
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
15236
|
|
|
|
|
|
|
|
15237
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[0]->hdrsv != hdrp ){ |
15238
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[0]->hdrsv && __privtrans->pdls[0]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
15239
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[0]->hdrsv ); |
15240
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
15241
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
15242
|
0
|
|
|
|
|
|
__privtrans->pdls[0]->hdrsv = hdr_copy; |
15243
|
|
|
|
|
|
|
} |
15244
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
15245
|
0
|
|
|
|
|
|
__privtrans->pdls[0]->state |= PDL_HDRCPY; |
15246
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
15247
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
15248
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
15249
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
15250
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
15251
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
15252
|
|
|
|
|
|
|
} |
15253
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
15254
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
15255
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[2]->hdrsv != hdrp ){ |
15256
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
15257
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv ); |
15258
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
15259
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
15260
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->hdrsv = hdr_copy; |
15261
|
|
|
|
|
|
|
} |
15262
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
15263
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->state |= PDL_HDRCPY; |
15264
|
|
|
|
|
|
|
|
15265
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
15266
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
15267
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
15268
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
15269
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
15270
|
0
|
|
|
|
|
|
__privtrans->__inc_U_d = 0; else |
15271
|
0
|
0
|
|
|
|
|
__privtrans->__inc_U_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
15272
|
0
|
|
|
|
|
|
__privtrans->__inc_U_n = 0; else |
15273
|
0
|
0
|
|
|
|
|
__privtrans->__inc_U_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
15274
|
0
|
|
|
|
|
|
__privtrans->__inc_S_d = 0; else |
15275
|
0
|
0
|
|
|
|
|
__privtrans->__inc_S_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
15276
|
0
|
|
|
|
|
|
__privtrans->__inc_V_d0 = 0; else |
15277
|
0
|
0
|
|
|
|
|
__privtrans->__inc_V_d0 = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
15278
|
0
|
|
|
|
|
|
__privtrans->__inc_V_d1 = 0; else |
15279
|
0
|
|
|
|
|
|
__privtrans->__inc_V_d1 = __privtrans->pdls[2]->dimincs[1]; __privtrans->__ddone = 1; |
15280
|
|
|
|
|
|
|
} |
15281
|
0
|
|
|
|
|
|
} |
15282
|
|
|
|
|
|
|
|
15283
|
|
|
|
|
|
|
|
15284
|
0
|
|
|
|
|
|
pdl_trans * pdl_pca_copy(pdl_trans *__tr ) { |
15285
|
|
|
|
|
|
|
int __dim; |
15286
|
0
|
|
|
|
|
|
pdl_pca_struct *__privtrans = (pdl_pca_struct *) __tr; |
15287
|
|
|
|
|
|
|
|
15288
|
|
|
|
|
|
|
{ |
15289
|
0
|
|
|
|
|
|
pdl_pca_struct *__copy = malloc(sizeof(pdl_pca_struct)); |
15290
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
15291
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
15292
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
15293
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
15294
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
15295
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
15296
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
15297
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
15298
|
|
|
|
|
|
|
{int i; |
15299
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
15300
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
15301
|
|
|
|
|
|
|
} |
15302
|
|
|
|
|
|
|
|
15303
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
15304
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_U_d=__copy->__inc_U_d;__privtrans->__inc_U_n=__copy->__inc_U_n;__privtrans->__inc_S_d=__copy->__inc_S_d;__privtrans->__inc_V_d0=__copy->__inc_V_d0;__privtrans->__inc_V_d1=__copy->__inc_V_d1;__copy->__n_size=__privtrans->__n_size;__copy->__d_size=__privtrans->__d_size; |
15305
|
|
|
|
|
|
|
} |
15306
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
15307
|
|
|
|
|
|
|
} |
15308
|
|
|
|
|
|
|
} |
15309
|
|
|
|
|
|
|
|
15310
|
|
|
|
|
|
|
|
15311
|
0
|
|
|
|
|
|
void pdl_pca_readdata(pdl_trans *__tr ) { |
15312
|
|
|
|
|
|
|
int __dim; |
15313
|
0
|
|
|
|
|
|
pdl_pca_struct *__privtrans = (pdl_pca_struct *) __tr; |
15314
|
|
|
|
|
|
|
|
15315
|
|
|
|
|
|
|
{ |
15316
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
15317
|
|
|
|
|
|
|
|
15318
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
15319
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
15320
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15321
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15322
|
|
|
|
|
|
|
|
15323
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15324
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15325
|
|
|
|
|
|
|
|
15326
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15327
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15328
|
|
|
|
|
|
|
|
15329
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15330
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15331
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15332
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15333
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15334
|
|
|
|
|
|
|
|
15335
|
|
|
|
|
|
|
|
15336
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15337
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15338
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15339
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15340
|
|
|
|
|
|
|
} |
15341
|
|
|
|
|
|
|
|
15342
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15343
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15344
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15345
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15346
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15347
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15348
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15349
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15350
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15351
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15352
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15353
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15354
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15355
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15356
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15357
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15358
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15359
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15360
|
0
|
|
|
|
|
|
__tind2++ |
15361
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15362
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15363
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15364
|
|
|
|
|
|
|
) |
15365
|
|
|
|
|
|
|
{ |
15366
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15367
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15368
|
0
|
|
|
|
|
|
__tind1++ |
15369
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15370
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15371
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15372
|
|
|
|
|
|
|
) |
15373
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15374
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15375
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15376
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15377
|
|
|
|
|
|
|
|
15378
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15379
|
|
|
|
|
|
|
} |
15380
|
|
|
|
|
|
|
} |
15381
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15382
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15383
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15384
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15385
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15386
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15387
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15388
|
|
|
|
|
|
|
|
15389
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
15390
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15391
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15392
|
|
|
|
|
|
|
|
15393
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15394
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15395
|
|
|
|
|
|
|
|
15396
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15397
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15398
|
|
|
|
|
|
|
|
15399
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15400
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15401
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15402
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15403
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15404
|
|
|
|
|
|
|
|
15405
|
|
|
|
|
|
|
|
15406
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15407
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15408
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15409
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15410
|
|
|
|
|
|
|
} |
15411
|
|
|
|
|
|
|
|
15412
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15413
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15414
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15415
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15416
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15417
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15418
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15419
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15420
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15421
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15422
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15423
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15424
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15425
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15426
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15427
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15428
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15429
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15430
|
0
|
|
|
|
|
|
__tind2++ |
15431
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15432
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15433
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15434
|
|
|
|
|
|
|
) |
15435
|
|
|
|
|
|
|
{ |
15436
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15437
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15438
|
0
|
|
|
|
|
|
__tind1++ |
15439
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15440
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15441
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15442
|
|
|
|
|
|
|
) |
15443
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15444
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15445
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15446
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15447
|
|
|
|
|
|
|
|
15448
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15449
|
|
|
|
|
|
|
} |
15450
|
|
|
|
|
|
|
} |
15451
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15452
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15453
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15454
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15455
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15456
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15457
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15458
|
|
|
|
|
|
|
|
15459
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
15460
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15461
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15462
|
|
|
|
|
|
|
|
15463
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15464
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15465
|
|
|
|
|
|
|
|
15466
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15467
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15468
|
|
|
|
|
|
|
|
15469
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15470
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15471
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15472
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15473
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15474
|
|
|
|
|
|
|
|
15475
|
|
|
|
|
|
|
|
15476
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15477
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15478
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15479
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15480
|
|
|
|
|
|
|
} |
15481
|
|
|
|
|
|
|
|
15482
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15483
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15484
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15485
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15486
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15487
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15488
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15489
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15490
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15491
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15492
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15493
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15494
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15495
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15496
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15497
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15498
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15499
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15500
|
0
|
|
|
|
|
|
__tind2++ |
15501
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15502
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15503
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15504
|
|
|
|
|
|
|
) |
15505
|
|
|
|
|
|
|
{ |
15506
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15507
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15508
|
0
|
|
|
|
|
|
__tind1++ |
15509
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15510
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15511
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15512
|
|
|
|
|
|
|
) |
15513
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15514
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15515
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15516
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15517
|
|
|
|
|
|
|
|
15518
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15519
|
|
|
|
|
|
|
} |
15520
|
|
|
|
|
|
|
} |
15521
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15522
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15523
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15524
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15525
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15526
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15527
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15528
|
|
|
|
|
|
|
|
15529
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
15530
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15531
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15532
|
|
|
|
|
|
|
|
15533
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15534
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15535
|
|
|
|
|
|
|
|
15536
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15537
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15538
|
|
|
|
|
|
|
|
15539
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15540
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15541
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15542
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15543
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15544
|
|
|
|
|
|
|
|
15545
|
|
|
|
|
|
|
|
15546
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15547
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15548
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15549
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15550
|
|
|
|
|
|
|
} |
15551
|
|
|
|
|
|
|
|
15552
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15553
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15554
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15555
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15556
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15557
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15558
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15559
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15560
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15561
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15562
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15563
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15564
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15565
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15566
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15567
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15568
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15569
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15570
|
0
|
|
|
|
|
|
__tind2++ |
15571
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15572
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15573
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15574
|
|
|
|
|
|
|
) |
15575
|
|
|
|
|
|
|
{ |
15576
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15577
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15578
|
0
|
|
|
|
|
|
__tind1++ |
15579
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15580
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15581
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15582
|
|
|
|
|
|
|
) |
15583
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15584
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15585
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15586
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15587
|
|
|
|
|
|
|
|
15588
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15589
|
|
|
|
|
|
|
} |
15590
|
|
|
|
|
|
|
} |
15591
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15592
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15593
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15594
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15595
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15596
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15597
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15598
|
|
|
|
|
|
|
|
15599
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
15600
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15601
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15602
|
|
|
|
|
|
|
|
15603
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15604
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15605
|
|
|
|
|
|
|
|
15606
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15607
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15608
|
|
|
|
|
|
|
|
15609
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15610
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15611
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15612
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15613
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15614
|
|
|
|
|
|
|
|
15615
|
|
|
|
|
|
|
|
15616
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15617
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15618
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15619
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15620
|
|
|
|
|
|
|
} |
15621
|
|
|
|
|
|
|
|
15622
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15623
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15624
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15625
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15626
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15627
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15628
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15629
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15630
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15631
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15632
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15633
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15634
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15635
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15636
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15637
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15638
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15639
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15640
|
0
|
|
|
|
|
|
__tind2++ |
15641
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15642
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15643
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15644
|
|
|
|
|
|
|
) |
15645
|
|
|
|
|
|
|
{ |
15646
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15647
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15648
|
0
|
|
|
|
|
|
__tind1++ |
15649
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15650
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15651
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15652
|
|
|
|
|
|
|
) |
15653
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15654
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15655
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15656
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15657
|
|
|
|
|
|
|
|
15658
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15659
|
|
|
|
|
|
|
} |
15660
|
|
|
|
|
|
|
} |
15661
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15662
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15663
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15664
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15665
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15666
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15667
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15668
|
|
|
|
|
|
|
|
15669
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
15670
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15671
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15672
|
|
|
|
|
|
|
|
15673
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15674
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15675
|
|
|
|
|
|
|
|
15676
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15677
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15678
|
|
|
|
|
|
|
|
15679
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15680
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15681
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15682
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15683
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15684
|
|
|
|
|
|
|
|
15685
|
|
|
|
|
|
|
|
15686
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15687
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15688
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15689
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15690
|
|
|
|
|
|
|
} |
15691
|
|
|
|
|
|
|
|
15692
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15693
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15694
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15695
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15696
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15697
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15698
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15699
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15700
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15701
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15702
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15703
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15704
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15705
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15706
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15707
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15708
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15709
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15710
|
0
|
|
|
|
|
|
__tind2++ |
15711
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15712
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15713
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15714
|
|
|
|
|
|
|
) |
15715
|
|
|
|
|
|
|
{ |
15716
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15717
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15718
|
0
|
|
|
|
|
|
__tind1++ |
15719
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15720
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15721
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15722
|
|
|
|
|
|
|
) |
15723
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15724
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15725
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15726
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15727
|
|
|
|
|
|
|
|
15728
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15729
|
|
|
|
|
|
|
} |
15730
|
|
|
|
|
|
|
} |
15731
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15732
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15733
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15734
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15735
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15736
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15737
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15738
|
|
|
|
|
|
|
|
15739
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
15740
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15741
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15742
|
|
|
|
|
|
|
|
15743
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15744
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15745
|
|
|
|
|
|
|
|
15746
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15747
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15748
|
|
|
|
|
|
|
|
15749
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15750
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15751
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15752
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15753
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15754
|
|
|
|
|
|
|
|
15755
|
|
|
|
|
|
|
|
15756
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15757
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15758
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15759
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15760
|
|
|
|
|
|
|
} |
15761
|
|
|
|
|
|
|
|
15762
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15763
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15764
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15765
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15766
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15767
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15768
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15769
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15770
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15771
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15772
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15773
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15774
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15775
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15776
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15777
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15778
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15779
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15780
|
0
|
|
|
|
|
|
__tind2++ |
15781
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15782
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15783
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15784
|
|
|
|
|
|
|
) |
15785
|
|
|
|
|
|
|
{ |
15786
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15787
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15788
|
0
|
|
|
|
|
|
__tind1++ |
15789
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15790
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15791
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15792
|
|
|
|
|
|
|
) |
15793
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15794
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15795
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15796
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15797
|
|
|
|
|
|
|
|
15798
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15799
|
|
|
|
|
|
|
} |
15800
|
|
|
|
|
|
|
} |
15801
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15802
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15803
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15804
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15805
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15806
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15807
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15808
|
|
|
|
|
|
|
|
15809
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
15810
|
0
|
0
|
|
|
|
|
PDL_Double * U_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15811
|
0
|
|
|
|
|
|
PDL_Double * U_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15812
|
|
|
|
|
|
|
|
15813
|
0
|
0
|
|
|
|
|
PDL_Double * S_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15814
|
0
|
|
|
|
|
|
PDL_Double * S_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data)); |
15815
|
|
|
|
|
|
|
|
15816
|
0
|
0
|
|
|
|
|
PDL_Double * V_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15817
|
0
|
|
|
|
|
|
PDL_Double * V_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15818
|
|
|
|
|
|
|
|
15819
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_S_d = __privtrans->__inc_S_d; |
15820
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_d = __privtrans->__inc_U_d; |
15821
|
0
|
|
|
|
|
|
register PDL_Indx __inc_U_n = __privtrans->__inc_U_n; |
15822
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d0 = __privtrans->__inc_V_d0; |
15823
|
0
|
|
|
|
|
|
register PDL_Indx __inc_V_d1 = __privtrans->__inc_V_d1; |
15824
|
|
|
|
|
|
|
|
15825
|
|
|
|
|
|
|
|
15826
|
0
|
|
|
|
|
|
double **Upp = (double **)pp_alloc(__privtrans->__n_size); |
15827
|
0
|
|
|
|
|
|
double **Vpp = (double **)pp_alloc(__privtrans->__d_size); |
15828
|
0
|
0
|
|
|
|
|
if (__privtrans->__n_size < __privtrans->__d_size) { |
15829
|
0
|
|
|
|
|
|
barf("svd(): Number of rows (=%d) must be >= number of columns (=%d)!\n", __privtrans->__n_size, __privtrans->__d_size); |
15830
|
|
|
|
|
|
|
} |
15831
|
|
|
|
|
|
|
|
15832
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
15833
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
15834
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
15835
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
15836
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
15837
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
15838
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
15839
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
15840
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
15841
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
15842
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
15843
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
15844
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
15845
|
0
|
|
|
|
|
|
U_datap += __offsp[0]; |
15846
|
0
|
|
|
|
|
|
S_datap += __offsp[1]; |
15847
|
0
|
|
|
|
|
|
V_datap += __offsp[2]; |
15848
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
15849
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
15850
|
0
|
|
|
|
|
|
__tind2++ |
15851
|
0
|
|
|
|
|
|
,U_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
15852
|
0
|
|
|
|
|
|
,S_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
15853
|
0
|
|
|
|
|
|
,V_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
15854
|
|
|
|
|
|
|
) |
15855
|
|
|
|
|
|
|
{ |
15856
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
15857
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
15858
|
0
|
|
|
|
|
|
__tind1++ |
15859
|
0
|
|
|
|
|
|
,U_datap += __tinc0_0 |
15860
|
0
|
|
|
|
|
|
,S_datap += __tinc0_1 |
15861
|
0
|
|
|
|
|
|
,V_datap += __tinc0_2 |
15862
|
|
|
|
|
|
|
) |
15863
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
15864
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, U_datap, Upp); |
15865
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__d_size, __privtrans->__d_size, V_datap, Vpp); |
15866
|
0
|
|
|
|
|
|
pca(__privtrans->__n_size, __privtrans->__d_size, Upp, Vpp, S_datap); |
15867
|
|
|
|
|
|
|
|
15868
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
15869
|
|
|
|
|
|
|
} |
15870
|
|
|
|
|
|
|
} |
15871
|
0
|
|
|
|
|
|
U_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
15872
|
0
|
|
|
|
|
|
S_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
15873
|
0
|
|
|
|
|
|
V_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
15874
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
15875
|
|
|
|
|
|
|
/*-- cleanup --*/ |
15876
|
0
|
0
|
|
|
|
|
if (Upp) free(Upp); |
15877
|
0
|
0
|
|
|
|
|
if (Vpp) free(Vpp); |
15878
|
|
|
|
|
|
|
|
15879
|
0
|
|
|
|
|
|
} break;} |
15880
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
15881
|
|
|
|
|
|
|
} |
15882
|
|
|
|
|
|
|
} |
15883
|
|
|
|
|
|
|
} |
15884
|
|
|
|
|
|
|
|
15885
|
|
|
|
|
|
|
|
15886
|
|
|
|
|
|
|
|
15887
|
|
|
|
|
|
|
|
15888
|
0
|
|
|
|
|
|
void pdl_pca_free(pdl_trans *__tr ) { |
15889
|
|
|
|
|
|
|
int __dim; |
15890
|
0
|
|
|
|
|
|
pdl_pca_struct *__privtrans = (pdl_pca_struct *) __tr; |
15891
|
|
|
|
|
|
|
|
15892
|
|
|
|
|
|
|
{ |
15893
|
|
|
|
|
|
|
|
15894
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
15895
|
|
|
|
|
|
|
|
15896
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
15897
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
15898
|
|
|
|
|
|
|
;;;;;;;; |
15899
|
|
|
|
|
|
|
} |
15900
|
|
|
|
|
|
|
|
15901
|
|
|
|
|
|
|
} |
15902
|
0
|
|
|
|
|
|
} |
15903
|
|
|
|
|
|
|
|
15904
|
|
|
|
|
|
|
|
15905
|
|
|
|
|
|
|
|
15906
|
|
|
|
|
|
|
|
15907
|
|
|
|
|
|
|
static char pdl_pca_vtable_flags[] = |
15908
|
|
|
|
|
|
|
{ 0,0,0}; |
15909
|
|
|
|
|
|
|
pdl_transvtable pdl_pca_vtable = { |
15910
|
|
|
|
|
|
|
0,0, 0, 3, pdl_pca_vtable_flags, |
15911
|
|
|
|
|
|
|
pdl_pca_redodims, pdl_pca_readdata, NULL, |
15912
|
|
|
|
|
|
|
pdl_pca_free,NULL,NULL,pdl_pca_copy, |
15913
|
|
|
|
|
|
|
sizeof(pdl_pca_struct),"pdl_pca_vtable" |
15914
|
|
|
|
|
|
|
}; |
15915
|
|
|
|
|
|
|
|
15916
|
|
|
|
|
|
|
typedef struct pdl_rowdistances_struct { |
15917
|
|
|
|
|
|
|
PDL_TRANS_START(6); |
15918
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_rowids1_ncmps;PDL_Indx __inc_rowids2_ncmps;PDL_Indx __inc_dist_ncmps;PDL_Indx __n_size;PDL_Indx __ncmps_size;PDL_Indx __d_size; |
15919
|
|
|
|
|
|
|
char *distFlag; |
15920
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
15921
|
|
|
|
|
|
|
} pdl_rowdistances_struct; |
15922
|
|
|
|
|
|
|
|
15923
|
0
|
|
|
|
|
|
void pdl_rowdistances_redodims(pdl_trans *__tr ) { |
15924
|
|
|
|
|
|
|
int __dim; |
15925
|
0
|
|
|
|
|
|
pdl_rowdistances_struct *__privtrans = (pdl_rowdistances_struct *) __tr; |
15926
|
|
|
|
|
|
|
|
15927
|
|
|
|
|
|
|
{ |
15928
|
|
|
|
|
|
|
PDL_Indx __creating[6]; |
15929
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
15930
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = -1; |
15931
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
15932
|
0
|
|
|
|
|
|
__creating[0] = 0; |
15933
|
0
|
|
|
|
|
|
__creating[1] = 0; |
15934
|
0
|
|
|
|
|
|
__creating[2] = 0; |
15935
|
0
|
|
|
|
|
|
__creating[3] = 0; |
15936
|
0
|
|
|
|
|
|
__creating[4] = 0; |
15937
|
0
|
0
|
|
|
|
|
__creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]); |
|
|
0
|
|
|
|
|
|
15938
|
|
|
|
|
|
|
{ |
15939
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
15940
|
|
|
|
|
|
|
|
15941
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
15942
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
15943
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15944
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15945
|
|
|
|
|
|
|
|
15946
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15947
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
15948
|
|
|
|
|
|
|
|
15949
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15950
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15951
|
|
|
|
|
|
|
|
15952
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
15953
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
15954
|
|
|
|
|
|
|
|
15955
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
15956
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
15957
|
|
|
|
|
|
|
|
15958
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
15959
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
15960
|
|
|
|
|
|
|
|
15961
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
15962
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
15963
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
15964
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
15965
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
15966
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
15967
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
15968
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
15969
|
|
|
|
|
|
|
|
15970
|
|
|
|
|
|
|
PDL_COMMENT("none") |
15971
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
15972
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
15973
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
15974
|
|
|
|
|
|
|
|
15975
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
15976
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
15977
|
|
|
|
|
|
|
|
15978
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
15979
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
15980
|
|
|
|
|
|
|
|
15981
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
15982
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
15983
|
|
|
|
|
|
|
|
15984
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
15985
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
15986
|
|
|
|
|
|
|
|
15987
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
15988
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
15989
|
|
|
|
|
|
|
|
15990
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
15991
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
15992
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
15993
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
15994
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
15995
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
15996
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
15997
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
15998
|
|
|
|
|
|
|
|
15999
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16000
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
16001
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16002
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16003
|
|
|
|
|
|
|
|
16004
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16005
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16006
|
|
|
|
|
|
|
|
16007
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16008
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16009
|
|
|
|
|
|
|
|
16010
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16011
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16012
|
|
|
|
|
|
|
|
16013
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16014
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16015
|
|
|
|
|
|
|
|
16016
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16017
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16018
|
|
|
|
|
|
|
|
16019
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16020
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16021
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16022
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16023
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16024
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16025
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16026
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16027
|
|
|
|
|
|
|
|
16028
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16029
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
16030
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16031
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16032
|
|
|
|
|
|
|
|
16033
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16034
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16035
|
|
|
|
|
|
|
|
16036
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16037
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16038
|
|
|
|
|
|
|
|
16039
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16040
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16041
|
|
|
|
|
|
|
|
16042
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16043
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16044
|
|
|
|
|
|
|
|
16045
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16046
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16047
|
|
|
|
|
|
|
|
16048
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16049
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16050
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16051
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16052
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16053
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16054
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16055
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16056
|
|
|
|
|
|
|
|
16057
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16058
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
16059
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16060
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16061
|
|
|
|
|
|
|
|
16062
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16063
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16064
|
|
|
|
|
|
|
|
16065
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16066
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16067
|
|
|
|
|
|
|
|
16068
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16069
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16070
|
|
|
|
|
|
|
|
16071
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16072
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16073
|
|
|
|
|
|
|
|
16074
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16075
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16076
|
|
|
|
|
|
|
|
16077
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16078
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16079
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16080
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16081
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16082
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16083
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16084
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16085
|
|
|
|
|
|
|
|
16086
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16087
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
16088
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16089
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16090
|
|
|
|
|
|
|
|
16091
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16092
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16093
|
|
|
|
|
|
|
|
16094
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16095
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16096
|
|
|
|
|
|
|
|
16097
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16098
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16099
|
|
|
|
|
|
|
|
16100
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16101
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16102
|
|
|
|
|
|
|
|
16103
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16104
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16105
|
|
|
|
|
|
|
|
16106
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16107
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16108
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16109
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16110
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16111
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16112
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16113
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16114
|
|
|
|
|
|
|
|
16115
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16116
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
16117
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16118
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16119
|
|
|
|
|
|
|
|
16120
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16121
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16122
|
|
|
|
|
|
|
|
16123
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16124
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16125
|
|
|
|
|
|
|
|
16126
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16127
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16128
|
|
|
|
|
|
|
|
16129
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16130
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16131
|
|
|
|
|
|
|
|
16132
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16133
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16134
|
|
|
|
|
|
|
|
16135
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16136
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16137
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16138
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16139
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16140
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16141
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16142
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16143
|
|
|
|
|
|
|
|
16144
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16145
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
16146
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16147
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16148
|
|
|
|
|
|
|
|
16149
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16150
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16151
|
|
|
|
|
|
|
|
16152
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16153
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16154
|
|
|
|
|
|
|
|
16155
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16156
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16157
|
|
|
|
|
|
|
|
16158
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16159
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16160
|
|
|
|
|
|
|
|
16161
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16162
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16163
|
|
|
|
|
|
|
|
16164
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16165
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16166
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16167
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16168
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16169
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16170
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16171
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16172
|
|
|
|
|
|
|
|
16173
|
|
|
|
|
|
|
PDL_COMMENT("none") |
16174
|
0
|
|
|
|
|
|
} break;} |
16175
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
16176
|
|
|
|
|
|
|
} |
16177
|
|
|
|
|
|
|
} |
16178
|
|
|
|
|
|
|
{ |
16179
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","rowids1","rowids2","dist"}; |
16180
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,1,1,1}; |
16181
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::rowdistances"; |
16182
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
16183
|
|
|
|
|
|
|
__funcname, __parnames, 6 |
16184
|
|
|
|
|
|
|
}; |
16185
|
|
|
|
|
|
|
|
16186
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
16187
|
|
|
|
|
|
|
__realdims,__creating,6, |
16188
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
16189
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
16190
|
|
|
|
|
|
|
0 ); |
16191
|
|
|
|
|
|
|
} |
16192
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
16193
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
16194
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
16195
|
|
|
|
|
|
|
} |
16196
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16197
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
16198
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
16199
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
16200
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16201
|
|
|
|
|
|
|
} |
16202
|
|
|
|
|
|
|
} |
16203
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16204
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
16205
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
16206
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
16207
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16208
|
|
|
|
|
|
|
} |
16209
|
|
|
|
|
|
|
} |
16210
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
16211
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
16212
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
16213
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
16214
|
|
|
|
|
|
|
} |
16215
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16216
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
16217
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
16218
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
16219
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16220
|
|
|
|
|
|
|
} |
16221
|
|
|
|
|
|
|
} |
16222
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16223
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
16224
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
16225
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
16226
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16227
|
|
|
|
|
|
|
} |
16228
|
|
|
|
|
|
|
} |
16229
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
16230
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
16231
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
16232
|
|
|
|
|
|
|
} |
16233
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16234
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
16235
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
16236
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
16237
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16238
|
|
|
|
|
|
|
} |
16239
|
|
|
|
|
|
|
} |
16240
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
16241
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
16242
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__ncmps_size <= 1) __privtrans->__ncmps_size = 1; |
|
|
0
|
|
|
|
|
|
16243
|
|
|
|
|
|
|
} |
16244
|
0
|
0
|
|
|
|
|
if(__privtrans->__ncmps_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__ncmps_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16245
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = ((__privtrans->pdls[3]))->dims[0]; |
16246
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__ncmps_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
16247
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
16248
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16249
|
|
|
|
|
|
|
} |
16250
|
|
|
|
|
|
|
} |
16251
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 1) { |
16252
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__ncmps_size <= 1) __privtrans->__ncmps_size = 1; |
|
|
0
|
|
|
|
|
|
16253
|
|
|
|
|
|
|
} |
16254
|
0
|
0
|
|
|
|
|
if(__privtrans->__ncmps_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__ncmps_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16255
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = ((__privtrans->pdls[4]))->dims[0]; |
16256
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__ncmps_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
16257
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
16258
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16259
|
|
|
|
|
|
|
} |
16260
|
|
|
|
|
|
|
} |
16261
|
0
|
0
|
|
|
|
|
if(!__creating[5]) { |
16262
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
16263
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__ncmps_size <= 1) __privtrans->__ncmps_size = 1; |
|
|
0
|
|
|
|
|
|
16264
|
|
|
|
|
|
|
} |
16265
|
0
|
0
|
|
|
|
|
if(__privtrans->__ncmps_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__ncmps_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16266
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = ((__privtrans->pdls[5]))->dims[0]; |
16267
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__ncmps_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
16268
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
16269
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in rowdistances:" "Wrong dims\n"); |
16270
|
|
|
|
|
|
|
} |
16271
|
|
|
|
|
|
|
} |
16272
|
|
|
|
|
|
|
} else { |
16273
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__ncmps_size; |
16274
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0); |
16275
|
|
|
|
|
|
|
} |
16276
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
16277
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
16278
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
16279
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
16280
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
16281
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
16282
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
16283
|
|
|
|
|
|
|
) { |
16284
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
16285
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
16286
|
|
|
|
|
|
|
} |
16287
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
16288
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
16289
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
16290
|
|
|
|
|
|
|
) { |
16291
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
16292
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
16293
|
|
|
|
|
|
|
} |
16294
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
16295
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
16296
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
16297
|
|
|
|
|
|
|
) { |
16298
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
16299
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
16300
|
|
|
|
|
|
|
} |
16301
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
16302
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
16303
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
16304
|
|
|
|
|
|
|
) { |
16305
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
16306
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
16307
|
|
|
|
|
|
|
} |
16308
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
16309
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
16310
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
16311
|
|
|
|
|
|
|
) { |
16312
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
16313
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
16314
|
|
|
|
|
|
|
} |
16315
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
16316
|
0
|
0
|
|
|
|
|
!__creating[5] && |
16317
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
16318
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
16319
|
|
|
|
|
|
|
) { |
16320
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
16321
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
16322
|
|
|
|
|
|
|
} |
16323
|
0
|
0
|
|
|
|
|
if (hdrp) { |
16324
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
16325
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
16326
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
16327
|
|
|
|
|
|
|
int count; |
16328
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
16329
|
0
|
|
|
|
|
|
dSP; |
16330
|
0
|
|
|
|
|
|
ENTER ; |
16331
|
0
|
|
|
|
|
|
SAVETMPS ; |
16332
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
16333
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
16334
|
0
|
|
|
|
|
|
PUTBACK ; |
16335
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
16336
|
0
|
|
|
|
|
|
SPAGAIN ; |
16337
|
0
|
0
|
|
|
|
|
if(count != 1) |
16338
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
16339
|
|
|
|
|
|
|
|
16340
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
16341
|
|
|
|
|
|
|
|
16342
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
16343
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
16344
|
|
|
|
|
|
|
} |
16345
|
|
|
|
|
|
|
|
16346
|
0
|
0
|
|
|
|
|
FREETMPS ; |
16347
|
0
|
|
|
|
|
|
LEAVE ; |
16348
|
|
|
|
|
|
|
|
16349
|
|
|
|
|
|
|
|
16350
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
16351
|
|
|
|
|
|
|
|
16352
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[5]->hdrsv != hdrp ){ |
16353
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
16354
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv ); |
16355
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
16356
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
16357
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->hdrsv = hdr_copy; |
16358
|
|
|
|
|
|
|
} |
16359
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
16360
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->state |= PDL_HDRCPY; |
16361
|
|
|
|
|
|
|
|
16362
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
16363
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
16364
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
16365
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
16366
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
16367
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
16368
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
16369
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
16370
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
16371
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
16372
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
16373
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
16374
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
16375
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
16376
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
16377
|
0
|
|
|
|
|
|
__privtrans->__inc_rowids1_ncmps = 0; else |
16378
|
0
|
0
|
|
|
|
|
__privtrans->__inc_rowids1_ncmps = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16379
|
0
|
|
|
|
|
|
__privtrans->__inc_rowids2_ncmps = 0; else |
16380
|
0
|
0
|
|
|
|
|
__privtrans->__inc_rowids2_ncmps = PDL_REPRINC(__privtrans->pdls[4],0);if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
16381
|
0
|
|
|
|
|
|
__privtrans->__inc_dist_ncmps = 0; else |
16382
|
0
|
0
|
|
|
|
|
__privtrans->__inc_dist_ncmps = PDL_REPRINC(__privtrans->pdls[5],0); __privtrans->__ddone = 1; |
16383
|
|
|
|
|
|
|
} |
16384
|
0
|
|
|
|
|
|
} |
16385
|
|
|
|
|
|
|
|
16386
|
|
|
|
|
|
|
|
16387
|
0
|
|
|
|
|
|
pdl_trans * pdl_rowdistances_copy(pdl_trans *__tr ) { |
16388
|
|
|
|
|
|
|
int __dim; |
16389
|
0
|
|
|
|
|
|
pdl_rowdistances_struct *__privtrans = (pdl_rowdistances_struct *) __tr; |
16390
|
|
|
|
|
|
|
|
16391
|
|
|
|
|
|
|
{ |
16392
|
0
|
|
|
|
|
|
pdl_rowdistances_struct *__copy = malloc(sizeof(pdl_rowdistances_struct)); |
16393
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
16394
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
16395
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
16396
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
16397
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
16398
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
16399
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
16400
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
16401
|
|
|
|
|
|
|
{int i; |
16402
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
16403
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
16404
|
|
|
|
|
|
|
} |
16405
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);; |
16406
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
16407
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_rowids1_ncmps=__copy->__inc_rowids1_ncmps;__privtrans->__inc_rowids2_ncmps=__copy->__inc_rowids2_ncmps;__privtrans->__inc_dist_ncmps=__copy->__inc_dist_ncmps;__copy->__n_size=__privtrans->__n_size;__copy->__ncmps_size=__privtrans->__ncmps_size;__copy->__d_size=__privtrans->__d_size; |
16408
|
|
|
|
|
|
|
} |
16409
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
16410
|
|
|
|
|
|
|
} |
16411
|
|
|
|
|
|
|
} |
16412
|
|
|
|
|
|
|
|
16413
|
|
|
|
|
|
|
|
16414
|
0
|
|
|
|
|
|
void pdl_rowdistances_readdata(pdl_trans *__tr ) { |
16415
|
|
|
|
|
|
|
int __dim; |
16416
|
0
|
|
|
|
|
|
pdl_rowdistances_struct *__privtrans = (pdl_rowdistances_struct *) __tr; |
16417
|
|
|
|
|
|
|
|
16418
|
|
|
|
|
|
|
{ |
16419
|
0
|
|
|
|
|
|
{register PDL_Indx __ncmps_size = __privtrans->__ncmps_size; |
16420
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
16421
|
|
|
|
|
|
|
|
16422
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
16423
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
16424
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16425
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16426
|
|
|
|
|
|
|
|
16427
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16428
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16429
|
|
|
|
|
|
|
|
16430
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16431
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16432
|
|
|
|
|
|
|
|
16433
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16434
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16435
|
|
|
|
|
|
|
|
16436
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16437
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16438
|
|
|
|
|
|
|
|
16439
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16440
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16441
|
|
|
|
|
|
|
|
16442
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16443
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16444
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16445
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16446
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16447
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16448
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16449
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16450
|
|
|
|
|
|
|
|
16451
|
|
|
|
|
|
|
|
16452
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
16453
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
16454
|
|
|
|
|
|
|
int rowid1, rowid2; |
16455
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
16456
|
0
|
|
|
|
|
|
int transpose=0; |
16457
|
|
|
|
|
|
|
|
16458
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
16459
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
16460
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
16461
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
16462
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
16463
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
16464
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
16465
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
16466
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
16467
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
16468
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
16469
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
16470
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
16471
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
16472
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
16473
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
16474
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
16475
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
16476
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
16477
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
16478
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
16479
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
16480
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
16481
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
16482
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
16483
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
16484
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
16485
|
0
|
|
|
|
|
|
__tind2++ |
16486
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
16487
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
16488
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
16489
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
16490
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
16491
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
16492
|
|
|
|
|
|
|
) |
16493
|
|
|
|
|
|
|
{ |
16494
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
16495
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
16496
|
0
|
|
|
|
|
|
__tind1++ |
16497
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
16498
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
16499
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
16500
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
16501
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
16502
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
16503
|
|
|
|
|
|
|
) |
16504
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
16505
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
16506
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
16507
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
16508
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
16509
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16510
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16511
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
16512
|
|
|
|
|
|
|
1, 1, |
16513
|
|
|
|
|
|
|
&rowid1, &rowid2, |
16514
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
16515
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
16516
|
|
|
|
|
|
|
|
16517
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
16518
|
|
|
|
|
|
|
} |
16519
|
|
|
|
|
|
|
} |
16520
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
16521
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
16522
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
16523
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
16524
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
16525
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
16526
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
16527
|
|
|
|
|
|
|
/*-- cleanup --*/ |
16528
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
16529
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
16530
|
|
|
|
|
|
|
|
16531
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
16532
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16533
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16534
|
|
|
|
|
|
|
|
16535
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16536
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16537
|
|
|
|
|
|
|
|
16538
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16539
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16540
|
|
|
|
|
|
|
|
16541
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16542
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16543
|
|
|
|
|
|
|
|
16544
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16545
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16546
|
|
|
|
|
|
|
|
16547
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16548
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16549
|
|
|
|
|
|
|
|
16550
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16551
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16552
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16553
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16554
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16555
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16556
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16557
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16558
|
|
|
|
|
|
|
|
16559
|
|
|
|
|
|
|
|
16560
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
16561
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
16562
|
|
|
|
|
|
|
int rowid1, rowid2; |
16563
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
16564
|
0
|
|
|
|
|
|
int transpose=0; |
16565
|
|
|
|
|
|
|
|
16566
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
16567
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
16568
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
16569
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
16570
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
16571
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
16572
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
16573
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
16574
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
16575
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
16576
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
16577
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
16578
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
16579
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
16580
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
16581
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
16582
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
16583
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
16584
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
16585
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
16586
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
16587
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
16588
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
16589
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
16590
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
16591
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
16592
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
16593
|
0
|
|
|
|
|
|
__tind2++ |
16594
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
16595
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
16596
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
16597
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
16598
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
16599
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
16600
|
|
|
|
|
|
|
) |
16601
|
|
|
|
|
|
|
{ |
16602
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
16603
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
16604
|
0
|
|
|
|
|
|
__tind1++ |
16605
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
16606
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
16607
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
16608
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
16609
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
16610
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
16611
|
|
|
|
|
|
|
) |
16612
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
16613
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
16614
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
16615
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
16616
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
16617
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16618
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16619
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
16620
|
|
|
|
|
|
|
1, 1, |
16621
|
|
|
|
|
|
|
&rowid1, &rowid2, |
16622
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
16623
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
16624
|
|
|
|
|
|
|
|
16625
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
16626
|
|
|
|
|
|
|
} |
16627
|
|
|
|
|
|
|
} |
16628
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
16629
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
16630
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
16631
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
16632
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
16633
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
16634
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
16635
|
|
|
|
|
|
|
/*-- cleanup --*/ |
16636
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
16637
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
16638
|
|
|
|
|
|
|
|
16639
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
16640
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16641
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16642
|
|
|
|
|
|
|
|
16643
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16644
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16645
|
|
|
|
|
|
|
|
16646
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16647
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16648
|
|
|
|
|
|
|
|
16649
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16650
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16651
|
|
|
|
|
|
|
|
16652
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16653
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16654
|
|
|
|
|
|
|
|
16655
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16656
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16657
|
|
|
|
|
|
|
|
16658
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16659
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16660
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16661
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16662
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16663
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16664
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16665
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16666
|
|
|
|
|
|
|
|
16667
|
|
|
|
|
|
|
|
16668
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
16669
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
16670
|
|
|
|
|
|
|
int rowid1, rowid2; |
16671
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
16672
|
0
|
|
|
|
|
|
int transpose=0; |
16673
|
|
|
|
|
|
|
|
16674
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
16675
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
16676
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
16677
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
16678
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
16679
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
16680
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
16681
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
16682
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
16683
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
16684
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
16685
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
16686
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
16687
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
16688
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
16689
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
16690
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
16691
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
16692
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
16693
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
16694
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
16695
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
16696
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
16697
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
16698
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
16699
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
16700
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
16701
|
0
|
|
|
|
|
|
__tind2++ |
16702
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
16703
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
16704
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
16705
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
16706
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
16707
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
16708
|
|
|
|
|
|
|
) |
16709
|
|
|
|
|
|
|
{ |
16710
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
16711
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
16712
|
0
|
|
|
|
|
|
__tind1++ |
16713
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
16714
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
16715
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
16716
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
16717
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
16718
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
16719
|
|
|
|
|
|
|
) |
16720
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
16721
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
16722
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
16723
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
16724
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
16725
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16726
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16727
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
16728
|
|
|
|
|
|
|
1, 1, |
16729
|
|
|
|
|
|
|
&rowid1, &rowid2, |
16730
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
16731
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
16732
|
|
|
|
|
|
|
|
16733
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
16734
|
|
|
|
|
|
|
} |
16735
|
|
|
|
|
|
|
} |
16736
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
16737
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
16738
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
16739
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
16740
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
16741
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
16742
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
16743
|
|
|
|
|
|
|
/*-- cleanup --*/ |
16744
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
16745
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
16746
|
|
|
|
|
|
|
|
16747
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
16748
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16749
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16750
|
|
|
|
|
|
|
|
16751
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16752
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16753
|
|
|
|
|
|
|
|
16754
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16755
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16756
|
|
|
|
|
|
|
|
16757
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16758
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16759
|
|
|
|
|
|
|
|
16760
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16761
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16762
|
|
|
|
|
|
|
|
16763
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16764
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16765
|
|
|
|
|
|
|
|
16766
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16767
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16768
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16769
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16770
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16771
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16772
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16773
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16774
|
|
|
|
|
|
|
|
16775
|
|
|
|
|
|
|
|
16776
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
16777
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
16778
|
|
|
|
|
|
|
int rowid1, rowid2; |
16779
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
16780
|
0
|
|
|
|
|
|
int transpose=0; |
16781
|
|
|
|
|
|
|
|
16782
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
16783
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
16784
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
16785
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
16786
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
16787
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
16788
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
16789
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
16790
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
16791
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
16792
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
16793
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
16794
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
16795
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
16796
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
16797
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
16798
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
16799
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
16800
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
16801
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
16802
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
16803
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
16804
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
16805
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
16806
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
16807
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
16808
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
16809
|
0
|
|
|
|
|
|
__tind2++ |
16810
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
16811
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
16812
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
16813
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
16814
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
16815
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
16816
|
|
|
|
|
|
|
) |
16817
|
|
|
|
|
|
|
{ |
16818
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
16819
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
16820
|
0
|
|
|
|
|
|
__tind1++ |
16821
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
16822
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
16823
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
16824
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
16825
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
16826
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
16827
|
|
|
|
|
|
|
) |
16828
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
16829
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
16830
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
16831
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
16832
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
16833
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16834
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16835
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
16836
|
|
|
|
|
|
|
1, 1, |
16837
|
|
|
|
|
|
|
&rowid1, &rowid2, |
16838
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
16839
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
16840
|
|
|
|
|
|
|
|
16841
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
16842
|
|
|
|
|
|
|
} |
16843
|
|
|
|
|
|
|
} |
16844
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
16845
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
16846
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
16847
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
16848
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
16849
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
16850
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
16851
|
|
|
|
|
|
|
/*-- cleanup --*/ |
16852
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
16853
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
16854
|
|
|
|
|
|
|
|
16855
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
16856
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16857
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16858
|
|
|
|
|
|
|
|
16859
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16860
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16861
|
|
|
|
|
|
|
|
16862
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16863
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16864
|
|
|
|
|
|
|
|
16865
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16866
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16867
|
|
|
|
|
|
|
|
16868
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16869
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16870
|
|
|
|
|
|
|
|
16871
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16872
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16873
|
|
|
|
|
|
|
|
16874
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16875
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16876
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16877
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16878
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16879
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16880
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16881
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16882
|
|
|
|
|
|
|
|
16883
|
|
|
|
|
|
|
|
16884
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
16885
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
16886
|
|
|
|
|
|
|
int rowid1, rowid2; |
16887
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
16888
|
0
|
|
|
|
|
|
int transpose=0; |
16889
|
|
|
|
|
|
|
|
16890
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
16891
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
16892
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
16893
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
16894
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
16895
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
16896
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
16897
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
16898
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
16899
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
16900
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
16901
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
16902
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
16903
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
16904
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
16905
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
16906
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
16907
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
16908
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
16909
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
16910
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
16911
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
16912
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
16913
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
16914
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
16915
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
16916
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
16917
|
0
|
|
|
|
|
|
__tind2++ |
16918
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
16919
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
16920
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
16921
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
16922
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
16923
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
16924
|
|
|
|
|
|
|
) |
16925
|
|
|
|
|
|
|
{ |
16926
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
16927
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
16928
|
0
|
|
|
|
|
|
__tind1++ |
16929
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
16930
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
16931
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
16932
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
16933
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
16934
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
16935
|
|
|
|
|
|
|
) |
16936
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
16937
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
16938
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
16939
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
16940
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
16941
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16942
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
16943
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
16944
|
|
|
|
|
|
|
1, 1, |
16945
|
|
|
|
|
|
|
&rowid1, &rowid2, |
16946
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
16947
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
16948
|
|
|
|
|
|
|
|
16949
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
16950
|
|
|
|
|
|
|
} |
16951
|
|
|
|
|
|
|
} |
16952
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
16953
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
16954
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
16955
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
16956
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
16957
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
16958
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
16959
|
|
|
|
|
|
|
/*-- cleanup --*/ |
16960
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
16961
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
16962
|
|
|
|
|
|
|
|
16963
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
16964
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
16965
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
16966
|
|
|
|
|
|
|
|
16967
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
16968
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
16969
|
|
|
|
|
|
|
|
16970
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
16971
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
16972
|
|
|
|
|
|
|
|
16973
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
16974
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
16975
|
|
|
|
|
|
|
|
16976
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
16977
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
16978
|
|
|
|
|
|
|
|
16979
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
16980
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
16981
|
|
|
|
|
|
|
|
16982
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
16983
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
16984
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
16985
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
16986
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
16987
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
16988
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
16989
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
16990
|
|
|
|
|
|
|
|
16991
|
|
|
|
|
|
|
|
16992
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
16993
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
16994
|
|
|
|
|
|
|
int rowid1, rowid2; |
16995
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
16996
|
0
|
|
|
|
|
|
int transpose=0; |
16997
|
|
|
|
|
|
|
|
16998
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
16999
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
17000
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
17001
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
17002
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
17003
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
17004
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
17005
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
17006
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
17007
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
17008
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
17009
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
17010
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
17011
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
17012
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
17013
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
17014
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
17015
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
17016
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
17017
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
17018
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
17019
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
17020
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
17021
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
17022
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
17023
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
17024
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
17025
|
0
|
|
|
|
|
|
__tind2++ |
17026
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
17027
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
17028
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
17029
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
17030
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
17031
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
17032
|
|
|
|
|
|
|
) |
17033
|
|
|
|
|
|
|
{ |
17034
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
17035
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
17036
|
0
|
|
|
|
|
|
__tind1++ |
17037
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
17038
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
17039
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
17040
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
17041
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
17042
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
17043
|
|
|
|
|
|
|
) |
17044
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
17045
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
17046
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
17047
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
17048
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
17049
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
17050
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
17051
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
17052
|
|
|
|
|
|
|
1, 1, |
17053
|
|
|
|
|
|
|
&rowid1, &rowid2, |
17054
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
17055
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
17056
|
|
|
|
|
|
|
|
17057
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
17058
|
|
|
|
|
|
|
} |
17059
|
|
|
|
|
|
|
} |
17060
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
17061
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
17062
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
17063
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
17064
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
17065
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
17066
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
17067
|
|
|
|
|
|
|
/*-- cleanup --*/ |
17068
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
17069
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
17070
|
|
|
|
|
|
|
|
17071
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
17072
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17073
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17074
|
|
|
|
|
|
|
|
17075
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17076
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17077
|
|
|
|
|
|
|
|
17078
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17079
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17080
|
|
|
|
|
|
|
|
17081
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17082
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17083
|
|
|
|
|
|
|
|
17084
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17085
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17086
|
|
|
|
|
|
|
|
17087
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17088
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17089
|
|
|
|
|
|
|
|
17090
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17091
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17092
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17093
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
17094
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
17095
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17096
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17097
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
17098
|
|
|
|
|
|
|
|
17099
|
|
|
|
|
|
|
|
17100
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
17101
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
17102
|
|
|
|
|
|
|
int rowid1, rowid2; |
17103
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
17104
|
0
|
|
|
|
|
|
int transpose=0; |
17105
|
|
|
|
|
|
|
|
17106
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
17107
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
17108
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
17109
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
17110
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
17111
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
17112
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
17113
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
17114
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
17115
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
17116
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
17117
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
17118
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
17119
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
17120
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
17121
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
17122
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
17123
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
17124
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
17125
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
17126
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
17127
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
17128
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
17129
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
17130
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
17131
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
17132
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
17133
|
0
|
|
|
|
|
|
__tind2++ |
17134
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
17135
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
17136
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
17137
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
17138
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
17139
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
17140
|
|
|
|
|
|
|
) |
17141
|
|
|
|
|
|
|
{ |
17142
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
17143
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
17144
|
0
|
|
|
|
|
|
__tind1++ |
17145
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
17146
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
17147
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
17148
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
17149
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
17150
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
17151
|
|
|
|
|
|
|
) |
17152
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
17153
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
17154
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
17155
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
17156
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
17157
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
17158
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
17159
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
17160
|
|
|
|
|
|
|
1, 1, |
17161
|
|
|
|
|
|
|
&rowid1, &rowid2, |
17162
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
17163
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
17164
|
|
|
|
|
|
|
|
17165
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
17166
|
|
|
|
|
|
|
} |
17167
|
|
|
|
|
|
|
} |
17168
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
17169
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
17170
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
17171
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
17172
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
17173
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
17174
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
17175
|
|
|
|
|
|
|
/*-- cleanup --*/ |
17176
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
17177
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
17178
|
|
|
|
|
|
|
|
17179
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
17180
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17181
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17182
|
|
|
|
|
|
|
|
17183
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17184
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17185
|
|
|
|
|
|
|
|
17186
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17187
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17188
|
|
|
|
|
|
|
|
17189
|
0
|
0
|
|
|
|
|
PDL_Long * rowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17190
|
0
|
|
|
|
|
|
PDL_Long * rowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17191
|
|
|
|
|
|
|
|
17192
|
0
|
0
|
|
|
|
|
PDL_Long * rowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17193
|
0
|
|
|
|
|
|
PDL_Long * rowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17194
|
|
|
|
|
|
|
|
17195
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17196
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17197
|
|
|
|
|
|
|
|
17198
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17199
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17200
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17201
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids2_ncmps = __privtrans->__inc_rowids2_ncmps; |
17202
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids1_ncmps = __privtrans->__inc_rowids1_ncmps; |
17203
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17204
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17205
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_ncmps = __privtrans->__inc_dist_ncmps; |
17206
|
|
|
|
|
|
|
|
17207
|
|
|
|
|
|
|
|
17208
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
17209
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
17210
|
|
|
|
|
|
|
int rowid1, rowid2; |
17211
|
0
|
|
|
|
|
|
char methodChar = 'x'; /*-- doesnt matter --*/ |
17212
|
0
|
|
|
|
|
|
int transpose=0; |
17213
|
|
|
|
|
|
|
|
17214
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
17215
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
17216
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
17217
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
17218
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
17219
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
17220
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
17221
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
17222
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
17223
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
17224
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
17225
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
17226
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
17227
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
17228
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
17229
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
17230
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
17231
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
17232
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
17233
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
17234
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
17235
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
17236
|
0
|
|
|
|
|
|
rowids1_datap += __offsp[3]; |
17237
|
0
|
|
|
|
|
|
rowids2_datap += __offsp[4]; |
17238
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
17239
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
17240
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
17241
|
0
|
|
|
|
|
|
__tind2++ |
17242
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
17243
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
17244
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
17245
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
17246
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
17247
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
17248
|
|
|
|
|
|
|
) |
17249
|
|
|
|
|
|
|
{ |
17250
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
17251
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
17252
|
0
|
|
|
|
|
|
__tind1++ |
17253
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
17254
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
17255
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
17256
|
0
|
|
|
|
|
|
,rowids1_datap += __tinc0_3 |
17257
|
0
|
|
|
|
|
|
,rowids2_datap += __tinc0_4 |
17258
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
17259
|
|
|
|
|
|
|
) |
17260
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
17261
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
17262
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
17263
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
17264
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
17265
|
0
|
0
|
|
|
|
|
rowid1 = (rowids1_datap)[0+(__inc_rowids1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
17266
|
0
|
0
|
|
|
|
|
rowid2 = (rowids2_datap)[0+(__inc_rowids2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
17267
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
17268
|
|
|
|
|
|
|
1, 1, |
17269
|
|
|
|
|
|
|
&rowid1, &rowid2, |
17270
|
0
|
|
|
|
|
|
*__privtrans->distFlag, methodChar, transpose); |
17271
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
17272
|
|
|
|
|
|
|
|
17273
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
17274
|
|
|
|
|
|
|
} |
17275
|
|
|
|
|
|
|
} |
17276
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
17277
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
17278
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
17279
|
0
|
|
|
|
|
|
rowids1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
17280
|
0
|
|
|
|
|
|
rowids2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
17281
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
17282
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
17283
|
|
|
|
|
|
|
/*-- cleanup --*/ |
17284
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
17285
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
17286
|
|
|
|
|
|
|
|
17287
|
0
|
|
|
|
|
|
} break;} |
17288
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
17289
|
|
|
|
|
|
|
} |
17290
|
|
|
|
|
|
|
} |
17291
|
|
|
|
|
|
|
} |
17292
|
|
|
|
|
|
|
|
17293
|
|
|
|
|
|
|
|
17294
|
|
|
|
|
|
|
|
17295
|
|
|
|
|
|
|
|
17296
|
0
|
|
|
|
|
|
void pdl_rowdistances_free(pdl_trans *__tr ) { |
17297
|
|
|
|
|
|
|
int __dim; |
17298
|
0
|
|
|
|
|
|
pdl_rowdistances_struct *__privtrans = (pdl_rowdistances_struct *) __tr; |
17299
|
|
|
|
|
|
|
|
17300
|
|
|
|
|
|
|
{ |
17301
|
|
|
|
|
|
|
|
17302
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
17303
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);; |
17304
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
17305
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
17306
|
|
|
|
|
|
|
;;;;;;;;;;;; |
17307
|
|
|
|
|
|
|
} |
17308
|
|
|
|
|
|
|
|
17309
|
|
|
|
|
|
|
} |
17310
|
0
|
|
|
|
|
|
} |
17311
|
|
|
|
|
|
|
|
17312
|
|
|
|
|
|
|
|
17313
|
|
|
|
|
|
|
|
17314
|
|
|
|
|
|
|
|
17315
|
|
|
|
|
|
|
static char pdl_rowdistances_vtable_flags[] = |
17316
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
17317
|
|
|
|
|
|
|
pdl_transvtable pdl_rowdistances_vtable = { |
17318
|
|
|
|
|
|
|
0,0, 5, 6, pdl_rowdistances_vtable_flags, |
17319
|
|
|
|
|
|
|
pdl_rowdistances_redodims, pdl_rowdistances_readdata, NULL, |
17320
|
|
|
|
|
|
|
pdl_rowdistances_free,NULL,NULL,pdl_rowdistances_copy, |
17321
|
|
|
|
|
|
|
sizeof(pdl_rowdistances_struct),"pdl_rowdistances_vtable" |
17322
|
|
|
|
|
|
|
}; |
17323
|
|
|
|
|
|
|
|
17324
|
|
|
|
|
|
|
typedef struct pdl_clusterdistances_struct { |
17325
|
|
|
|
|
|
|
PDL_TRANS_START(6); |
17326
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_rowids_nr;PDL_Indx __inc_index2_n2;PDL_Indx __inc_dist_nr;PDL_Indx __n2_size;PDL_Indx __d_size;PDL_Indx __nr_size;PDL_Indx __n_size; |
17327
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
17328
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
17329
|
|
|
|
|
|
|
} pdl_clusterdistances_struct; |
17330
|
|
|
|
|
|
|
|
17331
|
0
|
|
|
|
|
|
void pdl_clusterdistances_redodims(pdl_trans *__tr ) { |
17332
|
|
|
|
|
|
|
int __dim; |
17333
|
0
|
|
|
|
|
|
pdl_clusterdistances_struct *__privtrans = (pdl_clusterdistances_struct *) __tr; |
17334
|
|
|
|
|
|
|
|
17335
|
|
|
|
|
|
|
{ |
17336
|
|
|
|
|
|
|
PDL_Indx __creating[6]; |
17337
|
0
|
|
|
|
|
|
__privtrans->__n2_size = -1; |
17338
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
17339
|
0
|
|
|
|
|
|
__privtrans->__nr_size = -1; |
17340
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
17341
|
0
|
|
|
|
|
|
__creating[0] = 0; |
17342
|
0
|
|
|
|
|
|
__creating[1] = 0; |
17343
|
0
|
|
|
|
|
|
__creating[2] = 0; |
17344
|
0
|
|
|
|
|
|
__creating[3] = 0; |
17345
|
0
|
|
|
|
|
|
__creating[4] = 0; |
17346
|
0
|
0
|
|
|
|
|
__creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]); |
|
|
0
|
|
|
|
|
|
17347
|
|
|
|
|
|
|
{ |
17348
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
17349
|
|
|
|
|
|
|
|
17350
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
17351
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
17352
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17353
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17354
|
|
|
|
|
|
|
|
17355
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17356
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17357
|
|
|
|
|
|
|
|
17358
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17359
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17360
|
|
|
|
|
|
|
|
17361
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17362
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17363
|
|
|
|
|
|
|
|
17364
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17365
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17366
|
|
|
|
|
|
|
|
17367
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17368
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17369
|
|
|
|
|
|
|
|
17370
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17371
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17372
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17373
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17374
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17375
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17376
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17377
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17378
|
|
|
|
|
|
|
|
17379
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17380
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
17381
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17382
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17383
|
|
|
|
|
|
|
|
17384
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17385
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17386
|
|
|
|
|
|
|
|
17387
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17388
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17389
|
|
|
|
|
|
|
|
17390
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17391
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17392
|
|
|
|
|
|
|
|
17393
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17394
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17395
|
|
|
|
|
|
|
|
17396
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17397
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17398
|
|
|
|
|
|
|
|
17399
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17400
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17401
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17402
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17403
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17404
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17405
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17406
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17407
|
|
|
|
|
|
|
|
17408
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17409
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
17410
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17411
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17412
|
|
|
|
|
|
|
|
17413
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17414
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17415
|
|
|
|
|
|
|
|
17416
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17417
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17418
|
|
|
|
|
|
|
|
17419
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17420
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17421
|
|
|
|
|
|
|
|
17422
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17423
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17424
|
|
|
|
|
|
|
|
17425
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17426
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17427
|
|
|
|
|
|
|
|
17428
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17429
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17430
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17431
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17432
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17433
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17434
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17435
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17436
|
|
|
|
|
|
|
|
17437
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17438
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
17439
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17440
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17441
|
|
|
|
|
|
|
|
17442
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17443
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17444
|
|
|
|
|
|
|
|
17445
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17446
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17447
|
|
|
|
|
|
|
|
17448
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17449
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17450
|
|
|
|
|
|
|
|
17451
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17452
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17453
|
|
|
|
|
|
|
|
17454
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17455
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17456
|
|
|
|
|
|
|
|
17457
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17458
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17459
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17460
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17461
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17462
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17463
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17464
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17465
|
|
|
|
|
|
|
|
17466
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17467
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
17468
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17469
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17470
|
|
|
|
|
|
|
|
17471
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17472
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17473
|
|
|
|
|
|
|
|
17474
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17475
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17476
|
|
|
|
|
|
|
|
17477
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17478
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17479
|
|
|
|
|
|
|
|
17480
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17481
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17482
|
|
|
|
|
|
|
|
17483
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17484
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17485
|
|
|
|
|
|
|
|
17486
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17487
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17488
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17489
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17490
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17491
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17492
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17493
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17494
|
|
|
|
|
|
|
|
17495
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17496
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
17497
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17498
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17499
|
|
|
|
|
|
|
|
17500
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17501
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17502
|
|
|
|
|
|
|
|
17503
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17504
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17505
|
|
|
|
|
|
|
|
17506
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17507
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17508
|
|
|
|
|
|
|
|
17509
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17510
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17511
|
|
|
|
|
|
|
|
17512
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17513
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17514
|
|
|
|
|
|
|
|
17515
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17516
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17517
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17518
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17519
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17520
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17521
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17522
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17523
|
|
|
|
|
|
|
|
17524
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17525
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
17526
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17527
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17528
|
|
|
|
|
|
|
|
17529
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17530
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17531
|
|
|
|
|
|
|
|
17532
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17533
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17534
|
|
|
|
|
|
|
|
17535
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17536
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17537
|
|
|
|
|
|
|
|
17538
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17539
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17540
|
|
|
|
|
|
|
|
17541
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17542
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17543
|
|
|
|
|
|
|
|
17544
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17545
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17546
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17547
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17548
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17549
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17550
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17551
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17552
|
|
|
|
|
|
|
|
17553
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17554
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
17555
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17556
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17557
|
|
|
|
|
|
|
|
17558
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17559
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17560
|
|
|
|
|
|
|
|
17561
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17562
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17563
|
|
|
|
|
|
|
|
17564
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17565
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17566
|
|
|
|
|
|
|
|
17567
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17568
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17569
|
|
|
|
|
|
|
|
17570
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17571
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17572
|
|
|
|
|
|
|
|
17573
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17574
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17575
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17576
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17577
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17578
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17581
|
|
|
|
|
|
|
|
17582
|
|
|
|
|
|
|
PDL_COMMENT("none") |
17583
|
0
|
|
|
|
|
|
} break;} |
17584
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
17585
|
|
|
|
|
|
|
} |
17586
|
|
|
|
|
|
|
} |
17587
|
|
|
|
|
|
|
{ |
17588
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","rowids","index2","dist"}; |
17589
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,1,1,1}; |
17590
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterdistances"; |
17591
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
17592
|
|
|
|
|
|
|
__funcname, __parnames, 6 |
17593
|
|
|
|
|
|
|
}; |
17594
|
|
|
|
|
|
|
|
17595
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
17596
|
|
|
|
|
|
|
__realdims,__creating,6, |
17597
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
17598
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
17599
|
|
|
|
|
|
|
0 ); |
17600
|
|
|
|
|
|
|
} |
17601
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
17602
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
17603
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
17604
|
|
|
|
|
|
|
} |
17605
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17606
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
17607
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
17608
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
17609
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17610
|
|
|
|
|
|
|
} |
17611
|
|
|
|
|
|
|
} |
17612
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17613
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
17614
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
17615
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
17616
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17617
|
|
|
|
|
|
|
} |
17618
|
|
|
|
|
|
|
} |
17619
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
17620
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
17621
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
17622
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
17623
|
|
|
|
|
|
|
} |
17624
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17625
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
17626
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
17627
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
17628
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17629
|
|
|
|
|
|
|
} |
17630
|
|
|
|
|
|
|
} |
17631
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17632
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
17633
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
17634
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
17635
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17636
|
|
|
|
|
|
|
} |
17637
|
|
|
|
|
|
|
} |
17638
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
17639
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
17640
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
17641
|
|
|
|
|
|
|
} |
17642
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17643
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
17644
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
17645
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
17646
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17647
|
|
|
|
|
|
|
} |
17648
|
|
|
|
|
|
|
} |
17649
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
17650
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
17651
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
17652
|
|
|
|
|
|
|
} |
17653
|
0
|
0
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nr_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17654
|
0
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[3]))->dims[0]; |
17655
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nr_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
17656
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
17657
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17658
|
|
|
|
|
|
|
} |
17659
|
|
|
|
|
|
|
} |
17660
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 1) { |
17661
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__n2_size <= 1) __privtrans->__n2_size = 1; |
|
|
0
|
|
|
|
|
|
17662
|
|
|
|
|
|
|
} |
17663
|
0
|
0
|
|
|
|
|
if(__privtrans->__n2_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__n2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17664
|
0
|
|
|
|
|
|
__privtrans->__n2_size = ((__privtrans->pdls[4]))->dims[0]; |
17665
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__n2_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
17666
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
17667
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17668
|
|
|
|
|
|
|
} |
17669
|
|
|
|
|
|
|
} |
17670
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
17671
|
0
|
0
|
|
|
|
|
if(!__creating[5]) { |
17672
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
17673
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
17674
|
|
|
|
|
|
|
} |
17675
|
0
|
0
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__nr_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17676
|
0
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[5]))->dims[0]; |
17677
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__nr_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
17678
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
17679
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistances:" "Wrong dims\n"); |
17680
|
|
|
|
|
|
|
} |
17681
|
|
|
|
|
|
|
} |
17682
|
|
|
|
|
|
|
} else { |
17683
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nr_size; |
17684
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0); |
17685
|
|
|
|
|
|
|
} |
17686
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
17687
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
17688
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
17689
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
17690
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
17691
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
17692
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
17693
|
|
|
|
|
|
|
) { |
17694
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
17695
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
17696
|
|
|
|
|
|
|
} |
17697
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
17698
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
17699
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
17700
|
|
|
|
|
|
|
) { |
17701
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
17702
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
17703
|
|
|
|
|
|
|
} |
17704
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
17705
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
17706
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
17707
|
|
|
|
|
|
|
) { |
17708
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
17709
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
17710
|
|
|
|
|
|
|
} |
17711
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
17712
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
17713
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
17714
|
|
|
|
|
|
|
) { |
17715
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
17716
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
17717
|
|
|
|
|
|
|
} |
17718
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
17719
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
17720
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
17721
|
|
|
|
|
|
|
) { |
17722
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
17723
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
17724
|
|
|
|
|
|
|
} |
17725
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
17726
|
0
|
0
|
|
|
|
|
!__creating[5] && |
17727
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
17728
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
17729
|
|
|
|
|
|
|
) { |
17730
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
17731
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
17732
|
|
|
|
|
|
|
} |
17733
|
0
|
0
|
|
|
|
|
if (hdrp) { |
17734
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
17735
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
17736
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
17737
|
|
|
|
|
|
|
int count; |
17738
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
17739
|
0
|
|
|
|
|
|
dSP; |
17740
|
0
|
|
|
|
|
|
ENTER ; |
17741
|
0
|
|
|
|
|
|
SAVETMPS ; |
17742
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
17743
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
17744
|
0
|
|
|
|
|
|
PUTBACK ; |
17745
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
17746
|
0
|
|
|
|
|
|
SPAGAIN ; |
17747
|
0
|
0
|
|
|
|
|
if(count != 1) |
17748
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
17749
|
|
|
|
|
|
|
|
17750
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
17751
|
|
|
|
|
|
|
|
17752
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
17753
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
17754
|
|
|
|
|
|
|
} |
17755
|
|
|
|
|
|
|
|
17756
|
0
|
0
|
|
|
|
|
FREETMPS ; |
17757
|
0
|
|
|
|
|
|
LEAVE ; |
17758
|
|
|
|
|
|
|
|
17759
|
|
|
|
|
|
|
|
17760
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
17761
|
|
|
|
|
|
|
|
17762
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[5]->hdrsv != hdrp ){ |
17763
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
17764
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv ); |
17765
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
17766
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
17767
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->hdrsv = hdr_copy; |
17768
|
|
|
|
|
|
|
} |
17769
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
17770
|
0
|
|
|
|
|
|
__privtrans->pdls[5]->state |= PDL_HDRCPY; |
17771
|
|
|
|
|
|
|
|
17772
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
17773
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
17774
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
17775
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
17776
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
17777
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
17778
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
17779
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
17780
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
17781
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
17782
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
17783
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
17784
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
17785
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
17786
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
17787
|
0
|
|
|
|
|
|
__privtrans->__inc_rowids_nr = 0; else |
17788
|
0
|
0
|
|
|
|
|
__privtrans->__inc_rowids_nr = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
17789
|
0
|
|
|
|
|
|
__privtrans->__inc_index2_n2 = 0; else |
17790
|
0
|
0
|
|
|
|
|
__privtrans->__inc_index2_n2 = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
17791
|
0
|
|
|
|
|
|
__privtrans->__inc_dist_nr = 0; else |
17792
|
0
|
0
|
|
|
|
|
__privtrans->__inc_dist_nr = PDL_REPRINC(__privtrans->pdls[5],0); __privtrans->__ddone = 1; |
17793
|
|
|
|
|
|
|
} |
17794
|
0
|
|
|
|
|
|
} |
17795
|
|
|
|
|
|
|
|
17796
|
|
|
|
|
|
|
|
17797
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterdistances_copy(pdl_trans *__tr ) { |
17798
|
|
|
|
|
|
|
int __dim; |
17799
|
0
|
|
|
|
|
|
pdl_clusterdistances_struct *__privtrans = (pdl_clusterdistances_struct *) __tr; |
17800
|
|
|
|
|
|
|
|
17801
|
|
|
|
|
|
|
{ |
17802
|
0
|
|
|
|
|
|
pdl_clusterdistances_struct *__copy = malloc(sizeof(pdl_clusterdistances_struct)); |
17803
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
17804
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
17805
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
17806
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
17807
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
17808
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
17809
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
17810
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
17811
|
|
|
|
|
|
|
{int i; |
17812
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
17813
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
17814
|
|
|
|
|
|
|
} |
17815
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
17816
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
17817
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_rowids_nr=__copy->__inc_rowids_nr;__privtrans->__inc_index2_n2=__copy->__inc_index2_n2;__privtrans->__inc_dist_nr=__copy->__inc_dist_nr;__copy->__n2_size=__privtrans->__n2_size;__copy->__d_size=__privtrans->__d_size;__copy->__nr_size=__privtrans->__nr_size;__copy->__n_size=__privtrans->__n_size; |
17818
|
|
|
|
|
|
|
} |
17819
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
17820
|
|
|
|
|
|
|
} |
17821
|
|
|
|
|
|
|
} |
17822
|
|
|
|
|
|
|
|
17823
|
|
|
|
|
|
|
|
17824
|
0
|
|
|
|
|
|
void pdl_clusterdistances_readdata(pdl_trans *__tr ) { |
17825
|
|
|
|
|
|
|
int __dim; |
17826
|
0
|
|
|
|
|
|
pdl_clusterdistances_struct *__privtrans = (pdl_clusterdistances_struct *) __tr; |
17827
|
|
|
|
|
|
|
|
17828
|
|
|
|
|
|
|
{ |
17829
|
0
|
|
|
|
|
|
{register PDL_Indx __nr_size = __privtrans->__nr_size; |
17830
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
17831
|
|
|
|
|
|
|
|
17832
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
17833
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
17834
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17835
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17836
|
|
|
|
|
|
|
|
17837
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17838
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17839
|
|
|
|
|
|
|
|
17840
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17841
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17842
|
|
|
|
|
|
|
|
17843
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17844
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17845
|
|
|
|
|
|
|
|
17846
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17847
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17848
|
|
|
|
|
|
|
|
17849
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17850
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17851
|
|
|
|
|
|
|
|
17852
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17853
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17854
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17855
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17856
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17857
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17858
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17859
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17860
|
|
|
|
|
|
|
|
17861
|
|
|
|
|
|
|
|
17862
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
17863
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
17864
|
0
|
|
|
|
|
|
int transpose=0; |
17865
|
|
|
|
|
|
|
|
17866
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
17867
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
17868
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
17869
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
17870
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
17871
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
17872
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
17873
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
17874
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
17875
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
17876
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
17877
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
17878
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
17879
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
17880
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
17881
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
17882
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
17883
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
17884
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
17885
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
17886
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
17887
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
17888
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
17889
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
17890
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
17891
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
17892
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
17893
|
0
|
|
|
|
|
|
__tind2++ |
17894
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
17895
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
17896
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
17897
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
17898
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
17899
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
17900
|
|
|
|
|
|
|
) |
17901
|
|
|
|
|
|
|
{ |
17902
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
17903
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
17904
|
0
|
|
|
|
|
|
__tind1++ |
17905
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
17906
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
17907
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
17908
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
17909
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
17910
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
17911
|
|
|
|
|
|
|
) |
17912
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
17913
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
17914
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
17915
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
17916
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
17917
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
17918
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
17919
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
17920
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
17921
|
|
|
|
|
|
|
|
17922
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
17923
|
|
|
|
|
|
|
} |
17924
|
|
|
|
|
|
|
} |
17925
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
17926
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
17927
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
17928
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
17929
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
17930
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
17931
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
17932
|
|
|
|
|
|
|
/*-- cleanup --*/ |
17933
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
17934
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
17935
|
|
|
|
|
|
|
|
17936
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
17937
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
17938
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
17939
|
|
|
|
|
|
|
|
17940
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
17941
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
17942
|
|
|
|
|
|
|
|
17943
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
17944
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
17945
|
|
|
|
|
|
|
|
17946
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
17947
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
17948
|
|
|
|
|
|
|
|
17949
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
17950
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
17951
|
|
|
|
|
|
|
|
17952
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
17953
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
17954
|
|
|
|
|
|
|
|
17955
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
17956
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
17957
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
17958
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
17959
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
17960
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
17961
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
17962
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
17963
|
|
|
|
|
|
|
|
17964
|
|
|
|
|
|
|
|
17965
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
17966
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
17967
|
0
|
|
|
|
|
|
int transpose=0; |
17968
|
|
|
|
|
|
|
|
17969
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
17970
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
17971
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
17972
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
17973
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
17974
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
17975
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
17976
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
17977
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
17978
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
17979
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
17980
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
17981
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
17982
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
17983
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
17984
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
17985
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
17986
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
17987
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
17988
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
17989
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
17990
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
17991
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
17992
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
17993
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
17994
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
17995
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
17996
|
0
|
|
|
|
|
|
__tind2++ |
17997
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
17998
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
17999
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18000
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18001
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18002
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18003
|
|
|
|
|
|
|
) |
18004
|
|
|
|
|
|
|
{ |
18005
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18006
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18007
|
0
|
|
|
|
|
|
__tind1++ |
18008
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18009
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18010
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18011
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18012
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18013
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18014
|
|
|
|
|
|
|
) |
18015
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18016
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18017
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18018
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18019
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18020
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18021
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18022
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18023
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18024
|
|
|
|
|
|
|
|
18025
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18026
|
|
|
|
|
|
|
} |
18027
|
|
|
|
|
|
|
} |
18028
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18029
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18030
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18031
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18032
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18033
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18034
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18035
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18036
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18037
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18038
|
|
|
|
|
|
|
|
18039
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
18040
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18041
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
18042
|
|
|
|
|
|
|
|
18043
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18044
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18045
|
|
|
|
|
|
|
|
18046
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
18047
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
18048
|
|
|
|
|
|
|
|
18049
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
18050
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
18051
|
|
|
|
|
|
|
|
18052
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
18053
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
18054
|
|
|
|
|
|
|
|
18055
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
18056
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
18057
|
|
|
|
|
|
|
|
18058
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
18059
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
18060
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
18061
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
18062
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
18063
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
18064
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
18065
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
18066
|
|
|
|
|
|
|
|
18067
|
|
|
|
|
|
|
|
18068
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
18069
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
18070
|
0
|
|
|
|
|
|
int transpose=0; |
18071
|
|
|
|
|
|
|
|
18072
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
18073
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
18074
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
18075
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
18076
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
18077
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
18078
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
18079
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
18080
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
18081
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
18082
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
18083
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
18084
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
18085
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
18086
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
18087
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
18088
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
18089
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
18090
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
18091
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
18092
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
18093
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
18094
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
18095
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
18096
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
18097
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
18098
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
18099
|
0
|
|
|
|
|
|
__tind2++ |
18100
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
18101
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
18102
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18103
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18104
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18105
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18106
|
|
|
|
|
|
|
) |
18107
|
|
|
|
|
|
|
{ |
18108
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18109
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18110
|
0
|
|
|
|
|
|
__tind1++ |
18111
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18112
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18113
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18114
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18115
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18116
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18117
|
|
|
|
|
|
|
) |
18118
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18119
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18120
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18121
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18122
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18123
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18124
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18125
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18126
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18127
|
|
|
|
|
|
|
|
18128
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18129
|
|
|
|
|
|
|
} |
18130
|
|
|
|
|
|
|
} |
18131
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18132
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18133
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18134
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18135
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18136
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18137
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18138
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18139
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18140
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18141
|
|
|
|
|
|
|
|
18142
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
18143
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18144
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
18145
|
|
|
|
|
|
|
|
18146
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18147
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18148
|
|
|
|
|
|
|
|
18149
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
18150
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
18151
|
|
|
|
|
|
|
|
18152
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
18153
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
18154
|
|
|
|
|
|
|
|
18155
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
18156
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
18157
|
|
|
|
|
|
|
|
18158
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
18159
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
18160
|
|
|
|
|
|
|
|
18161
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
18162
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
18163
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
18164
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
18165
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
18166
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
18167
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
18168
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
18169
|
|
|
|
|
|
|
|
18170
|
|
|
|
|
|
|
|
18171
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
18172
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
18173
|
0
|
|
|
|
|
|
int transpose=0; |
18174
|
|
|
|
|
|
|
|
18175
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
18176
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
18177
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
18178
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
18179
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
18180
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
18181
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
18182
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
18183
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
18184
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
18185
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
18186
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
18187
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
18188
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
18189
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
18190
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
18191
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
18192
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
18193
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
18194
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
18195
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
18196
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
18197
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
18198
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
18199
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
18200
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
18201
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
18202
|
0
|
|
|
|
|
|
__tind2++ |
18203
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
18204
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
18205
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18206
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18207
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18208
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18209
|
|
|
|
|
|
|
) |
18210
|
|
|
|
|
|
|
{ |
18211
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18212
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18213
|
0
|
|
|
|
|
|
__tind1++ |
18214
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18215
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18216
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18217
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18218
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18219
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18220
|
|
|
|
|
|
|
) |
18221
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18222
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18223
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18224
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18225
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18226
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18227
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18228
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18229
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18230
|
|
|
|
|
|
|
|
18231
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18232
|
|
|
|
|
|
|
} |
18233
|
|
|
|
|
|
|
} |
18234
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18235
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18236
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18237
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18238
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18239
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18240
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18241
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18242
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18243
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18244
|
|
|
|
|
|
|
|
18245
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
18246
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18247
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
18248
|
|
|
|
|
|
|
|
18249
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18250
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18251
|
|
|
|
|
|
|
|
18252
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
18253
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
18254
|
|
|
|
|
|
|
|
18255
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
18256
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
18257
|
|
|
|
|
|
|
|
18258
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
18259
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
18260
|
|
|
|
|
|
|
|
18261
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
18262
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
18263
|
|
|
|
|
|
|
|
18264
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
18265
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
18266
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
18267
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
18268
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
18269
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
18270
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
18271
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
18272
|
|
|
|
|
|
|
|
18273
|
|
|
|
|
|
|
|
18274
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
18275
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
18276
|
0
|
|
|
|
|
|
int transpose=0; |
18277
|
|
|
|
|
|
|
|
18278
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
18279
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
18280
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
18281
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
18282
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
18283
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
18284
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
18285
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
18286
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
18287
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
18288
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
18289
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
18290
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
18291
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
18292
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
18293
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
18294
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
18295
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
18296
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
18297
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
18298
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
18299
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
18300
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
18301
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
18302
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
18303
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
18304
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
18305
|
0
|
|
|
|
|
|
__tind2++ |
18306
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
18307
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
18308
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18309
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18310
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18311
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18312
|
|
|
|
|
|
|
) |
18313
|
|
|
|
|
|
|
{ |
18314
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18315
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18316
|
0
|
|
|
|
|
|
__tind1++ |
18317
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18318
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18319
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18320
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18321
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18322
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18323
|
|
|
|
|
|
|
) |
18324
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18325
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18326
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18327
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18328
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18329
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18330
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18331
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18332
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18333
|
|
|
|
|
|
|
|
18334
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18335
|
|
|
|
|
|
|
} |
18336
|
|
|
|
|
|
|
} |
18337
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18338
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18339
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18340
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18341
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18342
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18343
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18344
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18345
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18346
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18347
|
|
|
|
|
|
|
|
18348
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
18349
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18350
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
18351
|
|
|
|
|
|
|
|
18352
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18353
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18354
|
|
|
|
|
|
|
|
18355
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
18356
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
18357
|
|
|
|
|
|
|
|
18358
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
18359
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
18360
|
|
|
|
|
|
|
|
18361
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
18362
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
18363
|
|
|
|
|
|
|
|
18364
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
18365
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
18366
|
|
|
|
|
|
|
|
18367
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
18368
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
18369
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
18370
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
18371
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
18372
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
18373
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
18374
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
18375
|
|
|
|
|
|
|
|
18376
|
|
|
|
|
|
|
|
18377
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
18378
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
18379
|
0
|
|
|
|
|
|
int transpose=0; |
18380
|
|
|
|
|
|
|
|
18381
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
18382
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
18383
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
18384
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
18385
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
18386
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
18387
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
18388
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
18389
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
18390
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
18391
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
18392
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
18393
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
18394
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
18395
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
18396
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
18397
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
18398
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
18399
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
18400
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
18401
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
18402
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
18403
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
18404
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
18405
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
18406
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
18407
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
18408
|
0
|
|
|
|
|
|
__tind2++ |
18409
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
18410
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
18411
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18412
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18413
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18414
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18415
|
|
|
|
|
|
|
) |
18416
|
|
|
|
|
|
|
{ |
18417
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18418
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18419
|
0
|
|
|
|
|
|
__tind1++ |
18420
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18421
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18422
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18423
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18424
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18425
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18426
|
|
|
|
|
|
|
) |
18427
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18428
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18429
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18430
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18431
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18432
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18433
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18434
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18435
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18436
|
|
|
|
|
|
|
|
18437
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18438
|
|
|
|
|
|
|
} |
18439
|
|
|
|
|
|
|
} |
18440
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18441
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18442
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18443
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18444
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18445
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18446
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18447
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18448
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18449
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18450
|
|
|
|
|
|
|
|
18451
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
18452
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18453
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
18454
|
|
|
|
|
|
|
|
18455
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18456
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18457
|
|
|
|
|
|
|
|
18458
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
18459
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
18460
|
|
|
|
|
|
|
|
18461
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
18462
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
18463
|
|
|
|
|
|
|
|
18464
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
18465
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
18466
|
|
|
|
|
|
|
|
18467
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
18468
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
18469
|
|
|
|
|
|
|
|
18470
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
18471
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
18472
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
18473
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
18474
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
18475
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
18476
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
18477
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
18478
|
|
|
|
|
|
|
|
18479
|
|
|
|
|
|
|
|
18480
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
18481
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
18482
|
0
|
|
|
|
|
|
int transpose=0; |
18483
|
|
|
|
|
|
|
|
18484
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
18485
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
18486
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
18487
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
18488
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
18489
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
18490
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
18491
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
18492
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
18493
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
18494
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
18495
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
18496
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
18497
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
18498
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
18499
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
18500
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
18501
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
18502
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
18503
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
18504
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
18505
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
18506
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
18507
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
18508
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
18509
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
18510
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
18511
|
0
|
|
|
|
|
|
__tind2++ |
18512
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
18513
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
18514
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18515
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18516
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18517
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18518
|
|
|
|
|
|
|
) |
18519
|
|
|
|
|
|
|
{ |
18520
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18521
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18522
|
0
|
|
|
|
|
|
__tind1++ |
18523
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18524
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18525
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18526
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18527
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18528
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18529
|
|
|
|
|
|
|
) |
18530
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18531
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18532
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18533
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18534
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18535
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18536
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18537
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18538
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18539
|
|
|
|
|
|
|
|
18540
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18541
|
|
|
|
|
|
|
} |
18542
|
|
|
|
|
|
|
} |
18543
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18544
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18545
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18546
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18547
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18548
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18549
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18550
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18551
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18552
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18553
|
|
|
|
|
|
|
|
18554
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
18555
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18556
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
18557
|
|
|
|
|
|
|
|
18558
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18559
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18560
|
|
|
|
|
|
|
|
18561
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
18562
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
18563
|
|
|
|
|
|
|
|
18564
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
18565
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
18566
|
|
|
|
|
|
|
|
18567
|
0
|
0
|
|
|
|
|
PDL_Long * index2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
18568
|
0
|
|
|
|
|
|
PDL_Long * index2_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
18569
|
|
|
|
|
|
|
|
18570
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
18571
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data)); |
18572
|
|
|
|
|
|
|
|
18573
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
18574
|
0
|
|
|
|
|
|
register PDL_Indx __inc_index2_n2 = __privtrans->__inc_index2_n2; |
18575
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
18576
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
18577
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
18578
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
18579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
18580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
18581
|
|
|
|
|
|
|
|
18582
|
|
|
|
|
|
|
|
18583
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
18584
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
18585
|
0
|
|
|
|
|
|
int transpose=0; |
18586
|
|
|
|
|
|
|
|
18587
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
18588
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
18589
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
18590
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
18591
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
18592
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
18593
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
18594
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
18595
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
18596
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
18597
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
18598
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
18599
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
18600
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
18601
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
18602
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
18603
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
18604
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
18605
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
18606
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
18607
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
18608
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
18609
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
18610
|
0
|
|
|
|
|
|
index2_datap += __offsp[4]; |
18611
|
0
|
|
|
|
|
|
dist_datap += __offsp[5]; |
18612
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
18613
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
18614
|
0
|
|
|
|
|
|
__tind2++ |
18615
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
18616
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
18617
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
18618
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
18619
|
0
|
|
|
|
|
|
,index2_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
18620
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
18621
|
|
|
|
|
|
|
) |
18622
|
|
|
|
|
|
|
{ |
18623
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
18624
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
18625
|
0
|
|
|
|
|
|
__tind1++ |
18626
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
18627
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
18628
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
18629
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
18630
|
0
|
|
|
|
|
|
,index2_datap += __tinc0_4 |
18631
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_5 |
18632
|
|
|
|
|
|
|
) |
18633
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
18634
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
18635
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
18636
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
18637
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
18638
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
18639
|
0
|
0
|
|
|
|
|
1, __privtrans->__n2_size, &((rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ), index2_datap, |
18640
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
18641
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
18642
|
|
|
|
|
|
|
|
18643
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
18644
|
|
|
|
|
|
|
} |
18645
|
|
|
|
|
|
|
} |
18646
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
18647
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
18648
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
18649
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
18650
|
0
|
|
|
|
|
|
index2_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
18651
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
18652
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
18653
|
|
|
|
|
|
|
/*-- cleanup --*/ |
18654
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
18655
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
18656
|
|
|
|
|
|
|
|
18657
|
0
|
|
|
|
|
|
} break;} |
18658
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
18659
|
|
|
|
|
|
|
} |
18660
|
|
|
|
|
|
|
} |
18661
|
|
|
|
|
|
|
} |
18662
|
|
|
|
|
|
|
|
18663
|
|
|
|
|
|
|
|
18664
|
|
|
|
|
|
|
|
18665
|
|
|
|
|
|
|
|
18666
|
0
|
|
|
|
|
|
void pdl_clusterdistances_free(pdl_trans *__tr ) { |
18667
|
|
|
|
|
|
|
int __dim; |
18668
|
0
|
|
|
|
|
|
pdl_clusterdistances_struct *__privtrans = (pdl_clusterdistances_struct *) __tr; |
18669
|
|
|
|
|
|
|
|
18670
|
|
|
|
|
|
|
{ |
18671
|
|
|
|
|
|
|
|
18672
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
18673
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
18674
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
18675
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
18676
|
|
|
|
|
|
|
;;;;;;;;;;;;; |
18677
|
|
|
|
|
|
|
} |
18678
|
|
|
|
|
|
|
|
18679
|
|
|
|
|
|
|
} |
18680
|
0
|
|
|
|
|
|
} |
18681
|
|
|
|
|
|
|
|
18682
|
|
|
|
|
|
|
|
18683
|
|
|
|
|
|
|
|
18684
|
|
|
|
|
|
|
|
18685
|
|
|
|
|
|
|
static char pdl_clusterdistances_vtable_flags[] = |
18686
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK}; |
18687
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterdistances_vtable = { |
18688
|
|
|
|
|
|
|
0,0, 5, 6, pdl_clusterdistances_vtable_flags, |
18689
|
|
|
|
|
|
|
pdl_clusterdistances_redodims, pdl_clusterdistances_readdata, NULL, |
18690
|
|
|
|
|
|
|
pdl_clusterdistances_free,NULL,NULL,pdl_clusterdistances_copy, |
18691
|
|
|
|
|
|
|
sizeof(pdl_clusterdistances_struct),"pdl_clusterdistances_vtable" |
18692
|
|
|
|
|
|
|
}; |
18693
|
|
|
|
|
|
|
|
18694
|
|
|
|
|
|
|
typedef struct pdl_clustersizes_struct { |
18695
|
|
|
|
|
|
|
PDL_TRANS_START(2); |
18696
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_clusterids_n;PDL_Indx __inc_clustersizes_k;PDL_Indx __n_size;PDL_Indx __k_size; |
18697
|
|
|
|
|
|
|
|
18698
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
18699
|
|
|
|
|
|
|
} pdl_clustersizes_struct; |
18700
|
|
|
|
|
|
|
|
18701
|
1
|
|
|
|
|
|
void pdl_clustersizes_redodims(pdl_trans *__tr ) { |
18702
|
|
|
|
|
|
|
int __dim; |
18703
|
1
|
|
|
|
|
|
pdl_clustersizes_struct *__privtrans = (pdl_clustersizes_struct *) __tr; |
18704
|
|
|
|
|
|
|
|
18705
|
|
|
|
|
|
|
{ |
18706
|
|
|
|
|
|
|
PDL_Indx __creating[2]; |
18707
|
1
|
|
|
|
|
|
__privtrans->__n_size = -1; |
18708
|
1
|
|
|
|
|
|
__privtrans->__k_size = -1; |
18709
|
1
|
|
|
|
|
|
__creating[0] = 0; |
18710
|
1
|
50
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
0
|
|
|
|
|
|
18711
|
|
|
|
|
|
|
{ |
18712
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
18713
|
|
|
|
|
|
|
|
18714
|
1
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
18715
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
18716
|
1
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18717
|
1
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18718
|
1
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18719
|
1
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18720
|
1
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18721
|
|
|
|
|
|
|
|
18722
|
1
|
50
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18723
|
1
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18724
|
1
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18725
|
1
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18726
|
1
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18727
|
|
|
|
|
|
|
|
18728
|
1
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18729
|
1
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18730
|
|
|
|
|
|
|
|
18731
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18732
|
1
|
|
|
|
|
|
} } break; case PDL_S: { |
18733
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18734
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18735
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18736
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18737
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18738
|
|
|
|
|
|
|
|
18739
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18740
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18741
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18742
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18743
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18744
|
|
|
|
|
|
|
|
18745
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18746
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18747
|
|
|
|
|
|
|
|
18748
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18749
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
18750
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18751
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18752
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18753
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18754
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18755
|
|
|
|
|
|
|
|
18756
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18757
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18758
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18759
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18760
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18761
|
|
|
|
|
|
|
|
18762
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18763
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18764
|
|
|
|
|
|
|
|
18765
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18766
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
18767
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18768
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18769
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18770
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18771
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18772
|
|
|
|
|
|
|
|
18773
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18774
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18775
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18776
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18777
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18778
|
|
|
|
|
|
|
|
18779
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18780
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18781
|
|
|
|
|
|
|
|
18782
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18783
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
18784
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18785
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18786
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18787
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18788
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18789
|
|
|
|
|
|
|
|
18790
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18791
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18792
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18793
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18794
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18795
|
|
|
|
|
|
|
|
18796
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18797
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18798
|
|
|
|
|
|
|
|
18799
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18800
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
18801
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18802
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18803
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18804
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18805
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18806
|
|
|
|
|
|
|
|
18807
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18808
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18809
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18810
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18811
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18812
|
|
|
|
|
|
|
|
18813
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18814
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18815
|
|
|
|
|
|
|
|
18816
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18817
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
18818
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18819
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18820
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18821
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18822
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18823
|
|
|
|
|
|
|
|
18824
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18825
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18826
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18827
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18828
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18829
|
|
|
|
|
|
|
|
18830
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18831
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18832
|
|
|
|
|
|
|
|
18833
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18834
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
18835
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
18836
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
18837
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
18838
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
18839
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
18840
|
|
|
|
|
|
|
|
18841
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
18842
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
18843
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
18844
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
18845
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
18846
|
|
|
|
|
|
|
|
18847
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
18848
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
18849
|
|
|
|
|
|
|
|
18850
|
|
|
|
|
|
|
PDL_COMMENT("none") |
18851
|
0
|
|
|
|
|
|
} break;} |
18852
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
18853
|
|
|
|
|
|
|
} |
18854
|
|
|
|
|
|
|
} |
18855
|
|
|
|
|
|
|
{ |
18856
|
|
|
|
|
|
|
static char *__parnames[] = {"clusterids","clustersizes"}; |
18857
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,1}; |
18858
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clustersizes"; |
18859
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
18860
|
|
|
|
|
|
|
__funcname, __parnames, 2 |
18861
|
|
|
|
|
|
|
}; |
18862
|
|
|
|
|
|
|
|
18863
|
1
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
18864
|
|
|
|
|
|
|
__realdims,__creating,2, |
18865
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
18866
|
1
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
18867
|
|
|
|
|
|
|
0 ); |
18868
|
|
|
|
|
|
|
} |
18869
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
18870
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
18871
|
|
|
|
|
|
|
} |
18872
|
1
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
18873
|
1
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
18874
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
18875
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
18876
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clustersizes:" "Wrong dims\n"); |
18877
|
|
|
|
|
|
|
} |
18878
|
|
|
|
|
|
|
} |
18879
|
1
|
50
|
|
|
|
|
if(!__creating[1]) { |
18880
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 1) { |
18881
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
18882
|
|
|
|
|
|
|
} |
18883
|
1
|
50
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
18884
|
1
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[1]))->dims[0]; |
18885
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
18886
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
18887
|
1
|
|
|
|
|
|
PDL->pdl_barf("Error in clustersizes:" "Wrong dims\n"); |
18888
|
|
|
|
|
|
|
} |
18889
|
|
|
|
|
|
|
} |
18890
|
|
|
|
|
|
|
} else { |
18891
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size; |
18892
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
18893
|
|
|
|
|
|
|
} |
18894
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
18895
|
1
|
|
|
|
|
|
void *hdrp = NULL; |
18896
|
1
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
18897
|
1
|
|
|
|
|
|
SV *hdr_copy = NULL; |
18898
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
18899
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
18900
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
18901
|
|
|
|
|
|
|
) { |
18902
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
18903
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
18904
|
|
|
|
|
|
|
} |
18905
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
18906
|
1
|
50
|
|
|
|
|
!__creating[1] && |
18907
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
18908
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
18909
|
|
|
|
|
|
|
) { |
18910
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
18911
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
18912
|
|
|
|
|
|
|
} |
18913
|
1
|
50
|
|
|
|
|
if (hdrp) { |
18914
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
18915
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
18916
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
18917
|
|
|
|
|
|
|
int count; |
18918
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
18919
|
0
|
|
|
|
|
|
dSP; |
18920
|
0
|
|
|
|
|
|
ENTER ; |
18921
|
0
|
|
|
|
|
|
SAVETMPS ; |
18922
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
18923
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
18924
|
0
|
|
|
|
|
|
PUTBACK ; |
18925
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
18926
|
0
|
|
|
|
|
|
SPAGAIN ; |
18927
|
0
|
0
|
|
|
|
|
if(count != 1) |
18928
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
18929
|
|
|
|
|
|
|
|
18930
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
18931
|
|
|
|
|
|
|
|
18932
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
18933
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
18934
|
|
|
|
|
|
|
} |
18935
|
|
|
|
|
|
|
|
18936
|
0
|
0
|
|
|
|
|
FREETMPS ; |
18937
|
0
|
|
|
|
|
|
LEAVE ; |
18938
|
|
|
|
|
|
|
|
18939
|
|
|
|
|
|
|
|
18940
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
18941
|
|
|
|
|
|
|
|
18942
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
18943
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
18944
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
18945
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
18946
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
18947
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
18948
|
|
|
|
|
|
|
} |
18949
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
18950
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
18951
|
|
|
|
|
|
|
|
18952
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
18953
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
18954
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
18955
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
18956
|
1
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
18957
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
18958
|
1
|
50
|
|
|
|
|
__privtrans->__inc_clusterids_n = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
18959
|
0
|
|
|
|
|
|
__privtrans->__inc_clustersizes_k = 0; else |
18960
|
1
|
50
|
|
|
|
|
__privtrans->__inc_clustersizes_k = PDL_REPRINC(__privtrans->pdls[1],0); __privtrans->__ddone = 1; |
18961
|
|
|
|
|
|
|
} |
18962
|
1
|
|
|
|
|
|
} |
18963
|
|
|
|
|
|
|
|
18964
|
|
|
|
|
|
|
|
18965
|
0
|
|
|
|
|
|
pdl_trans * pdl_clustersizes_copy(pdl_trans *__tr ) { |
18966
|
|
|
|
|
|
|
int __dim; |
18967
|
0
|
|
|
|
|
|
pdl_clustersizes_struct *__privtrans = (pdl_clustersizes_struct *) __tr; |
18968
|
|
|
|
|
|
|
|
18969
|
|
|
|
|
|
|
{ |
18970
|
0
|
|
|
|
|
|
pdl_clustersizes_struct *__copy = malloc(sizeof(pdl_clustersizes_struct)); |
18971
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
18972
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
18973
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
18974
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
18975
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
18976
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
18977
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
18978
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
18979
|
|
|
|
|
|
|
{int i; |
18980
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
18981
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
18982
|
|
|
|
|
|
|
} |
18983
|
|
|
|
|
|
|
|
18984
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
18985
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__privtrans->__inc_clustersizes_k=__copy->__inc_clustersizes_k;__copy->__n_size=__privtrans->__n_size;__copy->__k_size=__privtrans->__k_size; |
18986
|
|
|
|
|
|
|
} |
18987
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
18988
|
|
|
|
|
|
|
} |
18989
|
|
|
|
|
|
|
} |
18990
|
|
|
|
|
|
|
|
18991
|
|
|
|
|
|
|
|
18992
|
1
|
|
|
|
|
|
void pdl_clustersizes_readdata(pdl_trans *__tr ) { |
18993
|
|
|
|
|
|
|
int __dim; |
18994
|
1
|
|
|
|
|
|
pdl_clustersizes_struct *__privtrans = (pdl_clustersizes_struct *) __tr; |
18995
|
|
|
|
|
|
|
|
18996
|
|
|
|
|
|
|
{ |
18997
|
1
|
|
|
|
|
|
{register PDL_Indx __k_size = __privtrans->__k_size; |
18998
|
1
|
|
|
|
|
|
register PDL_Indx __n_size = __privtrans->__n_size; |
18999
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
19000
|
|
|
|
|
|
|
|
19001
|
1
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
19002
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
19003
|
1
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19004
|
1
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19005
|
1
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19006
|
1
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19007
|
1
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19008
|
|
|
|
|
|
|
|
19009
|
1
|
50
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19010
|
1
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19011
|
1
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19012
|
1
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19013
|
1
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19014
|
|
|
|
|
|
|
|
19015
|
|
|
|
|
|
|
|
19016
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19017
|
1
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19018
|
1
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19019
|
1
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19020
|
1
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19021
|
1
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19022
|
1
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19023
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19024
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19025
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19026
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19027
|
1
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19028
|
1
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19029
|
2
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
19030
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19031
|
1
|
|
|
|
|
|
__tind2++ |
19032
|
1
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19033
|
1
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19034
|
|
|
|
|
|
|
) |
19035
|
|
|
|
|
|
|
{ |
19036
|
2
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
19037
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19038
|
1
|
|
|
|
|
|
__tind1++ |
19039
|
1
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19040
|
1
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19041
|
|
|
|
|
|
|
) |
19042
|
1
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19043
|
1
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19044
|
|
|
|
|
|
|
|
19045
|
|
|
|
|
|
|
|
19046
|
|
|
|
|
|
|
int cid, csize; |
19047
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19048
|
3
|
50
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
100
|
|
|
|
|
|
19049
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19050
|
5
|
100
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19051
|
4
|
50
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19052
|
4
|
50
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
19053
|
4
|
50
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19054
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19055
|
|
|
|
|
|
|
|
19056
|
|
|
|
|
|
|
} |
19057
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19058
|
|
|
|
|
|
|
} |
19059
|
|
|
|
|
|
|
} |
19060
|
1
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19061
|
1
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19062
|
1
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: { |
19063
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19064
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19065
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19066
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19067
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19068
|
|
|
|
|
|
|
|
19069
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19070
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19071
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19072
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19073
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19074
|
|
|
|
|
|
|
|
19075
|
|
|
|
|
|
|
|
19076
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19077
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19078
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19079
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19080
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19081
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19082
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19083
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19084
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19085
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19086
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19087
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19088
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19089
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19090
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19091
|
0
|
|
|
|
|
|
__tind2++ |
19092
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19093
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19094
|
|
|
|
|
|
|
) |
19095
|
|
|
|
|
|
|
{ |
19096
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19097
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19098
|
0
|
|
|
|
|
|
__tind1++ |
19099
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19100
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19101
|
|
|
|
|
|
|
) |
19102
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19103
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19104
|
|
|
|
|
|
|
|
19105
|
|
|
|
|
|
|
|
19106
|
|
|
|
|
|
|
int cid, csize; |
19107
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19108
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19109
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19110
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19111
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19112
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19113
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19114
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19115
|
|
|
|
|
|
|
|
19116
|
|
|
|
|
|
|
} |
19117
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19118
|
|
|
|
|
|
|
} |
19119
|
|
|
|
|
|
|
} |
19120
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19121
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19122
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: { |
19123
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19124
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19125
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19126
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19127
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19128
|
|
|
|
|
|
|
|
19129
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19130
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19131
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19132
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19133
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19134
|
|
|
|
|
|
|
|
19135
|
|
|
|
|
|
|
|
19136
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19137
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19138
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19139
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19140
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19141
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19142
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19143
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19144
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19145
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19146
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19147
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19148
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19149
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19150
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19151
|
0
|
|
|
|
|
|
__tind2++ |
19152
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19153
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19154
|
|
|
|
|
|
|
) |
19155
|
|
|
|
|
|
|
{ |
19156
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19157
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19158
|
0
|
|
|
|
|
|
__tind1++ |
19159
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19160
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19161
|
|
|
|
|
|
|
) |
19162
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19163
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19164
|
|
|
|
|
|
|
|
19165
|
|
|
|
|
|
|
|
19166
|
|
|
|
|
|
|
int cid, csize; |
19167
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19168
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19169
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19170
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19171
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19172
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19173
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19174
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19175
|
|
|
|
|
|
|
|
19176
|
|
|
|
|
|
|
} |
19177
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19178
|
|
|
|
|
|
|
} |
19179
|
|
|
|
|
|
|
} |
19180
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19181
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19182
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: { |
19183
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19184
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19185
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19186
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19187
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19188
|
|
|
|
|
|
|
|
19189
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19190
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19191
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19192
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19193
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19194
|
|
|
|
|
|
|
|
19195
|
|
|
|
|
|
|
|
19196
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19197
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19198
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19199
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19200
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19201
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19202
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19203
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19204
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19205
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19206
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19207
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19208
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19209
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19210
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19211
|
0
|
|
|
|
|
|
__tind2++ |
19212
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19213
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19214
|
|
|
|
|
|
|
) |
19215
|
|
|
|
|
|
|
{ |
19216
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19217
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19218
|
0
|
|
|
|
|
|
__tind1++ |
19219
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19220
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19221
|
|
|
|
|
|
|
) |
19222
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19223
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19224
|
|
|
|
|
|
|
|
19225
|
|
|
|
|
|
|
|
19226
|
|
|
|
|
|
|
int cid, csize; |
19227
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19228
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19229
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19230
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19231
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19232
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19233
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19234
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19235
|
|
|
|
|
|
|
|
19236
|
|
|
|
|
|
|
} |
19237
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19238
|
|
|
|
|
|
|
} |
19239
|
|
|
|
|
|
|
} |
19240
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19241
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19242
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: { |
19243
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19244
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19245
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19246
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19247
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19248
|
|
|
|
|
|
|
|
19249
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19250
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19251
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19252
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19253
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19254
|
|
|
|
|
|
|
|
19255
|
|
|
|
|
|
|
|
19256
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19257
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19258
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19259
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19260
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19261
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19262
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19263
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19264
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19265
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19266
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19267
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19268
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19269
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19270
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19271
|
0
|
|
|
|
|
|
__tind2++ |
19272
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19273
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19274
|
|
|
|
|
|
|
) |
19275
|
|
|
|
|
|
|
{ |
19276
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19277
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19278
|
0
|
|
|
|
|
|
__tind1++ |
19279
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19280
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19281
|
|
|
|
|
|
|
) |
19282
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19283
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19284
|
|
|
|
|
|
|
|
19285
|
|
|
|
|
|
|
|
19286
|
|
|
|
|
|
|
int cid, csize; |
19287
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19288
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19289
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19290
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19291
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19292
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19293
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19294
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19295
|
|
|
|
|
|
|
|
19296
|
|
|
|
|
|
|
} |
19297
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19298
|
|
|
|
|
|
|
} |
19299
|
|
|
|
|
|
|
} |
19300
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19301
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19302
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: { |
19303
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19304
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19305
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19306
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19307
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19308
|
|
|
|
|
|
|
|
19309
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19310
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19311
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19312
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19313
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19314
|
|
|
|
|
|
|
|
19315
|
|
|
|
|
|
|
|
19316
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19317
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19318
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19319
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19320
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19321
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19322
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19323
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19324
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19325
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19326
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19327
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19328
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19329
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19330
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19331
|
0
|
|
|
|
|
|
__tind2++ |
19332
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19333
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19334
|
|
|
|
|
|
|
) |
19335
|
|
|
|
|
|
|
{ |
19336
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19337
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19338
|
0
|
|
|
|
|
|
__tind1++ |
19339
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19340
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19341
|
|
|
|
|
|
|
) |
19342
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19344
|
|
|
|
|
|
|
|
19345
|
|
|
|
|
|
|
|
19346
|
|
|
|
|
|
|
int cid, csize; |
19347
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19348
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19349
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19350
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19351
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19352
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19353
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19354
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19355
|
|
|
|
|
|
|
|
19356
|
|
|
|
|
|
|
} |
19357
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19358
|
|
|
|
|
|
|
} |
19359
|
|
|
|
|
|
|
} |
19360
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19361
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19362
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: { |
19363
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19364
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19365
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19366
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19367
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19368
|
|
|
|
|
|
|
|
19369
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19370
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19371
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19372
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19373
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19374
|
|
|
|
|
|
|
|
19375
|
|
|
|
|
|
|
|
19376
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19377
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19378
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19379
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19380
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19381
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19382
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19383
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19384
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19385
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19386
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19387
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19388
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19389
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19390
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19391
|
0
|
|
|
|
|
|
__tind2++ |
19392
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19393
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19394
|
|
|
|
|
|
|
) |
19395
|
|
|
|
|
|
|
{ |
19396
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19397
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19398
|
0
|
|
|
|
|
|
__tind1++ |
19399
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19400
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19401
|
|
|
|
|
|
|
) |
19402
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19403
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19404
|
|
|
|
|
|
|
|
19405
|
|
|
|
|
|
|
|
19406
|
|
|
|
|
|
|
int cid, csize; |
19407
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19408
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19409
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19410
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19411
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19412
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19413
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19414
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19415
|
|
|
|
|
|
|
|
19416
|
|
|
|
|
|
|
} |
19417
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19418
|
|
|
|
|
|
|
} |
19419
|
|
|
|
|
|
|
} |
19420
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19421
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19422
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: { |
19423
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19424
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19425
|
0
|
|
|
|
|
|
PDL_Long clusterids_badval = 0; |
19426
|
0
|
|
|
|
|
|
PDL_Anyval clusterids_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[0])); |
19427
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clusterids_badval, PDL_Long, clusterids_anyval_badval); |
19428
|
|
|
|
|
|
|
|
19429
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19430
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19431
|
0
|
|
|
|
|
|
PDL_Long clustersizes_badval = 0; |
19432
|
0
|
|
|
|
|
|
PDL_Anyval clustersizes_anyval_badval = PDL->get_pdl_badvalue((__privtrans->pdls[1])); |
19433
|
0
|
|
|
|
|
|
ANYVAL_TO_CTYPE(clustersizes_badval, PDL_Long, clustersizes_anyval_badval); |
19434
|
|
|
|
|
|
|
|
19435
|
|
|
|
|
|
|
|
19436
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19437
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19438
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19439
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19440
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19441
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19442
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19443
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19444
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19445
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19446
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19447
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19448
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19449
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19450
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19451
|
0
|
|
|
|
|
|
__tind2++ |
19452
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19453
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19454
|
|
|
|
|
|
|
) |
19455
|
|
|
|
|
|
|
{ |
19456
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19457
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19458
|
0
|
|
|
|
|
|
__tind1++ |
19459
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19460
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19461
|
|
|
|
|
|
|
) |
19462
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19463
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19464
|
|
|
|
|
|
|
|
19465
|
|
|
|
|
|
|
|
19466
|
|
|
|
|
|
|
int cid, csize; |
19467
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19468
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19469
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19470
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19471
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19472
|
0
|
0
|
|
|
|
|
if (cid < 0 || cid >= __privtrans->__k_size || cid == clusterids_badval) continue; /*-- sanity check --*/ |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19473
|
0
|
0
|
|
|
|
|
(clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19474
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19475
|
|
|
|
|
|
|
|
19476
|
|
|
|
|
|
|
} |
19477
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19478
|
|
|
|
|
|
|
} |
19479
|
|
|
|
|
|
|
} |
19480
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19481
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19482
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
19483
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
19484
|
|
|
|
|
|
|
} |
19485
|
|
|
|
|
|
|
} |
19486
|
|
|
|
|
|
|
} |
19487
|
|
|
|
|
|
|
|
19488
|
|
|
|
|
|
|
|
19489
|
|
|
|
|
|
|
|
19490
|
|
|
|
|
|
|
|
19491
|
1
|
|
|
|
|
|
void pdl_clustersizes_free(pdl_trans *__tr ) { |
19492
|
|
|
|
|
|
|
int __dim; |
19493
|
1
|
|
|
|
|
|
pdl_clustersizes_struct *__privtrans = (pdl_clustersizes_struct *) __tr; |
19494
|
|
|
|
|
|
|
|
19495
|
|
|
|
|
|
|
{ |
19496
|
|
|
|
|
|
|
|
19497
|
1
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
19498
|
|
|
|
|
|
|
|
19499
|
1
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
19500
|
1
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
19501
|
|
|
|
|
|
|
;;;;; |
19502
|
|
|
|
|
|
|
} |
19503
|
|
|
|
|
|
|
|
19504
|
|
|
|
|
|
|
} |
19505
|
1
|
|
|
|
|
|
} |
19506
|
|
|
|
|
|
|
|
19507
|
|
|
|
|
|
|
|
19508
|
|
|
|
|
|
|
|
19509
|
|
|
|
|
|
|
|
19510
|
|
|
|
|
|
|
static char pdl_clustersizes_vtable_flags[] = |
19511
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
19512
|
|
|
|
|
|
|
pdl_transvtable pdl_clustersizes_vtable = { |
19513
|
|
|
|
|
|
|
0,0, 1, 2, pdl_clustersizes_vtable_flags, |
19514
|
|
|
|
|
|
|
pdl_clustersizes_redodims, pdl_clustersizes_readdata, NULL, |
19515
|
|
|
|
|
|
|
pdl_clustersizes_free,NULL,NULL,pdl_clustersizes_copy, |
19516
|
|
|
|
|
|
|
sizeof(pdl_clustersizes_struct),"pdl_clustersizes_vtable" |
19517
|
|
|
|
|
|
|
}; |
19518
|
|
|
|
|
|
|
|
19519
|
|
|
|
|
|
|
typedef struct pdl_clusterelements_struct { |
19520
|
|
|
|
|
|
|
PDL_TRANS_START(3); |
19521
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_clusterids_n;PDL_Indx __inc_clustersizes_k;PDL_Indx __inc_eltids_mcsize;PDL_Indx __inc_eltids_k;PDL_Indx __k_size;PDL_Indx __n_size;PDL_Indx __mcsize_size; |
19522
|
|
|
|
|
|
|
|
19523
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
19524
|
|
|
|
|
|
|
} pdl_clusterelements_struct; |
19525
|
|
|
|
|
|
|
|
19526
|
1
|
|
|
|
|
|
void pdl_clusterelements_redodims(pdl_trans *__tr ) { |
19527
|
|
|
|
|
|
|
int __dim; |
19528
|
1
|
|
|
|
|
|
pdl_clusterelements_struct *__privtrans = (pdl_clusterelements_struct *) __tr; |
19529
|
|
|
|
|
|
|
|
19530
|
|
|
|
|
|
|
{ |
19531
|
|
|
|
|
|
|
PDL_Indx __creating[3]; |
19532
|
1
|
|
|
|
|
|
__privtrans->__k_size = -1; |
19533
|
1
|
|
|
|
|
|
__privtrans->__n_size = -1; |
19534
|
1
|
|
|
|
|
|
__privtrans->__mcsize_size = -1; |
19535
|
1
|
|
|
|
|
|
__creating[0] = 0; |
19536
|
1
|
50
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
0
|
|
|
|
|
|
19537
|
1
|
50
|
|
|
|
|
__creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]); |
|
|
50
|
|
|
|
|
|
19538
|
|
|
|
|
|
|
{ |
19539
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
19540
|
|
|
|
|
|
|
|
19541
|
1
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
19542
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
19543
|
1
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19544
|
1
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19545
|
|
|
|
|
|
|
|
19546
|
1
|
50
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19547
|
1
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19548
|
|
|
|
|
|
|
|
19549
|
1
|
50
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19550
|
1
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19551
|
|
|
|
|
|
|
|
19552
|
1
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19553
|
1
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19554
|
1
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19555
|
1
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19556
|
|
|
|
|
|
|
|
19557
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19558
|
1
|
|
|
|
|
|
} } break; case PDL_S: { |
19559
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19560
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19561
|
|
|
|
|
|
|
|
19562
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19563
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19564
|
|
|
|
|
|
|
|
19565
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19566
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19567
|
|
|
|
|
|
|
|
19568
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19569
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19570
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19571
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19572
|
|
|
|
|
|
|
|
19573
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19574
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
19575
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19576
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19577
|
|
|
|
|
|
|
|
19578
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19579
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19580
|
|
|
|
|
|
|
|
19581
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19582
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19583
|
|
|
|
|
|
|
|
19584
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19585
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19586
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19587
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19588
|
|
|
|
|
|
|
|
19589
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19590
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
19591
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19592
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19593
|
|
|
|
|
|
|
|
19594
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19595
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19596
|
|
|
|
|
|
|
|
19597
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19598
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19599
|
|
|
|
|
|
|
|
19600
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19601
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19602
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19603
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19604
|
|
|
|
|
|
|
|
19605
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19606
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
19607
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19608
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19609
|
|
|
|
|
|
|
|
19610
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19611
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19612
|
|
|
|
|
|
|
|
19613
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19614
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19615
|
|
|
|
|
|
|
|
19616
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19617
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19618
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19619
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19620
|
|
|
|
|
|
|
|
19621
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19622
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
19623
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19624
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19625
|
|
|
|
|
|
|
|
19626
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19627
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19628
|
|
|
|
|
|
|
|
19629
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19630
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19631
|
|
|
|
|
|
|
|
19632
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19633
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19634
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19635
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19636
|
|
|
|
|
|
|
|
19637
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19638
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
19639
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19640
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19641
|
|
|
|
|
|
|
|
19642
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19643
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19644
|
|
|
|
|
|
|
|
19645
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19646
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19647
|
|
|
|
|
|
|
|
19648
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19649
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19650
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19651
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19652
|
|
|
|
|
|
|
|
19653
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19654
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
19655
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19656
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19657
|
|
|
|
|
|
|
|
19658
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19659
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19660
|
|
|
|
|
|
|
|
19661
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19662
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19663
|
|
|
|
|
|
|
|
19664
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19665
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19666
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19667
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19668
|
|
|
|
|
|
|
|
19669
|
|
|
|
|
|
|
PDL_COMMENT("none") |
19670
|
0
|
|
|
|
|
|
} break;} |
19671
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
19672
|
|
|
|
|
|
|
} |
19673
|
|
|
|
|
|
|
} |
19674
|
|
|
|
|
|
|
{ |
19675
|
|
|
|
|
|
|
static char *__parnames[] = {"clusterids","clustersizes","eltids"}; |
19676
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,1,2}; |
19677
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterelements"; |
19678
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
19679
|
|
|
|
|
|
|
__funcname, __parnames, 3 |
19680
|
|
|
|
|
|
|
}; |
19681
|
|
|
|
|
|
|
|
19682
|
1
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
19683
|
|
|
|
|
|
|
__realdims,__creating,3, |
19684
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
19685
|
1
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
19686
|
|
|
|
|
|
|
0 ); |
19687
|
|
|
|
|
|
|
} |
19688
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
19689
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
19690
|
|
|
|
|
|
|
} |
19691
|
1
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19692
|
1
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
19693
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
19694
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
19695
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelements:" "Wrong dims\n"); |
19696
|
|
|
|
|
|
|
} |
19697
|
|
|
|
|
|
|
} |
19698
|
1
|
50
|
|
|
|
|
if(!__creating[1]) { |
19699
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 1) { |
19700
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
19701
|
|
|
|
|
|
|
} |
19702
|
1
|
50
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19703
|
1
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[1]))->dims[0]; |
19704
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
19705
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
19706
|
1
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelements:" "Wrong dims\n"); |
19707
|
|
|
|
|
|
|
} |
19708
|
|
|
|
|
|
|
} |
19709
|
|
|
|
|
|
|
} else { |
19710
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size; |
19711
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
19712
|
1
|
50
|
|
|
|
|
}if(!__creating[2]) { |
19713
|
1
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 2) { |
19714
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__mcsize_size <= 1) __privtrans->__mcsize_size = 1; |
|
|
0
|
|
|
|
|
|
19715
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
19716
|
|
|
|
|
|
|
} |
19717
|
1
|
50
|
|
|
|
|
if(__privtrans->__mcsize_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__mcsize_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
19718
|
1
|
|
|
|
|
|
__privtrans->__mcsize_size = ((__privtrans->pdls[2]))->dims[0]; |
19719
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__mcsize_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
19720
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
19721
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelements:" "Wrong dims\n"); |
19722
|
|
|
|
|
|
|
} |
19723
|
|
|
|
|
|
|
} |
19724
|
1
|
50
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
19725
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[2]))->dims[1]; |
19726
|
1
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[2]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
19727
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[1] != 1) { |
19728
|
1
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelements:" "Wrong dims\n"); |
19729
|
|
|
|
|
|
|
} |
19730
|
|
|
|
|
|
|
} |
19731
|
|
|
|
|
|
|
} else { |
19732
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__mcsize_size;dims[1] = __privtrans->__k_size; |
19733
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,0); |
19734
|
|
|
|
|
|
|
} |
19735
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
19736
|
1
|
|
|
|
|
|
void *hdrp = NULL; |
19737
|
1
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
19738
|
1
|
|
|
|
|
|
SV *hdr_copy = NULL; |
19739
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
19740
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
19741
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
19742
|
|
|
|
|
|
|
) { |
19743
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
19744
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
19745
|
|
|
|
|
|
|
} |
19746
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
19747
|
1
|
50
|
|
|
|
|
!__creating[1] && |
19748
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
19749
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
19750
|
|
|
|
|
|
|
) { |
19751
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
19752
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
19753
|
|
|
|
|
|
|
} |
19754
|
1
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
19755
|
1
|
50
|
|
|
|
|
!__creating[2] && |
19756
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
19757
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
19758
|
|
|
|
|
|
|
) { |
19759
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
19760
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
19761
|
|
|
|
|
|
|
} |
19762
|
1
|
50
|
|
|
|
|
if (hdrp) { |
19763
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
19764
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
19765
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
19766
|
|
|
|
|
|
|
int count; |
19767
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
19768
|
0
|
|
|
|
|
|
dSP; |
19769
|
0
|
|
|
|
|
|
ENTER ; |
19770
|
0
|
|
|
|
|
|
SAVETMPS ; |
19771
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
19772
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
19773
|
0
|
|
|
|
|
|
PUTBACK ; |
19774
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
19775
|
0
|
|
|
|
|
|
SPAGAIN ; |
19776
|
0
|
0
|
|
|
|
|
if(count != 1) |
19777
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
19778
|
|
|
|
|
|
|
|
19779
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
19780
|
|
|
|
|
|
|
|
19781
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
19782
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
19783
|
|
|
|
|
|
|
} |
19784
|
|
|
|
|
|
|
|
19785
|
0
|
0
|
|
|
|
|
FREETMPS ; |
19786
|
0
|
|
|
|
|
|
LEAVE ; |
19787
|
|
|
|
|
|
|
|
19788
|
|
|
|
|
|
|
|
19789
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
19790
|
|
|
|
|
|
|
|
19791
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
19792
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
19793
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
19794
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
19795
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
19796
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
19797
|
|
|
|
|
|
|
} |
19798
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
19799
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
19800
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[2]->hdrsv != hdrp ){ |
19801
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
19802
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv ); |
19803
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
19804
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
19805
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->hdrsv = hdr_copy; |
19806
|
|
|
|
|
|
|
} |
19807
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
19808
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->state |= PDL_HDRCPY; |
19809
|
|
|
|
|
|
|
|
19810
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
19811
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
19812
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
19813
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
19814
|
1
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
19815
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
19816
|
1
|
50
|
|
|
|
|
__privtrans->__inc_clusterids_n = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
19817
|
0
|
|
|
|
|
|
__privtrans->__inc_clustersizes_k = 0; else |
19818
|
1
|
50
|
|
|
|
|
__privtrans->__inc_clustersizes_k = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
19819
|
0
|
|
|
|
|
|
__privtrans->__inc_eltids_mcsize = 0; else |
19820
|
1
|
50
|
|
|
|
|
__privtrans->__inc_eltids_mcsize = PDL_REPRINC(__privtrans->pdls[2],0);if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
19821
|
0
|
|
|
|
|
|
__privtrans->__inc_eltids_k = 0; else |
19822
|
1
|
50
|
|
|
|
|
__privtrans->__inc_eltids_k = PDL_REPRINC(__privtrans->pdls[2],1); __privtrans->__ddone = 1; |
19823
|
|
|
|
|
|
|
} |
19824
|
1
|
|
|
|
|
|
} |
19825
|
|
|
|
|
|
|
|
19826
|
|
|
|
|
|
|
|
19827
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterelements_copy(pdl_trans *__tr ) { |
19828
|
|
|
|
|
|
|
int __dim; |
19829
|
0
|
|
|
|
|
|
pdl_clusterelements_struct *__privtrans = (pdl_clusterelements_struct *) __tr; |
19830
|
|
|
|
|
|
|
|
19831
|
|
|
|
|
|
|
{ |
19832
|
0
|
|
|
|
|
|
pdl_clusterelements_struct *__copy = malloc(sizeof(pdl_clusterelements_struct)); |
19833
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
19834
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
19835
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
19836
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
19837
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
19838
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
19839
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
19840
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
19841
|
|
|
|
|
|
|
{int i; |
19842
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
19843
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
19844
|
|
|
|
|
|
|
} |
19845
|
|
|
|
|
|
|
|
19846
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
19847
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__privtrans->__inc_clustersizes_k=__copy->__inc_clustersizes_k;__privtrans->__inc_eltids_mcsize=__copy->__inc_eltids_mcsize;__privtrans->__inc_eltids_k=__copy->__inc_eltids_k;__copy->__k_size=__privtrans->__k_size;__copy->__n_size=__privtrans->__n_size;__copy->__mcsize_size=__privtrans->__mcsize_size; |
19848
|
|
|
|
|
|
|
} |
19849
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
19850
|
|
|
|
|
|
|
} |
19851
|
|
|
|
|
|
|
} |
19852
|
|
|
|
|
|
|
|
19853
|
|
|
|
|
|
|
|
19854
|
1
|
|
|
|
|
|
void pdl_clusterelements_readdata(pdl_trans *__tr ) { |
19855
|
|
|
|
|
|
|
int __dim; |
19856
|
1
|
|
|
|
|
|
pdl_clusterelements_struct *__privtrans = (pdl_clusterelements_struct *) __tr; |
19857
|
|
|
|
|
|
|
|
19858
|
|
|
|
|
|
|
{ |
19859
|
1
|
|
|
|
|
|
{register PDL_Indx __k_size = __privtrans->__k_size; |
19860
|
1
|
|
|
|
|
|
register PDL_Indx __n_size = __privtrans->__n_size; |
19861
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
19862
|
|
|
|
|
|
|
|
19863
|
1
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
19864
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
19865
|
1
|
50
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19866
|
1
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19867
|
|
|
|
|
|
|
|
19868
|
1
|
50
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19869
|
1
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19870
|
|
|
|
|
|
|
|
19871
|
1
|
50
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19872
|
1
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19873
|
|
|
|
|
|
|
|
19874
|
|
|
|
|
|
|
|
19875
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19876
|
1
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19877
|
1
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19878
|
1
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19879
|
1
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19880
|
1
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19881
|
1
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19882
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19883
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19884
|
1
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
19885
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19886
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19887
|
1
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
19888
|
1
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19889
|
1
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19890
|
1
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
19891
|
2
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
19892
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19893
|
1
|
|
|
|
|
|
__tind2++ |
19894
|
1
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19895
|
1
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19896
|
1
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
19897
|
|
|
|
|
|
|
) |
19898
|
|
|
|
|
|
|
{ |
19899
|
2
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
19900
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19901
|
1
|
|
|
|
|
|
__tind1++ |
19902
|
1
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19903
|
1
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19904
|
1
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
19905
|
|
|
|
|
|
|
) |
19906
|
1
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19907
|
1
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19908
|
1
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19909
|
1
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19910
|
|
|
|
|
|
|
|
19911
|
|
|
|
|
|
|
|
19912
|
|
|
|
|
|
|
int cid, csize; |
19913
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19914
|
3
|
50
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
100
|
|
|
|
|
|
19915
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19916
|
5
|
100
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19917
|
4
|
50
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19918
|
4
|
50
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19919
|
4
|
50
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
50
|
|
|
|
|
|
19920
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19921
|
|
|
|
|
|
|
|
19922
|
|
|
|
|
|
|
} |
19923
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19924
|
|
|
|
|
|
|
} |
19925
|
|
|
|
|
|
|
} |
19926
|
1
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19927
|
1
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19928
|
1
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
19929
|
1
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: { |
19930
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19931
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19932
|
|
|
|
|
|
|
|
19933
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19934
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
19935
|
|
|
|
|
|
|
|
19936
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
19937
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
19938
|
|
|
|
|
|
|
|
19939
|
|
|
|
|
|
|
|
19940
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
19941
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
19942
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
19943
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
19944
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
19945
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
19946
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
19947
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
19948
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
19949
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
19950
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
19951
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
19952
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
19953
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
19954
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
19955
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
19956
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
19957
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
19958
|
0
|
|
|
|
|
|
__tind2++ |
19959
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
19960
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
19961
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
19962
|
|
|
|
|
|
|
) |
19963
|
|
|
|
|
|
|
{ |
19964
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
19965
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
19966
|
0
|
|
|
|
|
|
__tind1++ |
19967
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
19968
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
19969
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
19970
|
|
|
|
|
|
|
) |
19971
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
19972
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
19973
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
19974
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
19975
|
|
|
|
|
|
|
|
19976
|
|
|
|
|
|
|
|
19977
|
|
|
|
|
|
|
int cid, csize; |
19978
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
19979
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
19980
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
19981
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
19982
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
19983
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
19984
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
19985
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
19986
|
|
|
|
|
|
|
|
19987
|
|
|
|
|
|
|
} |
19988
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
19989
|
|
|
|
|
|
|
} |
19990
|
|
|
|
|
|
|
} |
19991
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
19992
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
19993
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
19994
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: { |
19995
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
19996
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
19997
|
|
|
|
|
|
|
|
19998
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
19999
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
20000
|
|
|
|
|
|
|
|
20001
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
20002
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
20003
|
|
|
|
|
|
|
|
20004
|
|
|
|
|
|
|
|
20005
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20006
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20007
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20008
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20009
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20010
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20011
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20012
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20013
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20014
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
20015
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20016
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20017
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
20018
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20019
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
20020
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
20021
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20022
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20023
|
0
|
|
|
|
|
|
__tind2++ |
20024
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20025
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20026
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
20027
|
|
|
|
|
|
|
) |
20028
|
|
|
|
|
|
|
{ |
20029
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20030
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20031
|
0
|
|
|
|
|
|
__tind1++ |
20032
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20033
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
20034
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
20035
|
|
|
|
|
|
|
) |
20036
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
20037
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20038
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
20039
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
20040
|
|
|
|
|
|
|
|
20041
|
|
|
|
|
|
|
|
20042
|
|
|
|
|
|
|
int cid, csize; |
20043
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
20044
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
20045
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20046
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20047
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20048
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
20049
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
20050
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20051
|
|
|
|
|
|
|
|
20052
|
|
|
|
|
|
|
} |
20053
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20054
|
|
|
|
|
|
|
} |
20055
|
|
|
|
|
|
|
} |
20056
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20057
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20058
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
20059
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: { |
20060
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20061
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20062
|
|
|
|
|
|
|
|
20063
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20064
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
20065
|
|
|
|
|
|
|
|
20066
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
20067
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
20068
|
|
|
|
|
|
|
|
20069
|
|
|
|
|
|
|
|
20070
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20071
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20072
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20073
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20074
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20075
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20076
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20077
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20078
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20079
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
20080
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20081
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20082
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
20083
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20084
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
20085
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
20086
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20087
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20088
|
0
|
|
|
|
|
|
__tind2++ |
20089
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20090
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20091
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
20092
|
|
|
|
|
|
|
) |
20093
|
|
|
|
|
|
|
{ |
20094
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20095
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20096
|
0
|
|
|
|
|
|
__tind1++ |
20097
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20098
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
20099
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
20100
|
|
|
|
|
|
|
) |
20101
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
20102
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20103
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
20104
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
20105
|
|
|
|
|
|
|
|
20106
|
|
|
|
|
|
|
|
20107
|
|
|
|
|
|
|
int cid, csize; |
20108
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
20109
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
20110
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20111
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20112
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20113
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
20114
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
20115
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20116
|
|
|
|
|
|
|
|
20117
|
|
|
|
|
|
|
} |
20118
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20119
|
|
|
|
|
|
|
} |
20120
|
|
|
|
|
|
|
} |
20121
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20122
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20123
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
20124
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: { |
20125
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20126
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20127
|
|
|
|
|
|
|
|
20128
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20129
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
20130
|
|
|
|
|
|
|
|
20131
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
20132
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
20133
|
|
|
|
|
|
|
|
20134
|
|
|
|
|
|
|
|
20135
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20136
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20137
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20138
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20139
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20140
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20141
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20142
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20143
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20144
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
20145
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20146
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20147
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
20148
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20149
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
20150
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
20151
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20152
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20153
|
0
|
|
|
|
|
|
__tind2++ |
20154
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20155
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20156
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
20157
|
|
|
|
|
|
|
) |
20158
|
|
|
|
|
|
|
{ |
20159
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20160
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20161
|
0
|
|
|
|
|
|
__tind1++ |
20162
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20163
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
20164
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
20165
|
|
|
|
|
|
|
) |
20166
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
20167
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20168
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
20169
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
20170
|
|
|
|
|
|
|
|
20171
|
|
|
|
|
|
|
|
20172
|
|
|
|
|
|
|
int cid, csize; |
20173
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
20174
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
20175
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20176
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20177
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20178
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
20179
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
20180
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20181
|
|
|
|
|
|
|
|
20182
|
|
|
|
|
|
|
} |
20183
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20184
|
|
|
|
|
|
|
} |
20185
|
|
|
|
|
|
|
} |
20186
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20187
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20188
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
20189
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: { |
20190
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20191
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20192
|
|
|
|
|
|
|
|
20193
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20194
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
20195
|
|
|
|
|
|
|
|
20196
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
20197
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
20198
|
|
|
|
|
|
|
|
20199
|
|
|
|
|
|
|
|
20200
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20201
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20202
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20203
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20204
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20205
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20206
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20207
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20208
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20209
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
20210
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20211
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20212
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
20213
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20214
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
20215
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
20216
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20217
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20218
|
0
|
|
|
|
|
|
__tind2++ |
20219
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20220
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20221
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
20222
|
|
|
|
|
|
|
) |
20223
|
|
|
|
|
|
|
{ |
20224
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20225
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20226
|
0
|
|
|
|
|
|
__tind1++ |
20227
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20228
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
20229
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
20230
|
|
|
|
|
|
|
) |
20231
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
20232
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20233
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
20234
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
20235
|
|
|
|
|
|
|
|
20236
|
|
|
|
|
|
|
|
20237
|
|
|
|
|
|
|
int cid, csize; |
20238
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
20239
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
20240
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20241
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20242
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20243
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
20244
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
20245
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20246
|
|
|
|
|
|
|
|
20247
|
|
|
|
|
|
|
} |
20248
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20249
|
|
|
|
|
|
|
} |
20250
|
|
|
|
|
|
|
} |
20251
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20252
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20253
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
20254
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: { |
20255
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20256
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20257
|
|
|
|
|
|
|
|
20258
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20259
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
20260
|
|
|
|
|
|
|
|
20261
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
20262
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
20263
|
|
|
|
|
|
|
|
20264
|
|
|
|
|
|
|
|
20265
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20266
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20267
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20268
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20269
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20270
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20271
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20272
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20273
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20274
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
20275
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20276
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20277
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
20278
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20279
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
20280
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
20281
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20282
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20283
|
0
|
|
|
|
|
|
__tind2++ |
20284
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20285
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20286
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
20287
|
|
|
|
|
|
|
) |
20288
|
|
|
|
|
|
|
{ |
20289
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20290
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20291
|
0
|
|
|
|
|
|
__tind1++ |
20292
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20293
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
20294
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
20295
|
|
|
|
|
|
|
) |
20296
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
20297
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20298
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
20299
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
20300
|
|
|
|
|
|
|
|
20301
|
|
|
|
|
|
|
|
20302
|
|
|
|
|
|
|
int cid, csize; |
20303
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
20304
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
20305
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20306
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20307
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20308
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
20309
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
20310
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20311
|
|
|
|
|
|
|
|
20312
|
|
|
|
|
|
|
} |
20313
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20314
|
|
|
|
|
|
|
} |
20315
|
|
|
|
|
|
|
} |
20316
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20317
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20318
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
20319
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: { |
20320
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20321
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20322
|
|
|
|
|
|
|
|
20323
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20324
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
20325
|
|
|
|
|
|
|
|
20326
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
20327
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
20328
|
|
|
|
|
|
|
|
20329
|
|
|
|
|
|
|
|
20330
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20331
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20332
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20333
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20334
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20335
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20336
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20337
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20338
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20339
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
20340
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20341
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20342
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
20343
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20344
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[1]; |
20345
|
0
|
|
|
|
|
|
eltids_datap += __offsp[2]; |
20346
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20347
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20348
|
0
|
|
|
|
|
|
__tind2++ |
20349
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20350
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20351
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
20352
|
|
|
|
|
|
|
) |
20353
|
|
|
|
|
|
|
{ |
20354
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20355
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20356
|
0
|
|
|
|
|
|
__tind1++ |
20357
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20358
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_1 |
20359
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_2 |
20360
|
|
|
|
|
|
|
) |
20361
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
20362
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20363
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
20364
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
20365
|
|
|
|
|
|
|
|
20366
|
|
|
|
|
|
|
|
20367
|
|
|
|
|
|
|
int cid, csize; |
20368
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
20369
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
20370
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20371
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20372
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20373
|
0
|
0
|
|
|
|
|
csize = (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") ++; |
20374
|
0
|
0
|
|
|
|
|
(eltids_datap)[0+(__inc_eltids_mcsize*PP_INDTERM(__privtrans->__mcsize_size, csize))+(__inc_eltids_k*PP_INDTERM(__privtrans->__k_size, cid))] PDL_COMMENT("ACCESS()") = n; |
|
|
0
|
|
|
|
|
|
20375
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20376
|
|
|
|
|
|
|
|
20377
|
|
|
|
|
|
|
} |
20378
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20379
|
|
|
|
|
|
|
} |
20380
|
|
|
|
|
|
|
} |
20381
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20382
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20383
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
20384
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
20385
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
20386
|
|
|
|
|
|
|
} |
20387
|
|
|
|
|
|
|
} |
20388
|
|
|
|
|
|
|
} |
20389
|
|
|
|
|
|
|
|
20390
|
|
|
|
|
|
|
|
20391
|
|
|
|
|
|
|
|
20392
|
|
|
|
|
|
|
|
20393
|
1
|
|
|
|
|
|
void pdl_clusterelements_free(pdl_trans *__tr ) { |
20394
|
|
|
|
|
|
|
int __dim; |
20395
|
1
|
|
|
|
|
|
pdl_clusterelements_struct *__privtrans = (pdl_clusterelements_struct *) __tr; |
20396
|
|
|
|
|
|
|
|
20397
|
|
|
|
|
|
|
{ |
20398
|
|
|
|
|
|
|
|
20399
|
1
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
20400
|
|
|
|
|
|
|
|
20401
|
1
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
20402
|
1
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
20403
|
|
|
|
|
|
|
;;;;;;;; |
20404
|
|
|
|
|
|
|
} |
20405
|
|
|
|
|
|
|
|
20406
|
|
|
|
|
|
|
} |
20407
|
1
|
|
|
|
|
|
} |
20408
|
|
|
|
|
|
|
|
20409
|
|
|
|
|
|
|
|
20410
|
|
|
|
|
|
|
|
20411
|
|
|
|
|
|
|
|
20412
|
|
|
|
|
|
|
static char pdl_clusterelements_vtable_flags[] = |
20413
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
20414
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterelements_vtable = { |
20415
|
|
|
|
|
|
|
0,0, 1, 3, pdl_clusterelements_vtable_flags, |
20416
|
|
|
|
|
|
|
pdl_clusterelements_redodims, pdl_clusterelements_readdata, NULL, |
20417
|
|
|
|
|
|
|
pdl_clusterelements_free,NULL,NULL,pdl_clusterelements_copy, |
20418
|
|
|
|
|
|
|
sizeof(pdl_clusterelements_struct),"pdl_clusterelements_vtable" |
20419
|
|
|
|
|
|
|
}; |
20420
|
|
|
|
|
|
|
|
20421
|
|
|
|
|
|
|
typedef struct pdl_clusterelementmask_struct { |
20422
|
|
|
|
|
|
|
PDL_TRANS_START(2); |
20423
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_clusterids_n;PDL_Indx __inc_eltmask_k;PDL_Indx __inc_eltmask_n;PDL_Indx __k_size;PDL_Indx __n_size; |
20424
|
|
|
|
|
|
|
|
20425
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
20426
|
|
|
|
|
|
|
} pdl_clusterelementmask_struct; |
20427
|
|
|
|
|
|
|
|
20428
|
0
|
|
|
|
|
|
void pdl_clusterelementmask_redodims(pdl_trans *__tr ) { |
20429
|
|
|
|
|
|
|
int __dim; |
20430
|
0
|
|
|
|
|
|
pdl_clusterelementmask_struct *__privtrans = (pdl_clusterelementmask_struct *) __tr; |
20431
|
|
|
|
|
|
|
|
20432
|
|
|
|
|
|
|
{ |
20433
|
|
|
|
|
|
|
PDL_Indx __creating[2]; |
20434
|
0
|
|
|
|
|
|
__privtrans->__k_size = -1; |
20435
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
20436
|
0
|
|
|
|
|
|
__creating[0] = 0; |
20437
|
0
|
0
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
0
|
|
|
|
|
|
20438
|
|
|
|
|
|
|
{ |
20439
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
20440
|
|
|
|
|
|
|
|
20441
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
20442
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
20443
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20444
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20445
|
|
|
|
|
|
|
|
20446
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20447
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20448
|
|
|
|
|
|
|
|
20449
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20450
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20451
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20452
|
|
|
|
|
|
|
|
20453
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20454
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
20455
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20456
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20457
|
|
|
|
|
|
|
|
20458
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20459
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20460
|
|
|
|
|
|
|
|
20461
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20462
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20463
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20464
|
|
|
|
|
|
|
|
20465
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20466
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
20467
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20468
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20469
|
|
|
|
|
|
|
|
20470
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20471
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20472
|
|
|
|
|
|
|
|
20473
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20474
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20475
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20476
|
|
|
|
|
|
|
|
20477
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20478
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
20479
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20480
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20481
|
|
|
|
|
|
|
|
20482
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20483
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20484
|
|
|
|
|
|
|
|
20485
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20486
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20487
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20488
|
|
|
|
|
|
|
|
20489
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20490
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
20491
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20492
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20493
|
|
|
|
|
|
|
|
20494
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20495
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20496
|
|
|
|
|
|
|
|
20497
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20498
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20499
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20500
|
|
|
|
|
|
|
|
20501
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20502
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
20503
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20504
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20505
|
|
|
|
|
|
|
|
20506
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20507
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20508
|
|
|
|
|
|
|
|
20509
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20510
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20511
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20512
|
|
|
|
|
|
|
|
20513
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20514
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
20515
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20516
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20517
|
|
|
|
|
|
|
|
20518
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20519
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20520
|
|
|
|
|
|
|
|
20521
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20522
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20523
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20524
|
|
|
|
|
|
|
|
20525
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20526
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
20527
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20528
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20529
|
|
|
|
|
|
|
|
20530
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20531
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20532
|
|
|
|
|
|
|
|
20533
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20534
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20535
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20536
|
|
|
|
|
|
|
|
20537
|
|
|
|
|
|
|
PDL_COMMENT("none") |
20538
|
0
|
|
|
|
|
|
} break;} |
20539
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
20540
|
|
|
|
|
|
|
} |
20541
|
|
|
|
|
|
|
} |
20542
|
|
|
|
|
|
|
{ |
20543
|
|
|
|
|
|
|
static char *__parnames[] = {"clusterids","eltmask"}; |
20544
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,2}; |
20545
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterelementmask"; |
20546
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
20547
|
|
|
|
|
|
|
__funcname, __parnames, 2 |
20548
|
|
|
|
|
|
|
}; |
20549
|
|
|
|
|
|
|
|
20550
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
20551
|
|
|
|
|
|
|
__realdims,__creating,2, |
20552
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
20553
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
20554
|
|
|
|
|
|
|
0 ); |
20555
|
|
|
|
|
|
|
} |
20556
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
20557
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
20558
|
|
|
|
|
|
|
} |
20559
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
20560
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
20561
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
20562
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
20563
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelementmask:" "Wrong dims\n"); |
20564
|
|
|
|
|
|
|
} |
20565
|
|
|
|
|
|
|
} |
20566
|
0
|
0
|
|
|
|
|
if(!__creating[1]) { |
20567
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
20568
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
20569
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
20570
|
|
|
|
|
|
|
} |
20571
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
20572
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[1]))->dims[0]; |
20573
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
20574
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
20575
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelementmask:" "Wrong dims\n"); |
20576
|
|
|
|
|
|
|
} |
20577
|
|
|
|
|
|
|
} |
20578
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
20579
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
20580
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
20581
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
20582
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterelementmask:" "Wrong dims\n"); |
20583
|
|
|
|
|
|
|
} |
20584
|
|
|
|
|
|
|
} |
20585
|
|
|
|
|
|
|
} else { |
20586
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size;dims[1] = __privtrans->__n_size; |
20587
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
20588
|
|
|
|
|
|
|
} |
20589
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
20590
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
20591
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
20592
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
20593
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
20594
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
20595
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
20596
|
|
|
|
|
|
|
) { |
20597
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
20598
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
20599
|
|
|
|
|
|
|
} |
20600
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
20601
|
0
|
0
|
|
|
|
|
!__creating[1] && |
20602
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
20603
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
20604
|
|
|
|
|
|
|
) { |
20605
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
20606
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
20607
|
|
|
|
|
|
|
} |
20608
|
0
|
0
|
|
|
|
|
if (hdrp) { |
20609
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
20610
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
20611
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
20612
|
|
|
|
|
|
|
int count; |
20613
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
20614
|
0
|
|
|
|
|
|
dSP; |
20615
|
0
|
|
|
|
|
|
ENTER ; |
20616
|
0
|
|
|
|
|
|
SAVETMPS ; |
20617
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
20618
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
20619
|
0
|
|
|
|
|
|
PUTBACK ; |
20620
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
20621
|
0
|
|
|
|
|
|
SPAGAIN ; |
20622
|
0
|
0
|
|
|
|
|
if(count != 1) |
20623
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
20624
|
|
|
|
|
|
|
|
20625
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
20626
|
|
|
|
|
|
|
|
20627
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
20628
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
20629
|
|
|
|
|
|
|
} |
20630
|
|
|
|
|
|
|
|
20631
|
0
|
0
|
|
|
|
|
FREETMPS ; |
20632
|
0
|
|
|
|
|
|
LEAVE ; |
20633
|
|
|
|
|
|
|
|
20634
|
|
|
|
|
|
|
|
20635
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
20636
|
|
|
|
|
|
|
|
20637
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
20638
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
20639
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
20640
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
20641
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
20642
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
20643
|
|
|
|
|
|
|
} |
20644
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
20645
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
20646
|
|
|
|
|
|
|
|
20647
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
20648
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
20649
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
20650
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
20651
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
20652
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_n = 0; else |
20653
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clusterids_n = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
20654
|
0
|
|
|
|
|
|
__privtrans->__inc_eltmask_k = 0; else |
20655
|
0
|
0
|
|
|
|
|
__privtrans->__inc_eltmask_k = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
20656
|
0
|
|
|
|
|
|
__privtrans->__inc_eltmask_n = 0; else |
20657
|
0
|
0
|
|
|
|
|
__privtrans->__inc_eltmask_n = PDL_REPRINC(__privtrans->pdls[1],1); __privtrans->__ddone = 1; |
20658
|
|
|
|
|
|
|
} |
20659
|
0
|
|
|
|
|
|
} |
20660
|
|
|
|
|
|
|
|
20661
|
|
|
|
|
|
|
|
20662
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterelementmask_copy(pdl_trans *__tr ) { |
20663
|
|
|
|
|
|
|
int __dim; |
20664
|
0
|
|
|
|
|
|
pdl_clusterelementmask_struct *__privtrans = (pdl_clusterelementmask_struct *) __tr; |
20665
|
|
|
|
|
|
|
|
20666
|
|
|
|
|
|
|
{ |
20667
|
0
|
|
|
|
|
|
pdl_clusterelementmask_struct *__copy = malloc(sizeof(pdl_clusterelementmask_struct)); |
20668
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
20669
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
20670
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
20671
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
20672
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
20673
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
20674
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
20675
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
20676
|
|
|
|
|
|
|
{int i; |
20677
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
20678
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
20679
|
|
|
|
|
|
|
} |
20680
|
|
|
|
|
|
|
|
20681
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
20682
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_clusterids_n=__copy->__inc_clusterids_n;__privtrans->__inc_eltmask_k=__copy->__inc_eltmask_k;__privtrans->__inc_eltmask_n=__copy->__inc_eltmask_n;__copy->__k_size=__privtrans->__k_size;__copy->__n_size=__privtrans->__n_size; |
20683
|
|
|
|
|
|
|
} |
20684
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
20685
|
|
|
|
|
|
|
} |
20686
|
|
|
|
|
|
|
} |
20687
|
|
|
|
|
|
|
|
20688
|
|
|
|
|
|
|
|
20689
|
0
|
|
|
|
|
|
void pdl_clusterelementmask_readdata(pdl_trans *__tr ) { |
20690
|
|
|
|
|
|
|
int __dim; |
20691
|
0
|
|
|
|
|
|
pdl_clusterelementmask_struct *__privtrans = (pdl_clusterelementmask_struct *) __tr; |
20692
|
|
|
|
|
|
|
|
20693
|
|
|
|
|
|
|
{ |
20694
|
0
|
|
|
|
|
|
{register PDL_Indx __n_size = __privtrans->__n_size; |
20695
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
20696
|
|
|
|
|
|
|
|
20697
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
20698
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
20699
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20700
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20701
|
|
|
|
|
|
|
|
20702
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20703
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20704
|
|
|
|
|
|
|
|
20705
|
|
|
|
|
|
|
|
20706
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20707
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20708
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20709
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20710
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20711
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20712
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20713
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20714
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20715
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20716
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20717
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20718
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
20719
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20720
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20721
|
0
|
|
|
|
|
|
__tind2++ |
20722
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20723
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20724
|
|
|
|
|
|
|
) |
20725
|
|
|
|
|
|
|
{ |
20726
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20727
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20728
|
0
|
|
|
|
|
|
__tind1++ |
20729
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20730
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
20731
|
|
|
|
|
|
|
) |
20732
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20733
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20734
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20735
|
|
|
|
|
|
|
|
20736
|
|
|
|
|
|
|
|
20737
|
|
|
|
|
|
|
int cid, csize; |
20738
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20739
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20740
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20741
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
20742
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20743
|
|
|
|
|
|
|
|
20744
|
|
|
|
|
|
|
} |
20745
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20746
|
|
|
|
|
|
|
} |
20747
|
|
|
|
|
|
|
} |
20748
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20749
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20750
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: { |
20751
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20752
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20753
|
|
|
|
|
|
|
|
20754
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20755
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20756
|
|
|
|
|
|
|
|
20757
|
|
|
|
|
|
|
|
20758
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20759
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20760
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20761
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20762
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20763
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20764
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20765
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20766
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20767
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20768
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20769
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20770
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
20771
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20772
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20773
|
0
|
|
|
|
|
|
__tind2++ |
20774
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20775
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20776
|
|
|
|
|
|
|
) |
20777
|
|
|
|
|
|
|
{ |
20778
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20779
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20780
|
0
|
|
|
|
|
|
__tind1++ |
20781
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20782
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
20783
|
|
|
|
|
|
|
) |
20784
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20785
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20786
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20787
|
|
|
|
|
|
|
|
20788
|
|
|
|
|
|
|
|
20789
|
|
|
|
|
|
|
int cid, csize; |
20790
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20791
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20792
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20793
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
20794
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20795
|
|
|
|
|
|
|
|
20796
|
|
|
|
|
|
|
} |
20797
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20798
|
|
|
|
|
|
|
} |
20799
|
|
|
|
|
|
|
} |
20800
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20801
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20802
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: { |
20803
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20804
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20805
|
|
|
|
|
|
|
|
20806
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20807
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20808
|
|
|
|
|
|
|
|
20809
|
|
|
|
|
|
|
|
20810
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20811
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20812
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20813
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20814
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20815
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20816
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20817
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20818
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20819
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20820
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20821
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20822
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
20823
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20824
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20825
|
0
|
|
|
|
|
|
__tind2++ |
20826
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20827
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20828
|
|
|
|
|
|
|
) |
20829
|
|
|
|
|
|
|
{ |
20830
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20831
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20832
|
0
|
|
|
|
|
|
__tind1++ |
20833
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20834
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
20835
|
|
|
|
|
|
|
) |
20836
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20837
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20838
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20839
|
|
|
|
|
|
|
|
20840
|
|
|
|
|
|
|
|
20841
|
|
|
|
|
|
|
int cid, csize; |
20842
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20843
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20844
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20845
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
20846
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20847
|
|
|
|
|
|
|
|
20848
|
|
|
|
|
|
|
} |
20849
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20850
|
|
|
|
|
|
|
} |
20851
|
|
|
|
|
|
|
} |
20852
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20853
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20854
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: { |
20855
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20856
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20857
|
|
|
|
|
|
|
|
20858
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20859
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20860
|
|
|
|
|
|
|
|
20861
|
|
|
|
|
|
|
|
20862
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20863
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20864
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20865
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20866
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20867
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20868
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20869
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20870
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20871
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20872
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20873
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20874
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
20875
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20876
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20877
|
0
|
|
|
|
|
|
__tind2++ |
20878
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20879
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20880
|
|
|
|
|
|
|
) |
20881
|
|
|
|
|
|
|
{ |
20882
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20883
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20884
|
0
|
|
|
|
|
|
__tind1++ |
20885
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20886
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
20887
|
|
|
|
|
|
|
) |
20888
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20889
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20890
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20891
|
|
|
|
|
|
|
|
20892
|
|
|
|
|
|
|
|
20893
|
|
|
|
|
|
|
int cid, csize; |
20894
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20895
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20896
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20897
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
20898
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20899
|
|
|
|
|
|
|
|
20900
|
|
|
|
|
|
|
} |
20901
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20902
|
|
|
|
|
|
|
} |
20903
|
|
|
|
|
|
|
} |
20904
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20905
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20906
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: { |
20907
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20908
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20909
|
|
|
|
|
|
|
|
20910
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20911
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20912
|
|
|
|
|
|
|
|
20913
|
|
|
|
|
|
|
|
20914
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20915
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20916
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20917
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20918
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20919
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20920
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20921
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20922
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20923
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20924
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20925
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20926
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
20927
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20928
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20929
|
0
|
|
|
|
|
|
__tind2++ |
20930
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20931
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20932
|
|
|
|
|
|
|
) |
20933
|
|
|
|
|
|
|
{ |
20934
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20935
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20936
|
0
|
|
|
|
|
|
__tind1++ |
20937
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20938
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
20939
|
|
|
|
|
|
|
) |
20940
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20941
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20942
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20943
|
|
|
|
|
|
|
|
20944
|
|
|
|
|
|
|
|
20945
|
|
|
|
|
|
|
int cid, csize; |
20946
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20947
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
20948
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
20949
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
20950
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
20951
|
|
|
|
|
|
|
|
20952
|
|
|
|
|
|
|
} |
20953
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
20954
|
|
|
|
|
|
|
} |
20955
|
|
|
|
|
|
|
} |
20956
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
20957
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
20958
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: { |
20959
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
20960
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
20961
|
|
|
|
|
|
|
|
20962
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
20963
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
20964
|
|
|
|
|
|
|
|
20965
|
|
|
|
|
|
|
|
20966
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
20967
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
20968
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
20969
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
20970
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
20971
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
20972
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
20973
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
20974
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
20975
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
20976
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
20977
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
20978
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
20979
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
20980
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
20981
|
0
|
|
|
|
|
|
__tind2++ |
20982
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
20983
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
20984
|
|
|
|
|
|
|
) |
20985
|
|
|
|
|
|
|
{ |
20986
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
20987
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
20988
|
0
|
|
|
|
|
|
__tind1++ |
20989
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
20990
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
20991
|
|
|
|
|
|
|
) |
20992
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
20993
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
20994
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
20995
|
|
|
|
|
|
|
|
20996
|
|
|
|
|
|
|
|
20997
|
|
|
|
|
|
|
int cid, csize; |
20998
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
20999
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
21000
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
21001
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
21002
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
21003
|
|
|
|
|
|
|
|
21004
|
|
|
|
|
|
|
} |
21005
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
21006
|
|
|
|
|
|
|
} |
21007
|
|
|
|
|
|
|
} |
21008
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
21009
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
21010
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: { |
21011
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21012
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
21013
|
|
|
|
|
|
|
|
21014
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21015
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
21016
|
|
|
|
|
|
|
|
21017
|
|
|
|
|
|
|
|
21018
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
21019
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
21020
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
21021
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
21022
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
21023
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
21024
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
21025
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
21026
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
21027
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
21028
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
21029
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
21030
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
21031
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
21032
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
21033
|
0
|
|
|
|
|
|
__tind2++ |
21034
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
21035
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
21036
|
|
|
|
|
|
|
) |
21037
|
|
|
|
|
|
|
{ |
21038
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
21039
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
21040
|
0
|
|
|
|
|
|
__tind1++ |
21041
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
21042
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
21043
|
|
|
|
|
|
|
) |
21044
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
21045
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
21046
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
21047
|
|
|
|
|
|
|
|
21048
|
|
|
|
|
|
|
|
21049
|
|
|
|
|
|
|
int cid, csize; |
21050
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
21051
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
21052
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
21053
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
21054
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
21055
|
|
|
|
|
|
|
|
21056
|
|
|
|
|
|
|
} |
21057
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
21058
|
|
|
|
|
|
|
} |
21059
|
|
|
|
|
|
|
} |
21060
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
21061
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
21062
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: { |
21063
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21064
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
21065
|
|
|
|
|
|
|
|
21066
|
0
|
0
|
|
|
|
|
PDL_Byte * eltmask_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21067
|
0
|
|
|
|
|
|
PDL_Byte * eltmask_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
21068
|
|
|
|
|
|
|
|
21069
|
|
|
|
|
|
|
|
21070
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
21071
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
21072
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
21073
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
21074
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
21075
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
21076
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
21077
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
21078
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
21079
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
21080
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
21081
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[0]; |
21082
|
0
|
|
|
|
|
|
eltmask_datap += __offsp[1]; |
21083
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
21084
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
21085
|
0
|
|
|
|
|
|
__tind2++ |
21086
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
21087
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
21088
|
|
|
|
|
|
|
) |
21089
|
|
|
|
|
|
|
{ |
21090
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
21091
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
21092
|
0
|
|
|
|
|
|
__tind1++ |
21093
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_0 |
21094
|
0
|
|
|
|
|
|
,eltmask_datap += __tinc0_1 |
21095
|
|
|
|
|
|
|
) |
21096
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_clusterids_n = __privtrans->__inc_clusterids_n; |
21097
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_k = __privtrans->__inc_eltmask_k; |
21098
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltmask_n = __privtrans->__inc_eltmask_n; |
21099
|
|
|
|
|
|
|
|
21100
|
|
|
|
|
|
|
|
21101
|
|
|
|
|
|
|
int cid, csize; |
21102
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
21103
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
21104
|
0
|
0
|
|
|
|
|
cid = (clusterids_datap)[0+(__inc_clusterids_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
21105
|
0
|
0
|
|
|
|
|
(eltmask_datap)[0+(__inc_eltmask_k*PP_INDTERM(__privtrans->__k_size, cid))+(__inc_eltmask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 1; |
|
|
0
|
|
|
|
|
|
21106
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
21107
|
|
|
|
|
|
|
|
21108
|
|
|
|
|
|
|
} |
21109
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
21110
|
|
|
|
|
|
|
} |
21111
|
|
|
|
|
|
|
} |
21112
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
21113
|
0
|
|
|
|
|
|
eltmask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
21114
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
21115
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
21116
|
|
|
|
|
|
|
} |
21117
|
|
|
|
|
|
|
} |
21118
|
|
|
|
|
|
|
} |
21119
|
|
|
|
|
|
|
|
21120
|
|
|
|
|
|
|
|
21121
|
|
|
|
|
|
|
|
21122
|
|
|
|
|
|
|
|
21123
|
0
|
|
|
|
|
|
void pdl_clusterelementmask_free(pdl_trans *__tr ) { |
21124
|
|
|
|
|
|
|
int __dim; |
21125
|
0
|
|
|
|
|
|
pdl_clusterelementmask_struct *__privtrans = (pdl_clusterelementmask_struct *) __tr; |
21126
|
|
|
|
|
|
|
|
21127
|
|
|
|
|
|
|
{ |
21128
|
|
|
|
|
|
|
|
21129
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
21130
|
|
|
|
|
|
|
|
21131
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
21132
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
21133
|
|
|
|
|
|
|
;;;;;; |
21134
|
|
|
|
|
|
|
} |
21135
|
|
|
|
|
|
|
|
21136
|
|
|
|
|
|
|
} |
21137
|
0
|
|
|
|
|
|
} |
21138
|
|
|
|
|
|
|
|
21139
|
|
|
|
|
|
|
|
21140
|
|
|
|
|
|
|
|
21141
|
|
|
|
|
|
|
|
21142
|
|
|
|
|
|
|
static char pdl_clusterelementmask_vtable_flags[] = |
21143
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
21144
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterelementmask_vtable = { |
21145
|
|
|
|
|
|
|
0,0, 1, 2, pdl_clusterelementmask_vtable_flags, |
21146
|
|
|
|
|
|
|
pdl_clusterelementmask_redodims, pdl_clusterelementmask_readdata, NULL, |
21147
|
|
|
|
|
|
|
pdl_clusterelementmask_free,NULL,NULL,pdl_clusterelementmask_copy, |
21148
|
|
|
|
|
|
|
sizeof(pdl_clusterelementmask_struct),"pdl_clusterelementmask_vtable" |
21149
|
|
|
|
|
|
|
}; |
21150
|
|
|
|
|
|
|
|
21151
|
|
|
|
|
|
|
typedef struct pdl_clusterdistancematrix_struct { |
21152
|
|
|
|
|
|
|
PDL_TRANS_START(7); |
21153
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_rowids_nr;PDL_Indx __inc_clustersizes_k;PDL_Indx __inc_eltids_mcsize;PDL_Indx __inc_eltids_k;PDL_Indx __inc_dist_k;PDL_Indx __inc_dist_nr;PDL_Indx __nr_size;PDL_Indx __n_size;PDL_Indx __k_size;PDL_Indx __mcsize_size;PDL_Indx __d_size; |
21154
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
21155
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
21156
|
|
|
|
|
|
|
} pdl_clusterdistancematrix_struct; |
21157
|
|
|
|
|
|
|
|
21158
|
5
|
|
|
|
|
|
void pdl_clusterdistancematrix_redodims(pdl_trans *__tr ) { |
21159
|
|
|
|
|
|
|
int __dim; |
21160
|
5
|
|
|
|
|
|
pdl_clusterdistancematrix_struct *__privtrans = (pdl_clusterdistancematrix_struct *) __tr; |
21161
|
|
|
|
|
|
|
|
21162
|
|
|
|
|
|
|
{ |
21163
|
|
|
|
|
|
|
PDL_Indx __creating[7]; |
21164
|
5
|
|
|
|
|
|
__privtrans->__nr_size = -1; |
21165
|
5
|
|
|
|
|
|
__privtrans->__n_size = -1; |
21166
|
5
|
|
|
|
|
|
__privtrans->__k_size = -1; |
21167
|
5
|
|
|
|
|
|
__privtrans->__mcsize_size = -1; |
21168
|
5
|
|
|
|
|
|
__privtrans->__d_size = -1; |
21169
|
5
|
|
|
|
|
|
__creating[0] = 0; |
21170
|
5
|
|
|
|
|
|
__creating[1] = 0; |
21171
|
5
|
|
|
|
|
|
__creating[2] = 0; |
21172
|
5
|
|
|
|
|
|
__creating[3] = 0; |
21173
|
5
|
|
|
|
|
|
__creating[4] = 0; |
21174
|
5
|
|
|
|
|
|
__creating[5] = 0; |
21175
|
5
|
50
|
|
|
|
|
__creating[6] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[6]); |
|
|
0
|
|
|
|
|
|
21176
|
|
|
|
|
|
|
{ |
21177
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
21178
|
|
|
|
|
|
|
|
21179
|
5
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
21180
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
21181
|
5
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21182
|
5
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21183
|
|
|
|
|
|
|
|
21184
|
5
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21185
|
5
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21186
|
|
|
|
|
|
|
|
21187
|
5
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21188
|
5
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21189
|
|
|
|
|
|
|
|
21190
|
5
|
50
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21191
|
5
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21192
|
|
|
|
|
|
|
|
21193
|
5
|
50
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21194
|
5
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21195
|
|
|
|
|
|
|
|
21196
|
5
|
50
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21197
|
5
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21198
|
|
|
|
|
|
|
|
21199
|
5
|
50
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21200
|
5
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21201
|
|
|
|
|
|
|
|
21202
|
5
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21203
|
5
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21204
|
5
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21205
|
5
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21206
|
5
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21207
|
5
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21208
|
5
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21209
|
5
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21210
|
5
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21211
|
5
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21212
|
5
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21213
|
|
|
|
|
|
|
|
21214
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21215
|
5
|
|
|
|
|
|
} } break; case PDL_S: { |
21216
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21217
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21218
|
|
|
|
|
|
|
|
21219
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21220
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21221
|
|
|
|
|
|
|
|
21222
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21223
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21224
|
|
|
|
|
|
|
|
21225
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21226
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21227
|
|
|
|
|
|
|
|
21228
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21229
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21230
|
|
|
|
|
|
|
|
21231
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21232
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21233
|
|
|
|
|
|
|
|
21234
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21235
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21236
|
|
|
|
|
|
|
|
21237
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21238
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21239
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21240
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21241
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21242
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21243
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21244
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21245
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21246
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21247
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21248
|
|
|
|
|
|
|
|
21249
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21250
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
21251
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21252
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21253
|
|
|
|
|
|
|
|
21254
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21255
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21256
|
|
|
|
|
|
|
|
21257
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21258
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21259
|
|
|
|
|
|
|
|
21260
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21261
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21262
|
|
|
|
|
|
|
|
21263
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21264
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21265
|
|
|
|
|
|
|
|
21266
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21267
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21268
|
|
|
|
|
|
|
|
21269
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21270
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21271
|
|
|
|
|
|
|
|
21272
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21273
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21274
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21275
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21276
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21277
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21278
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21279
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21280
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21281
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21282
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21283
|
|
|
|
|
|
|
|
21284
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21285
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
21286
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21287
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21288
|
|
|
|
|
|
|
|
21289
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21290
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21291
|
|
|
|
|
|
|
|
21292
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21293
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21294
|
|
|
|
|
|
|
|
21295
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21296
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21297
|
|
|
|
|
|
|
|
21298
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21299
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21300
|
|
|
|
|
|
|
|
21301
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21302
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21303
|
|
|
|
|
|
|
|
21304
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21305
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21306
|
|
|
|
|
|
|
|
21307
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21308
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21309
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21310
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21311
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21312
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21313
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21314
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21315
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21316
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21317
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21318
|
|
|
|
|
|
|
|
21319
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21320
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
21321
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21322
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21323
|
|
|
|
|
|
|
|
21324
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21325
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21326
|
|
|
|
|
|
|
|
21327
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21328
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21329
|
|
|
|
|
|
|
|
21330
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21331
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21332
|
|
|
|
|
|
|
|
21333
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21334
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21335
|
|
|
|
|
|
|
|
21336
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21337
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21338
|
|
|
|
|
|
|
|
21339
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21340
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21341
|
|
|
|
|
|
|
|
21342
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21344
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21345
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21346
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21347
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21348
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21349
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21350
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21351
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21352
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21353
|
|
|
|
|
|
|
|
21354
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21355
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
21356
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21357
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21358
|
|
|
|
|
|
|
|
21359
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21360
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21361
|
|
|
|
|
|
|
|
21362
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21363
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21364
|
|
|
|
|
|
|
|
21365
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21366
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21367
|
|
|
|
|
|
|
|
21368
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21369
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21370
|
|
|
|
|
|
|
|
21371
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21372
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21373
|
|
|
|
|
|
|
|
21374
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21375
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21376
|
|
|
|
|
|
|
|
21377
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21378
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21379
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21380
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21381
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21382
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21383
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21384
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21385
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21386
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21387
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21388
|
|
|
|
|
|
|
|
21389
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21390
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
21391
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21392
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21393
|
|
|
|
|
|
|
|
21394
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21395
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21396
|
|
|
|
|
|
|
|
21397
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21398
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21399
|
|
|
|
|
|
|
|
21400
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21401
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21402
|
|
|
|
|
|
|
|
21403
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21404
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21405
|
|
|
|
|
|
|
|
21406
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21407
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21408
|
|
|
|
|
|
|
|
21409
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21410
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21411
|
|
|
|
|
|
|
|
21412
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21413
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21414
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21415
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21416
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21417
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21418
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21419
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21420
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21421
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21422
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21423
|
|
|
|
|
|
|
|
21424
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21425
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
21426
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21427
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21428
|
|
|
|
|
|
|
|
21429
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21430
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21431
|
|
|
|
|
|
|
|
21432
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21433
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21434
|
|
|
|
|
|
|
|
21435
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21436
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21437
|
|
|
|
|
|
|
|
21438
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21439
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21440
|
|
|
|
|
|
|
|
21441
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21442
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21443
|
|
|
|
|
|
|
|
21444
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21445
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21446
|
|
|
|
|
|
|
|
21447
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21448
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21449
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21450
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21451
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21452
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21453
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21454
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21455
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21456
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21457
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21458
|
|
|
|
|
|
|
|
21459
|
|
|
|
|
|
|
PDL_COMMENT("none") |
21460
|
0
|
|
|
|
|
|
} break;} |
21461
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
21462
|
|
|
|
|
|
|
} |
21463
|
|
|
|
|
|
|
} |
21464
|
|
|
|
|
|
|
{ |
21465
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","rowids","clustersizes","eltids","dist"}; |
21466
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,1,1,2,2}; |
21467
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterdistancematrix"; |
21468
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
21469
|
|
|
|
|
|
|
__funcname, __parnames, 7 |
21470
|
|
|
|
|
|
|
}; |
21471
|
|
|
|
|
|
|
|
21472
|
5
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
21473
|
|
|
|
|
|
|
__realdims,__creating,7, |
21474
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
21475
|
5
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
21476
|
|
|
|
|
|
|
0 ); |
21477
|
|
|
|
|
|
|
} |
21478
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
21479
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
21480
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
21481
|
|
|
|
|
|
|
} |
21482
|
5
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
21483
|
5
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
21484
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
21485
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
21486
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21487
|
|
|
|
|
|
|
} |
21488
|
|
|
|
|
|
|
} |
21489
|
5
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
21490
|
5
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
21491
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
21492
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
21493
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21494
|
|
|
|
|
|
|
} |
21495
|
|
|
|
|
|
|
} |
21496
|
5
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
21497
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
21498
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
21499
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
21500
|
|
|
|
|
|
|
} |
21501
|
5
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21502
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
21503
|
5
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
21504
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
21505
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21506
|
|
|
|
|
|
|
} |
21507
|
|
|
|
|
|
|
} |
21508
|
5
|
50
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21509
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
21510
|
5
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
21511
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
21512
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21513
|
|
|
|
|
|
|
} |
21514
|
|
|
|
|
|
|
} |
21515
|
5
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
21516
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
21517
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
21518
|
|
|
|
|
|
|
} |
21519
|
5
|
50
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21520
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
21521
|
5
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
21522
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
21523
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21524
|
|
|
|
|
|
|
} |
21525
|
|
|
|
|
|
|
} |
21526
|
5
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
21527
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
21528
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
21529
|
|
|
|
|
|
|
} |
21530
|
5
|
50
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nr_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
21531
|
5
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[3]))->dims[0]; |
21532
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nr_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
21533
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
21534
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21535
|
|
|
|
|
|
|
} |
21536
|
|
|
|
|
|
|
} |
21537
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 1) { |
21538
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
21539
|
|
|
|
|
|
|
} |
21540
|
5
|
50
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
21541
|
5
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[4]))->dims[0]; |
21542
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
21543
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
21544
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21545
|
|
|
|
|
|
|
} |
21546
|
|
|
|
|
|
|
} |
21547
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 2) { |
21548
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__mcsize_size <= 1) __privtrans->__mcsize_size = 1; |
|
|
0
|
|
|
|
|
|
21549
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
21550
|
|
|
|
|
|
|
} |
21551
|
5
|
50
|
|
|
|
|
if(__privtrans->__mcsize_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__mcsize_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
21552
|
5
|
|
|
|
|
|
__privtrans->__mcsize_size = ((__privtrans->pdls[5]))->dims[0]; |
21553
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__mcsize_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
21554
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
21555
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21556
|
|
|
|
|
|
|
} |
21557
|
|
|
|
|
|
|
} |
21558
|
5
|
50
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[5]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21559
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[5]))->dims[1]; |
21560
|
5
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[5]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
21561
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[1] != 1) { |
21562
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21563
|
|
|
|
|
|
|
} |
21564
|
|
|
|
|
|
|
} |
21565
|
5
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[5]))); |
21566
|
5
|
50
|
|
|
|
|
if(!__creating[6]) { |
21567
|
5
|
50
|
|
|
|
|
if(((__privtrans->pdls[6]))->ndims < 2) { |
21568
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[6]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
21569
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[6]))->ndims < 2 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
21570
|
|
|
|
|
|
|
} |
21571
|
5
|
50
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21572
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[6]))->dims[0]; |
21573
|
5
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[6]))->dims[0]) { |
|
|
50
|
|
|
|
|
|
21574
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->dims[0] != 1) { |
21575
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21576
|
|
|
|
|
|
|
} |
21577
|
|
|
|
|
|
|
} |
21578
|
5
|
50
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[6]))->ndims > 1 && __privtrans->__nr_size == 1)) { |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21579
|
0
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[6]))->dims[1]; |
21580
|
5
|
50
|
|
|
|
|
} else if(((__privtrans->pdls[6]))->ndims > 1 && __privtrans->__nr_size != ((__privtrans->pdls[6]))->dims[1]) { |
|
|
50
|
|
|
|
|
|
21581
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->dims[1] != 1) { |
21582
|
5
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrix:" "Wrong dims\n"); |
21583
|
|
|
|
|
|
|
} |
21584
|
|
|
|
|
|
|
} |
21585
|
|
|
|
|
|
|
} else { |
21586
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size;dims[1] = __privtrans->__nr_size; |
21587
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,6,dims,0); |
21588
|
|
|
|
|
|
|
} |
21589
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
21590
|
5
|
|
|
|
|
|
void *hdrp = NULL; |
21591
|
5
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
21592
|
5
|
|
|
|
|
|
SV *hdr_copy = NULL; |
21593
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21594
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
21595
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
21596
|
|
|
|
|
|
|
) { |
21597
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
21598
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
21599
|
|
|
|
|
|
|
} |
21600
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21601
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
21602
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
21603
|
|
|
|
|
|
|
) { |
21604
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
21605
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
21606
|
|
|
|
|
|
|
} |
21607
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21608
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
21609
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
21610
|
|
|
|
|
|
|
) { |
21611
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
21612
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
21613
|
|
|
|
|
|
|
} |
21614
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21615
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
21616
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
21617
|
|
|
|
|
|
|
) { |
21618
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
21619
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
21620
|
|
|
|
|
|
|
} |
21621
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21622
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
21623
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
21624
|
|
|
|
|
|
|
) { |
21625
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
21626
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
21627
|
|
|
|
|
|
|
} |
21628
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21629
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
21630
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
21631
|
|
|
|
|
|
|
) { |
21632
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
21633
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
21634
|
|
|
|
|
|
|
} |
21635
|
5
|
50
|
|
|
|
|
if(!hdrp && |
|
|
50
|
|
|
|
|
|
21636
|
5
|
50
|
|
|
|
|
!__creating[6] && |
21637
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
21638
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
21639
|
|
|
|
|
|
|
) { |
21640
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
21641
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
21642
|
|
|
|
|
|
|
} |
21643
|
5
|
50
|
|
|
|
|
if (hdrp) { |
21644
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
21645
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
21646
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
21647
|
|
|
|
|
|
|
int count; |
21648
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
21649
|
0
|
|
|
|
|
|
dSP; |
21650
|
0
|
|
|
|
|
|
ENTER ; |
21651
|
0
|
|
|
|
|
|
SAVETMPS ; |
21652
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
21653
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
21654
|
0
|
|
|
|
|
|
PUTBACK ; |
21655
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
21656
|
0
|
|
|
|
|
|
SPAGAIN ; |
21657
|
0
|
0
|
|
|
|
|
if(count != 1) |
21658
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
21659
|
|
|
|
|
|
|
|
21660
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
21661
|
|
|
|
|
|
|
|
21662
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
21663
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
21664
|
|
|
|
|
|
|
} |
21665
|
|
|
|
|
|
|
|
21666
|
0
|
0
|
|
|
|
|
FREETMPS ; |
21667
|
0
|
|
|
|
|
|
LEAVE ; |
21668
|
|
|
|
|
|
|
|
21669
|
|
|
|
|
|
|
|
21670
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
21671
|
|
|
|
|
|
|
|
21672
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[6]->hdrsv != hdrp ){ |
21673
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[6]->hdrsv && __privtrans->pdls[6]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
21674
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[6]->hdrsv ); |
21675
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
21676
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
21677
|
0
|
|
|
|
|
|
__privtrans->pdls[6]->hdrsv = hdr_copy; |
21678
|
|
|
|
|
|
|
} |
21679
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
21680
|
0
|
|
|
|
|
|
__privtrans->pdls[6]->state |= PDL_HDRCPY; |
21681
|
|
|
|
|
|
|
|
21682
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
21683
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
21684
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
21685
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
21686
|
5
|
50
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
21687
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
21688
|
5
|
50
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
21689
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
21690
|
5
|
50
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
21691
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
21692
|
5
|
50
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
21693
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
21694
|
5
|
50
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
21695
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
21696
|
5
|
50
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
21697
|
0
|
|
|
|
|
|
__privtrans->__inc_rowids_nr = 0; else |
21698
|
5
|
50
|
|
|
|
|
__privtrans->__inc_rowids_nr = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21699
|
0
|
|
|
|
|
|
__privtrans->__inc_clustersizes_k = 0; else |
21700
|
5
|
50
|
|
|
|
|
__privtrans->__inc_clustersizes_k = PDL_REPRINC(__privtrans->pdls[4],0);if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21701
|
0
|
|
|
|
|
|
__privtrans->__inc_eltids_mcsize = 0; else |
21702
|
5
|
50
|
|
|
|
|
__privtrans->__inc_eltids_mcsize = __privtrans->pdls[5]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 1 || __privtrans->pdls[5]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
21703
|
0
|
|
|
|
|
|
__privtrans->__inc_eltids_k = 0; else |
21704
|
5
|
50
|
|
|
|
|
__privtrans->__inc_eltids_k = __privtrans->pdls[5]->dimincs[1];if(__privtrans->pdls[6]->ndims <= 0 || __privtrans->pdls[6]->dims[0] <= 1) |
|
|
50
|
|
|
|
|
|
21705
|
0
|
|
|
|
|
|
__privtrans->__inc_dist_k = 0; else |
21706
|
5
|
50
|
|
|
|
|
__privtrans->__inc_dist_k = PDL_REPRINC(__privtrans->pdls[6],0);if(__privtrans->pdls[6]->ndims <= 1 || __privtrans->pdls[6]->dims[1] <= 1) |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
21707
|
0
|
|
|
|
|
|
__privtrans->__inc_dist_nr = 0; else |
21708
|
5
|
50
|
|
|
|
|
__privtrans->__inc_dist_nr = PDL_REPRINC(__privtrans->pdls[6],1); __privtrans->__ddone = 1; |
21709
|
|
|
|
|
|
|
} |
21710
|
5
|
|
|
|
|
|
} |
21711
|
|
|
|
|
|
|
|
21712
|
|
|
|
|
|
|
|
21713
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterdistancematrix_copy(pdl_trans *__tr ) { |
21714
|
|
|
|
|
|
|
int __dim; |
21715
|
0
|
|
|
|
|
|
pdl_clusterdistancematrix_struct *__privtrans = (pdl_clusterdistancematrix_struct *) __tr; |
21716
|
|
|
|
|
|
|
|
21717
|
|
|
|
|
|
|
{ |
21718
|
0
|
|
|
|
|
|
pdl_clusterdistancematrix_struct *__copy = malloc(sizeof(pdl_clusterdistancematrix_struct)); |
21719
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
21720
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
21721
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
21722
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
21723
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
21724
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
21725
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
21726
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
21727
|
|
|
|
|
|
|
{int i; |
21728
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
21729
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
21730
|
|
|
|
|
|
|
} |
21731
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
21732
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
21733
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_rowids_nr=__copy->__inc_rowids_nr;__privtrans->__inc_clustersizes_k=__copy->__inc_clustersizes_k;__privtrans->__inc_eltids_mcsize=__copy->__inc_eltids_mcsize;__privtrans->__inc_eltids_k=__copy->__inc_eltids_k;__privtrans->__inc_dist_k=__copy->__inc_dist_k;__privtrans->__inc_dist_nr=__copy->__inc_dist_nr;__copy->__nr_size=__privtrans->__nr_size;__copy->__n_size=__privtrans->__n_size;__copy->__k_size=__privtrans->__k_size;__copy->__mcsize_size=__privtrans->__mcsize_size;__copy->__d_size=__privtrans->__d_size; |
21734
|
|
|
|
|
|
|
} |
21735
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
21736
|
|
|
|
|
|
|
} |
21737
|
|
|
|
|
|
|
} |
21738
|
|
|
|
|
|
|
|
21739
|
|
|
|
|
|
|
|
21740
|
5
|
|
|
|
|
|
void pdl_clusterdistancematrix_readdata(pdl_trans *__tr ) { |
21741
|
|
|
|
|
|
|
int __dim; |
21742
|
5
|
|
|
|
|
|
pdl_clusterdistancematrix_struct *__privtrans = (pdl_clusterdistancematrix_struct *) __tr; |
21743
|
|
|
|
|
|
|
|
21744
|
|
|
|
|
|
|
{ |
21745
|
5
|
|
|
|
|
|
{register PDL_Indx __k_size = __privtrans->__k_size; |
21746
|
5
|
|
|
|
|
|
register PDL_Indx __nr_size = __privtrans->__nr_size; |
21747
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
21748
|
|
|
|
|
|
|
|
21749
|
5
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
21750
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
21751
|
5
|
50
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21752
|
5
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21753
|
|
|
|
|
|
|
|
21754
|
5
|
50
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21755
|
5
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21756
|
|
|
|
|
|
|
|
21757
|
5
|
50
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21758
|
5
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21759
|
|
|
|
|
|
|
|
21760
|
5
|
50
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21761
|
5
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21762
|
|
|
|
|
|
|
|
21763
|
5
|
50
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21764
|
5
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21765
|
|
|
|
|
|
|
|
21766
|
5
|
50
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21767
|
5
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21768
|
|
|
|
|
|
|
|
21769
|
5
|
50
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21770
|
5
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21771
|
|
|
|
|
|
|
|
21772
|
5
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21773
|
5
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21774
|
5
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21775
|
5
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21776
|
5
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21777
|
5
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21778
|
5
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21779
|
5
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21780
|
5
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21781
|
5
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21782
|
5
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21783
|
|
|
|
|
|
|
|
21784
|
|
|
|
|
|
|
|
21785
|
5
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
21786
|
5
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
21787
|
5
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
21788
|
5
|
|
|
|
|
|
int transpose=0; |
21789
|
|
|
|
|
|
|
int rowid; |
21790
|
|
|
|
|
|
|
|
21791
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
21792
|
5
|
50
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
21793
|
5
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
21794
|
5
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
21795
|
5
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
21796
|
5
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
21797
|
5
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
21798
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
21799
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
21800
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
21801
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
21802
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
21803
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
21804
|
5
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
21805
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
21806
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
21807
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
21808
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
21809
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
21810
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
21811
|
5
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
21812
|
5
|
|
|
|
|
|
data_datap += __offsp[0]; |
21813
|
5
|
|
|
|
|
|
mask_datap += __offsp[1]; |
21814
|
5
|
|
|
|
|
|
weight_datap += __offsp[2]; |
21815
|
5
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
21816
|
5
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
21817
|
5
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
21818
|
5
|
|
|
|
|
|
dist_datap += __offsp[6]; |
21819
|
10
|
100
|
|
|
|
|
for( __tind2 = 0 ; |
21820
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
21821
|
5
|
|
|
|
|
|
__tind2++ |
21822
|
5
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
21823
|
5
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
21824
|
5
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
21825
|
5
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
21826
|
5
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
21827
|
5
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
21828
|
5
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
21829
|
|
|
|
|
|
|
) |
21830
|
|
|
|
|
|
|
{ |
21831
|
10
|
100
|
|
|
|
|
for( __tind1 = 0 ; |
21832
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
21833
|
5
|
|
|
|
|
|
__tind1++ |
21834
|
5
|
|
|
|
|
|
,data_datap += __tinc0_0 |
21835
|
5
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
21836
|
5
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
21837
|
5
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
21838
|
5
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
21839
|
5
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
21840
|
5
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
21841
|
|
|
|
|
|
|
) |
21842
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
21843
|
5
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
21844
|
5
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
21845
|
5
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
21846
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
21847
|
25
|
100
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
21848
|
20
|
50
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
21849
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
21850
|
60
|
100
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
21851
|
80
|
50
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
50
|
|
|
|
|
|
21852
|
40
|
50
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
21853
|
40
|
|
|
|
|
|
&rowid, eltidspp[k], |
21854
|
80
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
21855
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
21856
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
21857
|
|
|
|
|
|
|
|
21858
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
21859
|
|
|
|
|
|
|
} |
21860
|
|
|
|
|
|
|
} |
21861
|
5
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
21862
|
5
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
21863
|
5
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
21864
|
5
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
21865
|
5
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
21866
|
5
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
21867
|
5
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
21868
|
5
|
50
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
21869
|
|
|
|
|
|
|
/*-- cleanup --*/ |
21870
|
5
|
50
|
|
|
|
|
if (datapp) free(datapp); |
21871
|
5
|
50
|
|
|
|
|
if (maskpp) free(maskpp); |
21872
|
5
|
50
|
|
|
|
|
if (eltidspp) free(eltidspp); |
21873
|
|
|
|
|
|
|
|
21874
|
5
|
|
|
|
|
|
} } break; case PDL_S: { |
21875
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
21876
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
21877
|
|
|
|
|
|
|
|
21878
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
21879
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
21880
|
|
|
|
|
|
|
|
21881
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
21882
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
21883
|
|
|
|
|
|
|
|
21884
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
21885
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
21886
|
|
|
|
|
|
|
|
21887
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
21888
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
21889
|
|
|
|
|
|
|
|
21890
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
21891
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
21892
|
|
|
|
|
|
|
|
21893
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
21894
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
21895
|
|
|
|
|
|
|
|
21896
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
21897
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
21898
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
21899
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
21900
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
21901
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
21902
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
21903
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
21904
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
21905
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
21906
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
21907
|
|
|
|
|
|
|
|
21908
|
|
|
|
|
|
|
|
21909
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
21910
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
21911
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
21912
|
0
|
|
|
|
|
|
int transpose=0; |
21913
|
|
|
|
|
|
|
int rowid; |
21914
|
|
|
|
|
|
|
|
21915
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
21916
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
21917
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
21918
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
21919
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
21920
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
21921
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
21922
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
21923
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
21924
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
21925
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
21926
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
21927
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
21928
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
21929
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
21930
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
21931
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
21932
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
21933
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
21934
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
21935
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
21936
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
21937
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
21938
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
21939
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
21940
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
21941
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
21942
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
21943
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
21944
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
21945
|
0
|
|
|
|
|
|
__tind2++ |
21946
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
21947
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
21948
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
21949
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
21950
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
21951
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
21952
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
21953
|
|
|
|
|
|
|
) |
21954
|
|
|
|
|
|
|
{ |
21955
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
21956
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
21957
|
0
|
|
|
|
|
|
__tind1++ |
21958
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
21959
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
21960
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
21961
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
21962
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
21963
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
21964
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
21965
|
|
|
|
|
|
|
) |
21966
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
21967
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
21968
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
21969
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
21970
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
21971
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
21972
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
21973
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
21974
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
21975
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
21976
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
21977
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
21978
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
21979
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
21980
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
21981
|
|
|
|
|
|
|
|
21982
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
21983
|
|
|
|
|
|
|
} |
21984
|
|
|
|
|
|
|
} |
21985
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
21986
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
21987
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
21988
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
21989
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
21990
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
21991
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
21992
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
21993
|
|
|
|
|
|
|
/*-- cleanup --*/ |
21994
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
21995
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
21996
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
21997
|
|
|
|
|
|
|
|
21998
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
21999
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22000
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22001
|
|
|
|
|
|
|
|
22002
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22003
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22004
|
|
|
|
|
|
|
|
22005
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22006
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22007
|
|
|
|
|
|
|
|
22008
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22009
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22010
|
|
|
|
|
|
|
|
22011
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22012
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22013
|
|
|
|
|
|
|
|
22014
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22015
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22016
|
|
|
|
|
|
|
|
22017
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22018
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
22019
|
|
|
|
|
|
|
|
22020
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
22021
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22022
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
22023
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
22024
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
22025
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
22026
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
22027
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22028
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22029
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22030
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22031
|
|
|
|
|
|
|
|
22032
|
|
|
|
|
|
|
|
22033
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
22034
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
22035
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
22036
|
0
|
|
|
|
|
|
int transpose=0; |
22037
|
|
|
|
|
|
|
int rowid; |
22038
|
|
|
|
|
|
|
|
22039
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
22040
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
22041
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
22042
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
22043
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
22044
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
22045
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
22046
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
22047
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
22048
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
22049
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
22050
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
22051
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
22052
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
22053
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
22054
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
22055
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
22056
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
22057
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
22058
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
22059
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
22060
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
22061
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
22062
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
22063
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
22064
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
22065
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
22066
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
22067
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
22068
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
22069
|
0
|
|
|
|
|
|
__tind2++ |
22070
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
22071
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
22072
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
22073
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
22074
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
22075
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
22076
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
22077
|
|
|
|
|
|
|
) |
22078
|
|
|
|
|
|
|
{ |
22079
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
22080
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
22081
|
0
|
|
|
|
|
|
__tind1++ |
22082
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
22083
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
22084
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
22085
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
22086
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
22087
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
22088
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
22089
|
|
|
|
|
|
|
) |
22090
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
22091
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
22092
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
22093
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
22094
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
22095
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
22096
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
22097
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
22098
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
22099
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
22100
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
22101
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
22102
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
22103
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
22104
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
22105
|
|
|
|
|
|
|
|
22106
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
22107
|
|
|
|
|
|
|
} |
22108
|
|
|
|
|
|
|
} |
22109
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
22110
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
22111
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
22112
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
22113
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
22114
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
22115
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
22116
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
22117
|
|
|
|
|
|
|
/*-- cleanup --*/ |
22118
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
22119
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
22120
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
22121
|
|
|
|
|
|
|
|
22122
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
22123
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22124
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22125
|
|
|
|
|
|
|
|
22126
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22127
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22128
|
|
|
|
|
|
|
|
22129
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22130
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22131
|
|
|
|
|
|
|
|
22132
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22133
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22134
|
|
|
|
|
|
|
|
22135
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22136
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22137
|
|
|
|
|
|
|
|
22138
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22139
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22140
|
|
|
|
|
|
|
|
22141
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22142
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
22143
|
|
|
|
|
|
|
|
22144
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
22145
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22146
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
22147
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
22148
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
22149
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
22150
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
22151
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22152
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22153
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22154
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22155
|
|
|
|
|
|
|
|
22156
|
|
|
|
|
|
|
|
22157
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
22158
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
22159
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
22160
|
0
|
|
|
|
|
|
int transpose=0; |
22161
|
|
|
|
|
|
|
int rowid; |
22162
|
|
|
|
|
|
|
|
22163
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
22164
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
22165
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
22166
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
22167
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
22168
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
22169
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
22170
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
22171
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
22172
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
22173
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
22174
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
22175
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
22176
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
22177
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
22178
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
22179
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
22180
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
22181
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
22182
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
22183
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
22184
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
22185
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
22186
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
22187
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
22188
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
22189
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
22190
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
22191
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
22192
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
22193
|
0
|
|
|
|
|
|
__tind2++ |
22194
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
22195
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
22196
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
22197
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
22198
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
22199
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
22200
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
22201
|
|
|
|
|
|
|
) |
22202
|
|
|
|
|
|
|
{ |
22203
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
22204
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
22205
|
0
|
|
|
|
|
|
__tind1++ |
22206
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
22207
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
22208
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
22209
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
22210
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
22211
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
22212
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
22213
|
|
|
|
|
|
|
) |
22214
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
22215
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
22216
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
22217
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
22218
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
22219
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
22220
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
22221
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
22222
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
22223
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
22224
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
22225
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
22226
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
22227
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
22228
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
22229
|
|
|
|
|
|
|
|
22230
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
22231
|
|
|
|
|
|
|
} |
22232
|
|
|
|
|
|
|
} |
22233
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
22234
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
22235
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
22236
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
22237
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
22238
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
22239
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
22240
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
22241
|
|
|
|
|
|
|
/*-- cleanup --*/ |
22242
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
22243
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
22244
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
22245
|
|
|
|
|
|
|
|
22246
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
22247
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22248
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22249
|
|
|
|
|
|
|
|
22250
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22251
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22252
|
|
|
|
|
|
|
|
22253
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22254
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22255
|
|
|
|
|
|
|
|
22256
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22257
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22258
|
|
|
|
|
|
|
|
22259
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22260
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22261
|
|
|
|
|
|
|
|
22262
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22263
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22264
|
|
|
|
|
|
|
|
22265
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22266
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
22267
|
|
|
|
|
|
|
|
22268
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
22269
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22270
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
22271
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
22272
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
22273
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
22274
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
22275
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22276
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22277
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22278
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22279
|
|
|
|
|
|
|
|
22280
|
|
|
|
|
|
|
|
22281
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
22282
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
22283
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
22284
|
0
|
|
|
|
|
|
int transpose=0; |
22285
|
|
|
|
|
|
|
int rowid; |
22286
|
|
|
|
|
|
|
|
22287
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
22288
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
22289
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
22290
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
22291
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
22292
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
22293
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
22294
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
22295
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
22296
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
22297
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
22298
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
22299
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
22300
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
22301
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
22302
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
22303
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
22304
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
22305
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
22306
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
22307
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
22308
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
22309
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
22310
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
22311
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
22312
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
22313
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
22314
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
22315
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
22316
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
22317
|
0
|
|
|
|
|
|
__tind2++ |
22318
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
22319
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
22320
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
22321
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
22322
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
22323
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
22324
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
22325
|
|
|
|
|
|
|
) |
22326
|
|
|
|
|
|
|
{ |
22327
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
22328
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
22329
|
0
|
|
|
|
|
|
__tind1++ |
22330
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
22331
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
22332
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
22333
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
22334
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
22335
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
22336
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
22337
|
|
|
|
|
|
|
) |
22338
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
22339
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
22340
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
22341
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
22342
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
22343
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
22344
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
22345
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
22346
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
22347
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
22348
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
22349
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
22350
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
22351
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
22352
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
22353
|
|
|
|
|
|
|
|
22354
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
22355
|
|
|
|
|
|
|
} |
22356
|
|
|
|
|
|
|
} |
22357
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
22358
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
22359
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
22360
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
22361
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
22362
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
22363
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
22364
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
22365
|
|
|
|
|
|
|
/*-- cleanup --*/ |
22366
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
22367
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
22368
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
22369
|
|
|
|
|
|
|
|
22370
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
22371
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22372
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22373
|
|
|
|
|
|
|
|
22374
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22375
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22376
|
|
|
|
|
|
|
|
22377
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22378
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22379
|
|
|
|
|
|
|
|
22380
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22381
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22382
|
|
|
|
|
|
|
|
22383
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22384
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22385
|
|
|
|
|
|
|
|
22386
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22387
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22388
|
|
|
|
|
|
|
|
22389
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22390
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
22391
|
|
|
|
|
|
|
|
22392
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
22393
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22394
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
22395
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
22396
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
22397
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
22398
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
22399
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22400
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22401
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22402
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22403
|
|
|
|
|
|
|
|
22404
|
|
|
|
|
|
|
|
22405
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
22406
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
22407
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
22408
|
0
|
|
|
|
|
|
int transpose=0; |
22409
|
|
|
|
|
|
|
int rowid; |
22410
|
|
|
|
|
|
|
|
22411
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
22412
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
22413
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
22414
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
22415
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
22416
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
22417
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
22418
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
22419
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
22420
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
22421
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
22422
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
22423
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
22424
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
22425
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
22426
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
22427
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
22428
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
22429
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
22430
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
22431
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
22432
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
22433
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
22434
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
22435
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
22436
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
22437
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
22438
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
22439
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
22440
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
22441
|
0
|
|
|
|
|
|
__tind2++ |
22442
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
22443
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
22444
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
22445
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
22446
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
22447
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
22448
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
22449
|
|
|
|
|
|
|
) |
22450
|
|
|
|
|
|
|
{ |
22451
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
22452
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
22453
|
0
|
|
|
|
|
|
__tind1++ |
22454
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
22455
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
22456
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
22457
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
22458
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
22459
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
22460
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
22461
|
|
|
|
|
|
|
) |
22462
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
22463
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
22464
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
22465
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
22466
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
22467
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
22468
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
22469
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
22470
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
22471
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
22472
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
22473
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
22474
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
22475
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
22476
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
22477
|
|
|
|
|
|
|
|
22478
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
22479
|
|
|
|
|
|
|
} |
22480
|
|
|
|
|
|
|
} |
22481
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
22482
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
22483
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
22484
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
22485
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
22486
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
22487
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
22488
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
22489
|
|
|
|
|
|
|
/*-- cleanup --*/ |
22490
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
22491
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
22492
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
22493
|
|
|
|
|
|
|
|
22494
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
22495
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22496
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22497
|
|
|
|
|
|
|
|
22498
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22499
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22500
|
|
|
|
|
|
|
|
22501
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22502
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22503
|
|
|
|
|
|
|
|
22504
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22505
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22506
|
|
|
|
|
|
|
|
22507
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22508
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22509
|
|
|
|
|
|
|
|
22510
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22511
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22512
|
|
|
|
|
|
|
|
22513
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22514
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
22515
|
|
|
|
|
|
|
|
22516
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
22517
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22518
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
22519
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
22520
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
22521
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
22522
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
22523
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22524
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22525
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22526
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22527
|
|
|
|
|
|
|
|
22528
|
|
|
|
|
|
|
|
22529
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
22530
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
22531
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
22532
|
0
|
|
|
|
|
|
int transpose=0; |
22533
|
|
|
|
|
|
|
int rowid; |
22534
|
|
|
|
|
|
|
|
22535
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
22536
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
22537
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
22538
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
22539
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
22540
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
22541
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
22542
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
22543
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
22544
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
22545
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
22546
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
22547
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
22548
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
22549
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
22550
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
22551
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
22552
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
22553
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
22554
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
22555
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
22556
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
22557
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
22558
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
22559
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
22560
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
22561
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
22562
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
22563
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
22564
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
22565
|
0
|
|
|
|
|
|
__tind2++ |
22566
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
22567
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
22568
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
22569
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
22570
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
22571
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
22572
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
22573
|
|
|
|
|
|
|
) |
22574
|
|
|
|
|
|
|
{ |
22575
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
22576
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
22577
|
0
|
|
|
|
|
|
__tind1++ |
22578
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
22579
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
22580
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
22581
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
22582
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
22583
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
22584
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
22585
|
|
|
|
|
|
|
) |
22586
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
22587
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
22588
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
22589
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
22590
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
22591
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
22592
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
22593
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
22594
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
22595
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
22596
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
22597
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
22598
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
22599
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
22600
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
22601
|
|
|
|
|
|
|
|
22602
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
22603
|
|
|
|
|
|
|
} |
22604
|
|
|
|
|
|
|
} |
22605
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
22606
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
22607
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
22608
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
22609
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
22610
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
22611
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
22612
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
22613
|
|
|
|
|
|
|
/*-- cleanup --*/ |
22614
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
22615
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
22616
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
22617
|
|
|
|
|
|
|
|
22618
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
22619
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22620
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22621
|
|
|
|
|
|
|
|
22622
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22623
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22624
|
|
|
|
|
|
|
|
22625
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22626
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22627
|
|
|
|
|
|
|
|
22628
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22629
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22630
|
|
|
|
|
|
|
|
22631
|
0
|
0
|
|
|
|
|
PDL_Long * clustersizes_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22632
|
0
|
|
|
|
|
|
PDL_Long * clustersizes_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22633
|
|
|
|
|
|
|
|
22634
|
0
|
0
|
|
|
|
|
PDL_Long * eltids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22635
|
0
|
|
|
|
|
|
PDL_Long * eltids_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22636
|
|
|
|
|
|
|
|
22637
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22638
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data)); |
22639
|
|
|
|
|
|
|
|
22640
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
22641
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22642
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k = __privtrans->__inc_dist_k; |
22643
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_nr = __privtrans->__inc_dist_nr; |
22644
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clustersizes_k = __privtrans->__inc_clustersizes_k; |
22645
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_mcsize = __privtrans->__inc_eltids_mcsize; |
22646
|
0
|
|
|
|
|
|
register PDL_Indx __inc_eltids_k = __privtrans->__inc_eltids_k; |
22647
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22648
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22649
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22650
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22651
|
|
|
|
|
|
|
|
22652
|
|
|
|
|
|
|
|
22653
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
22654
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
22655
|
0
|
|
|
|
|
|
int **eltidspp = (int **)pp_alloc(__privtrans->__k_size); |
22656
|
0
|
|
|
|
|
|
int transpose=0; |
22657
|
|
|
|
|
|
|
int rowid; |
22658
|
|
|
|
|
|
|
|
22659
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
22660
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
22661
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
22662
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
22663
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
22664
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
22665
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
22666
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
22667
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
22668
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
22669
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
22670
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
22671
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
22672
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
22673
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
22674
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
22675
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
22676
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
22677
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
22678
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
22679
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
22680
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
22681
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
22682
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
22683
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
22684
|
0
|
|
|
|
|
|
clustersizes_datap += __offsp[4]; |
22685
|
0
|
|
|
|
|
|
eltids_datap += __offsp[5]; |
22686
|
0
|
|
|
|
|
|
dist_datap += __offsp[6]; |
22687
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
22688
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
22689
|
0
|
|
|
|
|
|
__tind2++ |
22690
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
22691
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
22692
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
22693
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
22694
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
22695
|
0
|
|
|
|
|
|
,eltids_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
22696
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
22697
|
|
|
|
|
|
|
) |
22698
|
|
|
|
|
|
|
{ |
22699
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
22700
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
22701
|
0
|
|
|
|
|
|
__tind1++ |
22702
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
22703
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
22704
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
22705
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
22706
|
0
|
|
|
|
|
|
,clustersizes_datap += __tinc0_4 |
22707
|
0
|
|
|
|
|
|
,eltids_datap += __tinc0_5 |
22708
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_6 |
22709
|
|
|
|
|
|
|
) |
22710
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
22711
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
22712
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
22713
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__mcsize_size, eltids_datap, eltidspp); |
22714
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
22715
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
22716
|
0
|
0
|
|
|
|
|
rowid = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
22717
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
22718
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
22719
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_dist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
22720
|
0
|
0
|
|
|
|
|
1, (clustersizes_datap)[0+(__inc_clustersizes_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") , |
22721
|
0
|
|
|
|
|
|
&rowid, eltidspp[k], |
22722
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
22723
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
22724
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
22725
|
|
|
|
|
|
|
|
22726
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
22727
|
|
|
|
|
|
|
} |
22728
|
|
|
|
|
|
|
} |
22729
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
22730
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
22731
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
22732
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
22733
|
0
|
|
|
|
|
|
clustersizes_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
22734
|
0
|
|
|
|
|
|
eltids_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
22735
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
22736
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
22737
|
|
|
|
|
|
|
/*-- cleanup --*/ |
22738
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
22739
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
22740
|
0
|
0
|
|
|
|
|
if (eltidspp) free(eltidspp); |
22741
|
|
|
|
|
|
|
|
22742
|
0
|
|
|
|
|
|
} break;} |
22743
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
22744
|
|
|
|
|
|
|
} |
22745
|
|
|
|
|
|
|
} |
22746
|
|
|
|
|
|
|
} |
22747
|
|
|
|
|
|
|
|
22748
|
|
|
|
|
|
|
|
22749
|
|
|
|
|
|
|
|
22750
|
|
|
|
|
|
|
|
22751
|
5
|
|
|
|
|
|
void pdl_clusterdistancematrix_free(pdl_trans *__tr ) { |
22752
|
|
|
|
|
|
|
int __dim; |
22753
|
5
|
|
|
|
|
|
pdl_clusterdistancematrix_struct *__privtrans = (pdl_clusterdistancematrix_struct *) __tr; |
22754
|
|
|
|
|
|
|
|
22755
|
|
|
|
|
|
|
{ |
22756
|
|
|
|
|
|
|
|
22757
|
5
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
22758
|
5
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
22759
|
5
|
50
|
|
|
|
|
if(__privtrans->__ddone) { |
22760
|
5
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
22761
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;; |
22762
|
|
|
|
|
|
|
} |
22763
|
|
|
|
|
|
|
|
22764
|
|
|
|
|
|
|
} |
22765
|
5
|
|
|
|
|
|
} |
22766
|
|
|
|
|
|
|
|
22767
|
|
|
|
|
|
|
|
22768
|
|
|
|
|
|
|
|
22769
|
|
|
|
|
|
|
|
22770
|
|
|
|
|
|
|
static char pdl_clusterdistancematrix_vtable_flags[] = |
22771
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK}; |
22772
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterdistancematrix_vtable = { |
22773
|
|
|
|
|
|
|
0,0, 6, 7, pdl_clusterdistancematrix_vtable_flags, |
22774
|
|
|
|
|
|
|
pdl_clusterdistancematrix_redodims, pdl_clusterdistancematrix_readdata, NULL, |
22775
|
|
|
|
|
|
|
pdl_clusterdistancematrix_free,NULL,NULL,pdl_clusterdistancematrix_copy, |
22776
|
|
|
|
|
|
|
sizeof(pdl_clusterdistancematrix_struct),"pdl_clusterdistancematrix_vtable" |
22777
|
|
|
|
|
|
|
}; |
22778
|
|
|
|
|
|
|
|
22779
|
|
|
|
|
|
|
typedef struct pdl_clusterdistancematrixenc_struct { |
22780
|
|
|
|
|
|
|
PDL_TRANS_START(8); |
22781
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_clens1_k1;PDL_Indx __inc_crowids1_nc1;PDL_Indx __inc_clens2_k2;PDL_Indx __inc_crowids2_nc2;PDL_Indx __inc_dist_k1;PDL_Indx __inc_dist_k2;PDL_Indx __n_size;PDL_Indx __k1_size;PDL_Indx __k2_size;PDL_Indx __d_size;PDL_Indx __nc1_size;PDL_Indx __nc2_size; |
22782
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
22783
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
22784
|
|
|
|
|
|
|
} pdl_clusterdistancematrixenc_struct; |
22785
|
|
|
|
|
|
|
|
22786
|
0
|
|
|
|
|
|
void pdl_clusterdistancematrixenc_redodims(pdl_trans *__tr ) { |
22787
|
|
|
|
|
|
|
int __dim; |
22788
|
0
|
|
|
|
|
|
pdl_clusterdistancematrixenc_struct *__privtrans = (pdl_clusterdistancematrixenc_struct *) __tr; |
22789
|
|
|
|
|
|
|
|
22790
|
|
|
|
|
|
|
{ |
22791
|
|
|
|
|
|
|
PDL_Indx __creating[8]; |
22792
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
22793
|
0
|
|
|
|
|
|
__privtrans->__k1_size = -1; |
22794
|
0
|
|
|
|
|
|
__privtrans->__k2_size = -1; |
22795
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
22796
|
0
|
|
|
|
|
|
__privtrans->__nc1_size = -1; |
22797
|
0
|
|
|
|
|
|
__privtrans->__nc2_size = -1; |
22798
|
0
|
|
|
|
|
|
__creating[0] = 0; |
22799
|
0
|
|
|
|
|
|
__creating[1] = 0; |
22800
|
0
|
|
|
|
|
|
__creating[2] = 0; |
22801
|
0
|
|
|
|
|
|
__creating[3] = 0; |
22802
|
0
|
|
|
|
|
|
__creating[4] = 0; |
22803
|
0
|
|
|
|
|
|
__creating[5] = 0; |
22804
|
0
|
|
|
|
|
|
__creating[6] = 0; |
22805
|
0
|
0
|
|
|
|
|
__creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]); |
|
|
0
|
|
|
|
|
|
22806
|
|
|
|
|
|
|
{ |
22807
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
22808
|
|
|
|
|
|
|
|
22809
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
22810
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
22811
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22812
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22813
|
|
|
|
|
|
|
|
22814
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22815
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22816
|
|
|
|
|
|
|
|
22817
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22818
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22819
|
|
|
|
|
|
|
|
22820
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22821
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22822
|
|
|
|
|
|
|
|
22823
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22824
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22825
|
|
|
|
|
|
|
|
22826
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22827
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22828
|
|
|
|
|
|
|
|
22829
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22830
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
22831
|
|
|
|
|
|
|
|
22832
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
22833
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
22834
|
|
|
|
|
|
|
|
22835
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
22836
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
22837
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
22838
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22839
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22840
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22841
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22842
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22843
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
22844
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
22845
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
22846
|
|
|
|
|
|
|
|
22847
|
|
|
|
|
|
|
PDL_COMMENT("none") |
22848
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
22849
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22850
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22851
|
|
|
|
|
|
|
|
22852
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22853
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22854
|
|
|
|
|
|
|
|
22855
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22856
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22857
|
|
|
|
|
|
|
|
22858
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22859
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22860
|
|
|
|
|
|
|
|
22861
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22862
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22863
|
|
|
|
|
|
|
|
22864
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22865
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22866
|
|
|
|
|
|
|
|
22867
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22868
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
22869
|
|
|
|
|
|
|
|
22870
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
22871
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
22872
|
|
|
|
|
|
|
|
22873
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
22874
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
22875
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
22876
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22877
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22878
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22879
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22880
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22881
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
22882
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
22883
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
22884
|
|
|
|
|
|
|
|
22885
|
|
|
|
|
|
|
PDL_COMMENT("none") |
22886
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
22887
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22888
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22889
|
|
|
|
|
|
|
|
22890
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22891
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22892
|
|
|
|
|
|
|
|
22893
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22894
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22895
|
|
|
|
|
|
|
|
22896
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22897
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22898
|
|
|
|
|
|
|
|
22899
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22900
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22901
|
|
|
|
|
|
|
|
22902
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22903
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22904
|
|
|
|
|
|
|
|
22905
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22906
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
22907
|
|
|
|
|
|
|
|
22908
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
22909
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
22910
|
|
|
|
|
|
|
|
22911
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
22912
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
22913
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
22914
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22915
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22916
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22917
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22918
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22919
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
22920
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
22921
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
22922
|
|
|
|
|
|
|
|
22923
|
|
|
|
|
|
|
PDL_COMMENT("none") |
22924
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
22925
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22926
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22927
|
|
|
|
|
|
|
|
22928
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22929
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22930
|
|
|
|
|
|
|
|
22931
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22932
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22933
|
|
|
|
|
|
|
|
22934
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22935
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22936
|
|
|
|
|
|
|
|
22937
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22938
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22939
|
|
|
|
|
|
|
|
22940
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22941
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22942
|
|
|
|
|
|
|
|
22943
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22944
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
22945
|
|
|
|
|
|
|
|
22946
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
22947
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
22948
|
|
|
|
|
|
|
|
22949
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
22950
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
22951
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
22952
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22953
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22954
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22955
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22956
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22957
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
22958
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
22959
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
22960
|
|
|
|
|
|
|
|
22961
|
|
|
|
|
|
|
PDL_COMMENT("none") |
22962
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
22963
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
22964
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
22965
|
|
|
|
|
|
|
|
22966
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
22967
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
22968
|
|
|
|
|
|
|
|
22969
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
22970
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
22971
|
|
|
|
|
|
|
|
22972
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
22973
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
22974
|
|
|
|
|
|
|
|
22975
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
22976
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
22977
|
|
|
|
|
|
|
|
22978
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
22979
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
22980
|
|
|
|
|
|
|
|
22981
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
22982
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
22983
|
|
|
|
|
|
|
|
22984
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
22985
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
22986
|
|
|
|
|
|
|
|
22987
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
22988
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
22989
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
22990
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
22991
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
22992
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
22993
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
22994
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
22995
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
22996
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
22997
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
22998
|
|
|
|
|
|
|
|
22999
|
|
|
|
|
|
|
PDL_COMMENT("none") |
23000
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
23001
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23002
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23003
|
|
|
|
|
|
|
|
23004
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23005
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23006
|
|
|
|
|
|
|
|
23007
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23008
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23009
|
|
|
|
|
|
|
|
23010
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23011
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23012
|
|
|
|
|
|
|
|
23013
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23014
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23015
|
|
|
|
|
|
|
|
23016
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23017
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23018
|
|
|
|
|
|
|
|
23019
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23020
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23021
|
|
|
|
|
|
|
|
23022
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23023
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23024
|
|
|
|
|
|
|
|
23025
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23026
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23027
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23028
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23029
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23030
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23031
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23032
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23033
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23034
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23035
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23036
|
|
|
|
|
|
|
|
23037
|
|
|
|
|
|
|
PDL_COMMENT("none") |
23038
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
23039
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23040
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23041
|
|
|
|
|
|
|
|
23042
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23043
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23044
|
|
|
|
|
|
|
|
23045
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23046
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23047
|
|
|
|
|
|
|
|
23048
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23049
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23050
|
|
|
|
|
|
|
|
23051
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23052
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23053
|
|
|
|
|
|
|
|
23054
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23055
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23056
|
|
|
|
|
|
|
|
23057
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23058
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23059
|
|
|
|
|
|
|
|
23060
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23061
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23062
|
|
|
|
|
|
|
|
23063
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23064
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23065
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23066
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23067
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23068
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23069
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23070
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23071
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23072
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23073
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23074
|
|
|
|
|
|
|
|
23075
|
|
|
|
|
|
|
PDL_COMMENT("none") |
23076
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
23077
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23078
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23079
|
|
|
|
|
|
|
|
23080
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23081
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23082
|
|
|
|
|
|
|
|
23083
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23084
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23085
|
|
|
|
|
|
|
|
23086
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23087
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23088
|
|
|
|
|
|
|
|
23089
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23090
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23091
|
|
|
|
|
|
|
|
23092
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23093
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23094
|
|
|
|
|
|
|
|
23095
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23096
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23097
|
|
|
|
|
|
|
|
23098
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23099
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23100
|
|
|
|
|
|
|
|
23101
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23102
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23103
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23104
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23105
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23106
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23107
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23108
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23109
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23110
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23111
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23112
|
|
|
|
|
|
|
|
23113
|
|
|
|
|
|
|
PDL_COMMENT("none") |
23114
|
0
|
|
|
|
|
|
} break;} |
23115
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
23116
|
|
|
|
|
|
|
} |
23117
|
|
|
|
|
|
|
} |
23118
|
|
|
|
|
|
|
{ |
23119
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","clens1","crowids1","clens2","crowids2","dist"}; |
23120
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,1,1,1,1,2}; |
23121
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterdistancematrixenc"; |
23122
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
23123
|
|
|
|
|
|
|
__funcname, __parnames, 8 |
23124
|
|
|
|
|
|
|
}; |
23125
|
|
|
|
|
|
|
|
23126
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
23127
|
|
|
|
|
|
|
__realdims,__creating,8, |
23128
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
23129
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
23130
|
|
|
|
|
|
|
0 ); |
23131
|
|
|
|
|
|
|
} |
23132
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
23133
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
23134
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
23135
|
|
|
|
|
|
|
} |
23136
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23137
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
23138
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23139
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
23140
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23141
|
|
|
|
|
|
|
} |
23142
|
|
|
|
|
|
|
} |
23143
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23144
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
23145
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
23146
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
23147
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23148
|
|
|
|
|
|
|
} |
23149
|
|
|
|
|
|
|
} |
23150
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
23151
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
23152
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
23153
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
23154
|
|
|
|
|
|
|
} |
23155
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23156
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
23157
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23158
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
23159
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23160
|
|
|
|
|
|
|
} |
23161
|
|
|
|
|
|
|
} |
23162
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23163
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
23164
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
23165
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
23166
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23167
|
|
|
|
|
|
|
} |
23168
|
|
|
|
|
|
|
} |
23169
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
23170
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
23171
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
23172
|
|
|
|
|
|
|
} |
23173
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23174
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
23175
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23176
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
23177
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23178
|
|
|
|
|
|
|
} |
23179
|
|
|
|
|
|
|
} |
23180
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
23181
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
23182
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__k1_size <= 1) __privtrans->__k1_size = 1; |
|
|
0
|
|
|
|
|
|
23183
|
|
|
|
|
|
|
} |
23184
|
0
|
0
|
|
|
|
|
if(__privtrans->__k1_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__k1_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23185
|
0
|
|
|
|
|
|
__privtrans->__k1_size = ((__privtrans->pdls[3]))->dims[0]; |
23186
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__k1_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23187
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
23188
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23189
|
|
|
|
|
|
|
} |
23190
|
|
|
|
|
|
|
} |
23191
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 1) { |
23192
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__nc1_size <= 1) __privtrans->__nc1_size = 1; |
|
|
0
|
|
|
|
|
|
23193
|
|
|
|
|
|
|
} |
23194
|
0
|
0
|
|
|
|
|
if(__privtrans->__nc1_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nc1_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23195
|
0
|
|
|
|
|
|
__privtrans->__nc1_size = ((__privtrans->pdls[4]))->dims[0]; |
23196
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nc1_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23197
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
23198
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23199
|
|
|
|
|
|
|
} |
23200
|
|
|
|
|
|
|
} |
23201
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
23202
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
23203
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__k2_size <= 1) __privtrans->__k2_size = 1; |
|
|
0
|
|
|
|
|
|
23204
|
|
|
|
|
|
|
} |
23205
|
0
|
0
|
|
|
|
|
if(__privtrans->__k2_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__k2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23206
|
0
|
|
|
|
|
|
__privtrans->__k2_size = ((__privtrans->pdls[5]))->dims[0]; |
23207
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__k2_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23208
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
23209
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23210
|
|
|
|
|
|
|
} |
23211
|
|
|
|
|
|
|
} |
23212
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->ndims < 1) { |
23213
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[6]))->ndims < 1 && __privtrans->__nc2_size <= 1) __privtrans->__nc2_size = 1; |
|
|
0
|
|
|
|
|
|
23214
|
|
|
|
|
|
|
} |
23215
|
0
|
0
|
|
|
|
|
if(__privtrans->__nc2_size == -1 || (((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__nc2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23216
|
0
|
|
|
|
|
|
__privtrans->__nc2_size = ((__privtrans->pdls[6]))->dims[0]; |
23217
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__nc2_size != ((__privtrans->pdls[6]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23218
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->dims[0] != 1) { |
23219
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23220
|
|
|
|
|
|
|
} |
23221
|
|
|
|
|
|
|
} |
23222
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[6]))); |
23223
|
0
|
0
|
|
|
|
|
if(!__creating[7]) { |
23224
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->ndims < 2) { |
23225
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[7]))->ndims < 1 && __privtrans->__k1_size <= 1) __privtrans->__k1_size = 1; |
|
|
0
|
|
|
|
|
|
23226
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[7]))->ndims < 2 && __privtrans->__k2_size <= 1) __privtrans->__k2_size = 1; |
|
|
0
|
|
|
|
|
|
23227
|
|
|
|
|
|
|
} |
23228
|
0
|
0
|
|
|
|
|
if(__privtrans->__k1_size == -1 || (((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__k1_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23229
|
0
|
|
|
|
|
|
__privtrans->__k1_size = ((__privtrans->pdls[7]))->dims[0]; |
23230
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__k1_size != ((__privtrans->pdls[7]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
23231
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->dims[0] != 1) { |
23232
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23233
|
|
|
|
|
|
|
} |
23234
|
|
|
|
|
|
|
} |
23235
|
0
|
0
|
|
|
|
|
if(__privtrans->__k2_size == -1 || (((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__k2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23236
|
0
|
|
|
|
|
|
__privtrans->__k2_size = ((__privtrans->pdls[7]))->dims[1]; |
23237
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__k2_size != ((__privtrans->pdls[7]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
23238
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->dims[1] != 1) { |
23239
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancematrixenc:" "Wrong dims\n"); |
23240
|
|
|
|
|
|
|
} |
23241
|
|
|
|
|
|
|
} |
23242
|
|
|
|
|
|
|
} else { |
23243
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k1_size;dims[1] = __privtrans->__k2_size; |
23244
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0); |
23245
|
|
|
|
|
|
|
} |
23246
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
23247
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
23248
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
23249
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
23250
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23251
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
23252
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
23253
|
|
|
|
|
|
|
) { |
23254
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
23255
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
23256
|
|
|
|
|
|
|
} |
23257
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23258
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
23259
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
23260
|
|
|
|
|
|
|
) { |
23261
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
23262
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
23263
|
|
|
|
|
|
|
} |
23264
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23265
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
23266
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
23267
|
|
|
|
|
|
|
) { |
23268
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
23269
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
23270
|
|
|
|
|
|
|
} |
23271
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23272
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
23273
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
23274
|
|
|
|
|
|
|
) { |
23275
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
23276
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
23277
|
|
|
|
|
|
|
} |
23278
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23279
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
23280
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
23281
|
|
|
|
|
|
|
) { |
23282
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
23283
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
23284
|
|
|
|
|
|
|
} |
23285
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23286
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
23287
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
23288
|
|
|
|
|
|
|
) { |
23289
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
23290
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
23291
|
|
|
|
|
|
|
} |
23292
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23293
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
23294
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
23295
|
|
|
|
|
|
|
) { |
23296
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
23297
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
23298
|
|
|
|
|
|
|
} |
23299
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
23300
|
0
|
0
|
|
|
|
|
!__creating[7] && |
23301
|
0
|
0
|
|
|
|
|
__privtrans->pdls[7]->hdrsv && |
23302
|
0
|
|
|
|
|
|
(__privtrans->pdls[7]->state & PDL_HDRCPY) |
23303
|
|
|
|
|
|
|
) { |
23304
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[7]->hdrsv; |
23305
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0); |
23306
|
|
|
|
|
|
|
} |
23307
|
0
|
0
|
|
|
|
|
if (hdrp) { |
23308
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
23309
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
23310
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
23311
|
|
|
|
|
|
|
int count; |
23312
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
23313
|
0
|
|
|
|
|
|
dSP; |
23314
|
0
|
|
|
|
|
|
ENTER ; |
23315
|
0
|
|
|
|
|
|
SAVETMPS ; |
23316
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
23317
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
23318
|
0
|
|
|
|
|
|
PUTBACK ; |
23319
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
23320
|
0
|
|
|
|
|
|
SPAGAIN ; |
23321
|
0
|
0
|
|
|
|
|
if(count != 1) |
23322
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
23323
|
|
|
|
|
|
|
|
23324
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
23325
|
|
|
|
|
|
|
|
23326
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
23327
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
23328
|
|
|
|
|
|
|
} |
23329
|
|
|
|
|
|
|
|
23330
|
0
|
0
|
|
|
|
|
FREETMPS ; |
23331
|
0
|
|
|
|
|
|
LEAVE ; |
23332
|
|
|
|
|
|
|
|
23333
|
|
|
|
|
|
|
|
23334
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
23335
|
|
|
|
|
|
|
|
23336
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[7]->hdrsv != hdrp ){ |
23337
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
23338
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv ); |
23339
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
23340
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
23341
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->hdrsv = hdr_copy; |
23342
|
|
|
|
|
|
|
} |
23343
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
23344
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->state |= PDL_HDRCPY; |
23345
|
|
|
|
|
|
|
|
23346
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
23347
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
23348
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
23349
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
23350
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
23351
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
23352
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
23353
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
23354
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
23355
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
23356
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
23357
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
23358
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
23359
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
23360
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
23361
|
0
|
|
|
|
|
|
__privtrans->__inc_clens1_k1 = 0; else |
23362
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clens1_k1 = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23363
|
0
|
|
|
|
|
|
__privtrans->__inc_crowids1_nc1 = 0; else |
23364
|
0
|
0
|
|
|
|
|
__privtrans->__inc_crowids1_nc1 = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
23365
|
0
|
|
|
|
|
|
__privtrans->__inc_clens2_k2 = 0; else |
23366
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clens2_k2 = PDL_REPRINC(__privtrans->pdls[5],0);if(__privtrans->pdls[6]->ndims <= 0 || __privtrans->pdls[6]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23367
|
0
|
|
|
|
|
|
__privtrans->__inc_crowids2_nc2 = 0; else |
23368
|
0
|
0
|
|
|
|
|
__privtrans->__inc_crowids2_nc2 = __privtrans->pdls[6]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 0 || __privtrans->pdls[7]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
23369
|
0
|
|
|
|
|
|
__privtrans->__inc_dist_k1 = 0; else |
23370
|
0
|
0
|
|
|
|
|
__privtrans->__inc_dist_k1 = PDL_REPRINC(__privtrans->pdls[7],0);if(__privtrans->pdls[7]->ndims <= 1 || __privtrans->pdls[7]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
23371
|
0
|
|
|
|
|
|
__privtrans->__inc_dist_k2 = 0; else |
23372
|
0
|
0
|
|
|
|
|
__privtrans->__inc_dist_k2 = PDL_REPRINC(__privtrans->pdls[7],1); __privtrans->__ddone = 1; |
23373
|
|
|
|
|
|
|
} |
23374
|
0
|
|
|
|
|
|
} |
23375
|
|
|
|
|
|
|
|
23376
|
|
|
|
|
|
|
|
23377
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterdistancematrixenc_copy(pdl_trans *__tr ) { |
23378
|
|
|
|
|
|
|
int __dim; |
23379
|
0
|
|
|
|
|
|
pdl_clusterdistancematrixenc_struct *__privtrans = (pdl_clusterdistancematrixenc_struct *) __tr; |
23380
|
|
|
|
|
|
|
|
23381
|
|
|
|
|
|
|
{ |
23382
|
0
|
|
|
|
|
|
pdl_clusterdistancematrixenc_struct *__copy = malloc(sizeof(pdl_clusterdistancematrixenc_struct)); |
23383
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
23384
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
23385
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
23386
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
23387
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
23388
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
23389
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
23390
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
23391
|
|
|
|
|
|
|
{int i; |
23392
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
23393
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
23394
|
|
|
|
|
|
|
} |
23395
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
23396
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
23397
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_clens1_k1=__copy->__inc_clens1_k1;__privtrans->__inc_crowids1_nc1=__copy->__inc_crowids1_nc1;__privtrans->__inc_clens2_k2=__copy->__inc_clens2_k2;__privtrans->__inc_crowids2_nc2=__copy->__inc_crowids2_nc2;__privtrans->__inc_dist_k1=__copy->__inc_dist_k1;__privtrans->__inc_dist_k2=__copy->__inc_dist_k2;__copy->__n_size=__privtrans->__n_size;__copy->__k1_size=__privtrans->__k1_size;__copy->__k2_size=__privtrans->__k2_size;__copy->__d_size=__privtrans->__d_size;__copy->__nc1_size=__privtrans->__nc1_size;__copy->__nc2_size=__privtrans->__nc2_size; |
23398
|
|
|
|
|
|
|
} |
23399
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
23400
|
|
|
|
|
|
|
} |
23401
|
|
|
|
|
|
|
} |
23402
|
|
|
|
|
|
|
|
23403
|
|
|
|
|
|
|
|
23404
|
0
|
|
|
|
|
|
void pdl_clusterdistancematrixenc_readdata(pdl_trans *__tr ) { |
23405
|
|
|
|
|
|
|
int __dim; |
23406
|
0
|
|
|
|
|
|
pdl_clusterdistancematrixenc_struct *__privtrans = (pdl_clusterdistancematrixenc_struct *) __tr; |
23407
|
|
|
|
|
|
|
|
23408
|
|
|
|
|
|
|
{ |
23409
|
0
|
|
|
|
|
|
{register PDL_Indx __k1_size = __privtrans->__k1_size; |
23410
|
0
|
|
|
|
|
|
register PDL_Indx __k2_size = __privtrans->__k2_size; |
23411
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
23412
|
|
|
|
|
|
|
|
23413
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
23414
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
23415
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23416
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23417
|
|
|
|
|
|
|
|
23418
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23419
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23420
|
|
|
|
|
|
|
|
23421
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23422
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23423
|
|
|
|
|
|
|
|
23424
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23425
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23426
|
|
|
|
|
|
|
|
23427
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23428
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23429
|
|
|
|
|
|
|
|
23430
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23431
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23432
|
|
|
|
|
|
|
|
23433
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23434
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23435
|
|
|
|
|
|
|
|
23436
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23437
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23438
|
|
|
|
|
|
|
|
23439
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23440
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23441
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23442
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23443
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23444
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23445
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23446
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23447
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23448
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23449
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23450
|
|
|
|
|
|
|
|
23451
|
|
|
|
|
|
|
|
23452
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
23453
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
23454
|
0
|
|
|
|
|
|
int transpose=0; |
23455
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
23456
|
|
|
|
|
|
|
|
23457
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
23458
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
23459
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
23460
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
23461
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
23462
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
23463
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
23464
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
23465
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
23466
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
23467
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
23468
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
23469
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
23470
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
23471
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
23472
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
23473
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
23474
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
23475
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
23476
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
23477
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
23478
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
23479
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
23480
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
23481
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
23482
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
23483
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
23484
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
23485
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
23486
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
23487
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
23488
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
23489
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
23490
|
0
|
|
|
|
|
|
__tind2++ |
23491
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
23492
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
23493
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
23494
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
23495
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
23496
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
23497
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
23498
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
23499
|
|
|
|
|
|
|
) |
23500
|
|
|
|
|
|
|
{ |
23501
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
23502
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
23503
|
0
|
|
|
|
|
|
__tind1++ |
23504
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
23505
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
23506
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
23507
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
23508
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
23509
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
23510
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
23511
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
23512
|
|
|
|
|
|
|
) |
23513
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
23514
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
23515
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
23516
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
23517
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
23518
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
23519
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
23520
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
23521
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
23522
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
23523
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
23524
|
|
|
|
|
|
|
crowids1p, crowids2p, |
23525
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
23526
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
23527
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
23528
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
23529
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
23530
|
|
|
|
|
|
|
|
23531
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
23532
|
|
|
|
|
|
|
} |
23533
|
|
|
|
|
|
|
} |
23534
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
23535
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
23536
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
23537
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
23538
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
23539
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
23540
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
23541
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
23542
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
23543
|
|
|
|
|
|
|
/*-- cleanup --*/ |
23544
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
23545
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
23546
|
|
|
|
|
|
|
|
23547
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
23548
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23549
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23550
|
|
|
|
|
|
|
|
23551
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23552
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23553
|
|
|
|
|
|
|
|
23554
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23555
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23556
|
|
|
|
|
|
|
|
23557
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23558
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23559
|
|
|
|
|
|
|
|
23560
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23561
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23562
|
|
|
|
|
|
|
|
23563
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23564
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23565
|
|
|
|
|
|
|
|
23566
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23567
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23568
|
|
|
|
|
|
|
|
23569
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23570
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23571
|
|
|
|
|
|
|
|
23572
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23573
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23574
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23575
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23576
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23577
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23578
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23581
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23583
|
|
|
|
|
|
|
|
23584
|
|
|
|
|
|
|
|
23585
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
23586
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
23587
|
0
|
|
|
|
|
|
int transpose=0; |
23588
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
23589
|
|
|
|
|
|
|
|
23590
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
23591
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
23592
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
23593
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
23594
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
23595
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
23596
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
23597
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
23598
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
23599
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
23600
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
23601
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
23602
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
23603
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
23604
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
23605
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
23606
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
23607
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
23608
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
23609
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
23610
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
23611
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
23612
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
23613
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
23614
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
23615
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
23616
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
23617
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
23618
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
23619
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
23620
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
23621
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
23622
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
23623
|
0
|
|
|
|
|
|
__tind2++ |
23624
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
23625
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
23626
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
23627
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
23628
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
23629
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
23630
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
23631
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
23632
|
|
|
|
|
|
|
) |
23633
|
|
|
|
|
|
|
{ |
23634
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
23635
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
23636
|
0
|
|
|
|
|
|
__tind1++ |
23637
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
23638
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
23639
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
23640
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
23641
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
23642
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
23643
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
23644
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
23645
|
|
|
|
|
|
|
) |
23646
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
23647
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
23648
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
23649
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
23650
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
23651
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
23652
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
23653
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
23654
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
23655
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
23656
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
23657
|
|
|
|
|
|
|
crowids1p, crowids2p, |
23658
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
23659
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
23660
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
23661
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
23662
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
23663
|
|
|
|
|
|
|
|
23664
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
23665
|
|
|
|
|
|
|
} |
23666
|
|
|
|
|
|
|
} |
23667
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
23668
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
23669
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
23670
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
23671
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
23672
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
23673
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
23674
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
23675
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
23676
|
|
|
|
|
|
|
/*-- cleanup --*/ |
23677
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
23678
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
23679
|
|
|
|
|
|
|
|
23680
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
23681
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23682
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23683
|
|
|
|
|
|
|
|
23684
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23685
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23686
|
|
|
|
|
|
|
|
23687
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23688
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23689
|
|
|
|
|
|
|
|
23690
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23691
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23692
|
|
|
|
|
|
|
|
23693
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23694
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23695
|
|
|
|
|
|
|
|
23696
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23697
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23698
|
|
|
|
|
|
|
|
23699
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23700
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23701
|
|
|
|
|
|
|
|
23702
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23703
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23704
|
|
|
|
|
|
|
|
23705
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23706
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23707
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23708
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23709
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23710
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23711
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23712
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23713
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23714
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23715
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23716
|
|
|
|
|
|
|
|
23717
|
|
|
|
|
|
|
|
23718
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
23719
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
23720
|
0
|
|
|
|
|
|
int transpose=0; |
23721
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
23722
|
|
|
|
|
|
|
|
23723
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
23724
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
23725
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
23726
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
23727
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
23728
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
23729
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
23730
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
23731
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
23732
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
23733
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
23734
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
23735
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
23736
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
23737
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
23738
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
23739
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
23740
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
23741
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
23742
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
23743
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
23744
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
23745
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
23746
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
23747
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
23748
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
23749
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
23750
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
23751
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
23752
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
23753
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
23754
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
23755
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
23756
|
0
|
|
|
|
|
|
__tind2++ |
23757
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
23758
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
23759
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
23760
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
23761
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
23762
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
23763
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
23764
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
23765
|
|
|
|
|
|
|
) |
23766
|
|
|
|
|
|
|
{ |
23767
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
23768
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
23769
|
0
|
|
|
|
|
|
__tind1++ |
23770
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
23771
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
23772
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
23773
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
23774
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
23775
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
23776
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
23777
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
23778
|
|
|
|
|
|
|
) |
23779
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
23780
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
23781
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
23782
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
23783
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
23784
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
23785
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
23786
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
23787
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
23788
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
23789
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
23790
|
|
|
|
|
|
|
crowids1p, crowids2p, |
23791
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
23792
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
23793
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
23794
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
23795
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
23796
|
|
|
|
|
|
|
|
23797
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
23798
|
|
|
|
|
|
|
} |
23799
|
|
|
|
|
|
|
} |
23800
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
23801
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
23802
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
23803
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
23804
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
23805
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
23806
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
23807
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
23808
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
23809
|
|
|
|
|
|
|
/*-- cleanup --*/ |
23810
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
23811
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
23812
|
|
|
|
|
|
|
|
23813
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
23814
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23815
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23816
|
|
|
|
|
|
|
|
23817
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23818
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23819
|
|
|
|
|
|
|
|
23820
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23821
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23822
|
|
|
|
|
|
|
|
23823
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23824
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23825
|
|
|
|
|
|
|
|
23826
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23827
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23828
|
|
|
|
|
|
|
|
23829
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23830
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23831
|
|
|
|
|
|
|
|
23832
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23833
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23834
|
|
|
|
|
|
|
|
23835
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23836
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23837
|
|
|
|
|
|
|
|
23838
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23839
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23840
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23841
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23842
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23843
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23844
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23845
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23846
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23847
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23848
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23849
|
|
|
|
|
|
|
|
23850
|
|
|
|
|
|
|
|
23851
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
23852
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
23853
|
0
|
|
|
|
|
|
int transpose=0; |
23854
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
23855
|
|
|
|
|
|
|
|
23856
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
23857
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
23858
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
23859
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
23860
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
23861
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
23862
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
23863
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
23864
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
23865
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
23866
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
23867
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
23868
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
23869
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
23870
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
23871
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
23872
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
23873
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
23874
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
23875
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
23876
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
23877
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
23878
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
23879
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
23880
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
23881
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
23882
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
23883
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
23884
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
23885
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
23886
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
23887
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
23888
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
23889
|
0
|
|
|
|
|
|
__tind2++ |
23890
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
23891
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
23892
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
23893
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
23894
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
23895
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
23896
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
23897
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
23898
|
|
|
|
|
|
|
) |
23899
|
|
|
|
|
|
|
{ |
23900
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
23901
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
23902
|
0
|
|
|
|
|
|
__tind1++ |
23903
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
23904
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
23905
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
23906
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
23907
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
23908
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
23909
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
23910
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
23911
|
|
|
|
|
|
|
) |
23912
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
23913
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
23914
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
23915
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
23916
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
23917
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
23918
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
23919
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
23920
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
23921
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
23922
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
23923
|
|
|
|
|
|
|
crowids1p, crowids2p, |
23924
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
23925
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
23926
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
23927
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
23928
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
23929
|
|
|
|
|
|
|
|
23930
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
23931
|
|
|
|
|
|
|
} |
23932
|
|
|
|
|
|
|
} |
23933
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
23934
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
23935
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
23936
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
23937
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
23938
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
23939
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
23940
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
23941
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
23942
|
|
|
|
|
|
|
/*-- cleanup --*/ |
23943
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
23944
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
23945
|
|
|
|
|
|
|
|
23946
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
23947
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
23948
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
23949
|
|
|
|
|
|
|
|
23950
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
23951
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
23952
|
|
|
|
|
|
|
|
23953
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
23954
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
23955
|
|
|
|
|
|
|
|
23956
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
23957
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
23958
|
|
|
|
|
|
|
|
23959
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
23960
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
23961
|
|
|
|
|
|
|
|
23962
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
23963
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
23964
|
|
|
|
|
|
|
|
23965
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
23966
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
23967
|
|
|
|
|
|
|
|
23968
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
23969
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
23970
|
|
|
|
|
|
|
|
23971
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
23972
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
23973
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
23974
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
23975
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
23976
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
23977
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
23978
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
23979
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
23980
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
23981
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
23982
|
|
|
|
|
|
|
|
23983
|
|
|
|
|
|
|
|
23984
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
23985
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
23986
|
0
|
|
|
|
|
|
int transpose=0; |
23987
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
23988
|
|
|
|
|
|
|
|
23989
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
23990
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
23991
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
23992
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
23993
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
23994
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
23995
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
23996
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
23997
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
23998
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
23999
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
24000
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
24001
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
24002
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
24003
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
24004
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
24005
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
24006
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
24007
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
24008
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
24009
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
24010
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
24011
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
24012
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
24013
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
24014
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
24015
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
24016
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
24017
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
24018
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
24019
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
24020
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
24021
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
24022
|
0
|
|
|
|
|
|
__tind2++ |
24023
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
24024
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
24025
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
24026
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
24027
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
24028
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
24029
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
24030
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
24031
|
|
|
|
|
|
|
) |
24032
|
|
|
|
|
|
|
{ |
24033
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
24034
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
24035
|
0
|
|
|
|
|
|
__tind1++ |
24036
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
24037
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
24038
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
24039
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
24040
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
24041
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
24042
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
24043
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
24044
|
|
|
|
|
|
|
) |
24045
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
24046
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
24047
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
24048
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
24049
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
24050
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
24051
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
24052
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
24053
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
24054
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
24055
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
24056
|
|
|
|
|
|
|
crowids1p, crowids2p, |
24057
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
24058
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
24059
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
24060
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
24061
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
24062
|
|
|
|
|
|
|
|
24063
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
24064
|
|
|
|
|
|
|
} |
24065
|
|
|
|
|
|
|
} |
24066
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
24067
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
24068
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
24069
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
24070
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
24071
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
24072
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
24073
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
24074
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
24075
|
|
|
|
|
|
|
/*-- cleanup --*/ |
24076
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
24077
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
24078
|
|
|
|
|
|
|
|
24079
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
24080
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24081
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24082
|
|
|
|
|
|
|
|
24083
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24084
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24085
|
|
|
|
|
|
|
|
24086
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24087
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24088
|
|
|
|
|
|
|
|
24089
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24090
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24091
|
|
|
|
|
|
|
|
24092
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24093
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24094
|
|
|
|
|
|
|
|
24095
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24096
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24097
|
|
|
|
|
|
|
|
24098
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24099
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24100
|
|
|
|
|
|
|
|
24101
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24102
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
24103
|
|
|
|
|
|
|
|
24104
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
24105
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
24106
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
24107
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24108
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24109
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24110
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24111
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24112
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24113
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
24114
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24115
|
|
|
|
|
|
|
|
24116
|
|
|
|
|
|
|
|
24117
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
24118
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
24119
|
0
|
|
|
|
|
|
int transpose=0; |
24120
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
24121
|
|
|
|
|
|
|
|
24122
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
24123
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
24124
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
24125
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
24126
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
24127
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
24128
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
24129
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
24130
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
24131
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
24132
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
24133
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
24134
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
24135
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
24136
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
24137
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
24138
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
24139
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
24140
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
24141
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
24142
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
24143
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
24144
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
24145
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
24146
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
24147
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
24148
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
24149
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
24150
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
24151
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
24152
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
24153
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
24154
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
24155
|
0
|
|
|
|
|
|
__tind2++ |
24156
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
24157
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
24158
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
24159
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
24160
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
24161
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
24162
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
24163
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
24164
|
|
|
|
|
|
|
) |
24165
|
|
|
|
|
|
|
{ |
24166
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
24167
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
24168
|
0
|
|
|
|
|
|
__tind1++ |
24169
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
24170
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
24171
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
24172
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
24173
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
24174
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
24175
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
24176
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
24177
|
|
|
|
|
|
|
) |
24178
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
24179
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
24180
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
24181
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
24182
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
24183
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
24184
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
24185
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
24186
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
24187
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
24188
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
24189
|
|
|
|
|
|
|
crowids1p, crowids2p, |
24190
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
24191
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
24192
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
24193
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
24194
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
24195
|
|
|
|
|
|
|
|
24196
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
24197
|
|
|
|
|
|
|
} |
24198
|
|
|
|
|
|
|
} |
24199
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
24200
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
24201
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
24202
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
24203
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
24204
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
24205
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
24206
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
24207
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
24208
|
|
|
|
|
|
|
/*-- cleanup --*/ |
24209
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
24210
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
24211
|
|
|
|
|
|
|
|
24212
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
24213
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24214
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24215
|
|
|
|
|
|
|
|
24216
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24217
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24218
|
|
|
|
|
|
|
|
24219
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24220
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24221
|
|
|
|
|
|
|
|
24222
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24223
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24224
|
|
|
|
|
|
|
|
24225
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24226
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24227
|
|
|
|
|
|
|
|
24228
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24229
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24230
|
|
|
|
|
|
|
|
24231
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24232
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24233
|
|
|
|
|
|
|
|
24234
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24235
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
24236
|
|
|
|
|
|
|
|
24237
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
24238
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
24239
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
24240
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24241
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24242
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24243
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24244
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24245
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24246
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
24247
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24248
|
|
|
|
|
|
|
|
24249
|
|
|
|
|
|
|
|
24250
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
24251
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
24252
|
0
|
|
|
|
|
|
int transpose=0; |
24253
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
24254
|
|
|
|
|
|
|
|
24255
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
24256
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
24257
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
24258
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
24259
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
24260
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
24261
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
24262
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
24263
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
24264
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
24265
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
24266
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
24267
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
24268
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
24269
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
24270
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
24271
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
24272
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
24273
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
24274
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
24275
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
24276
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
24277
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
24278
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
24279
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
24280
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
24281
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
24282
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
24283
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
24284
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
24285
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
24286
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
24287
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
24288
|
0
|
|
|
|
|
|
__tind2++ |
24289
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
24290
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
24291
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
24292
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
24293
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
24294
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
24295
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
24296
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
24297
|
|
|
|
|
|
|
) |
24298
|
|
|
|
|
|
|
{ |
24299
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
24300
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
24301
|
0
|
|
|
|
|
|
__tind1++ |
24302
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
24303
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
24304
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
24305
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
24306
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
24307
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
24308
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
24309
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
24310
|
|
|
|
|
|
|
) |
24311
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
24312
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
24313
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
24314
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
24315
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
24316
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
24317
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
24318
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
24319
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
24320
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
24321
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
24322
|
|
|
|
|
|
|
crowids1p, crowids2p, |
24323
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
24324
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
24325
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
24326
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
24327
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
24328
|
|
|
|
|
|
|
|
24329
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
24330
|
|
|
|
|
|
|
} |
24331
|
|
|
|
|
|
|
} |
24332
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
24333
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
24334
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
24335
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
24336
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
24337
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
24338
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
24339
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
24340
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
24341
|
|
|
|
|
|
|
/*-- cleanup --*/ |
24342
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
24343
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
24344
|
|
|
|
|
|
|
|
24345
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
24346
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24347
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24348
|
|
|
|
|
|
|
|
24349
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24350
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24351
|
|
|
|
|
|
|
|
24352
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24353
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24354
|
|
|
|
|
|
|
|
24355
|
0
|
0
|
|
|
|
|
PDL_Long * clens1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24356
|
0
|
|
|
|
|
|
PDL_Long * clens1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24357
|
|
|
|
|
|
|
|
24358
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24359
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24360
|
|
|
|
|
|
|
|
24361
|
0
|
0
|
|
|
|
|
PDL_Long * clens2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24362
|
0
|
|
|
|
|
|
PDL_Long * clens2_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24363
|
|
|
|
|
|
|
|
24364
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24365
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24366
|
|
|
|
|
|
|
|
24367
|
0
|
0
|
|
|
|
|
PDL_Double * dist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24368
|
0
|
|
|
|
|
|
PDL_Double * dist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
24369
|
|
|
|
|
|
|
|
24370
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_dist_k1 = __privtrans->__inc_dist_k1; |
24371
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dist_k2 = __privtrans->__inc_dist_k2; |
24372
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens1_k1 = __privtrans->__inc_clens1_k1; |
24373
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24374
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24375
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24376
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24377
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24378
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24379
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clens2_k2 = __privtrans->__inc_clens2_k2; |
24380
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24381
|
|
|
|
|
|
|
|
24382
|
|
|
|
|
|
|
|
24383
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
24384
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
24385
|
0
|
|
|
|
|
|
int transpose=0; |
24386
|
|
|
|
|
|
|
int *crowids1p, *crowids2p; |
24387
|
|
|
|
|
|
|
|
24388
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
24389
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
24390
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
24391
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
24392
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
24393
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
24394
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
24395
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
24396
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
24397
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
24398
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
24399
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
24400
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
24401
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
24402
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
24403
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
24404
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
24405
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
24406
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
24407
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
24408
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
24409
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
24410
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
24411
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
24412
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
24413
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
24414
|
0
|
|
|
|
|
|
clens1_datap += __offsp[3]; |
24415
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
24416
|
0
|
|
|
|
|
|
clens2_datap += __offsp[5]; |
24417
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[6]; |
24418
|
0
|
|
|
|
|
|
dist_datap += __offsp[7]; |
24419
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
24420
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
24421
|
0
|
|
|
|
|
|
__tind2++ |
24422
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
24423
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
24424
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
24425
|
0
|
|
|
|
|
|
,clens1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
24426
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
24427
|
0
|
|
|
|
|
|
,clens2_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
24428
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
24429
|
0
|
|
|
|
|
|
,dist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
24430
|
|
|
|
|
|
|
) |
24431
|
|
|
|
|
|
|
{ |
24432
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
24433
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
24434
|
0
|
|
|
|
|
|
__tind1++ |
24435
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
24436
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
24437
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
24438
|
0
|
|
|
|
|
|
,clens1_datap += __tinc0_3 |
24439
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
24440
|
0
|
|
|
|
|
|
,clens2_datap += __tinc0_5 |
24441
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_6 |
24442
|
0
|
|
|
|
|
|
,dist_datap += __tinc0_7 |
24443
|
|
|
|
|
|
|
) |
24444
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
24445
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
24446
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
24447
|
0
|
|
|
|
|
|
crowids1p = crowids1_datap; |
24448
|
|
|
|
|
|
|
{PDL_COMMENT("Open k1") register PDL_Indx k1; |
24449
|
0
|
0
|
|
|
|
|
for(k1=0; k1<(__k1_size); k1++) { |
24450
|
0
|
|
|
|
|
|
crowids2p = crowids2_datap; |
24451
|
|
|
|
|
|
|
{PDL_COMMENT("Open k2") register PDL_Indx k2; |
24452
|
0
|
0
|
|
|
|
|
for(k2=0; k2<(__k2_size); k2++) { |
24453
|
0
|
0
|
|
|
|
|
(dist_datap)[0+(__inc_dist_k1*PP_INDTERM(__privtrans->__k1_size, k1))+(__inc_dist_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
|
|
0
|
|
|
|
|
|
24454
|
0
|
0
|
|
|
|
|
(clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") , (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") , |
|
|
0
|
|
|
|
|
|
24455
|
|
|
|
|
|
|
crowids1p, crowids2p, |
24456
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
24457
|
0
|
0
|
|
|
|
|
crowids2p += (clens2_datap)[0+(__inc_clens2_k2*PP_INDTERM(__privtrans->__k2_size, k2))] PDL_COMMENT("ACCESS()") ; |
24458
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k2") |
24459
|
0
|
0
|
|
|
|
|
crowids1p += (clens1_datap)[0+(__inc_clens1_k1*PP_INDTERM(__privtrans->__k1_size, k1))] PDL_COMMENT("ACCESS()") ; |
24460
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k1") |
24461
|
|
|
|
|
|
|
|
24462
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
24463
|
|
|
|
|
|
|
} |
24464
|
|
|
|
|
|
|
} |
24465
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
24466
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
24467
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
24468
|
0
|
|
|
|
|
|
clens1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
24469
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
24470
|
0
|
|
|
|
|
|
clens2_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
24471
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
24472
|
0
|
|
|
|
|
|
dist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
24473
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
24474
|
|
|
|
|
|
|
/*-- cleanup --*/ |
24475
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
24476
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
24477
|
|
|
|
|
|
|
|
24478
|
0
|
|
|
|
|
|
} break;} |
24479
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
24480
|
|
|
|
|
|
|
} |
24481
|
|
|
|
|
|
|
} |
24482
|
|
|
|
|
|
|
} |
24483
|
|
|
|
|
|
|
|
24484
|
|
|
|
|
|
|
|
24485
|
|
|
|
|
|
|
|
24486
|
|
|
|
|
|
|
|
24487
|
0
|
|
|
|
|
|
void pdl_clusterdistancematrixenc_free(pdl_trans *__tr ) { |
24488
|
|
|
|
|
|
|
int __dim; |
24489
|
0
|
|
|
|
|
|
pdl_clusterdistancematrixenc_struct *__privtrans = (pdl_clusterdistancematrixenc_struct *) __tr; |
24490
|
|
|
|
|
|
|
|
24491
|
|
|
|
|
|
|
{ |
24492
|
|
|
|
|
|
|
|
24493
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
24494
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
24495
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
24496
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
24497
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;; |
24498
|
|
|
|
|
|
|
} |
24499
|
|
|
|
|
|
|
|
24500
|
|
|
|
|
|
|
} |
24501
|
0
|
|
|
|
|
|
} |
24502
|
|
|
|
|
|
|
|
24503
|
|
|
|
|
|
|
|
24504
|
|
|
|
|
|
|
|
24505
|
|
|
|
|
|
|
|
24506
|
|
|
|
|
|
|
static char pdl_clusterdistancematrixenc_vtable_flags[] = |
24507
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK}; |
24508
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterdistancematrixenc_vtable = { |
24509
|
|
|
|
|
|
|
0,0, 7, 8, pdl_clusterdistancematrixenc_vtable_flags, |
24510
|
|
|
|
|
|
|
pdl_clusterdistancematrixenc_redodims, pdl_clusterdistancematrixenc_readdata, NULL, |
24511
|
|
|
|
|
|
|
pdl_clusterdistancematrixenc_free,NULL,NULL,pdl_clusterdistancematrixenc_copy, |
24512
|
|
|
|
|
|
|
sizeof(pdl_clusterdistancematrixenc_struct),"pdl_clusterdistancematrixenc_vtable" |
24513
|
|
|
|
|
|
|
}; |
24514
|
|
|
|
|
|
|
|
24515
|
|
|
|
|
|
|
typedef struct pdl_clusterdistancesenc_struct { |
24516
|
|
|
|
|
|
|
PDL_TRANS_START(10); |
24517
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_coffsets1_k1;PDL_Indx __inc_crowids1_nc1;PDL_Indx __inc_cwhich1_ncmps;PDL_Indx __inc_coffsets2_k2;PDL_Indx __inc_crowids2_nc2;PDL_Indx __inc_cwhich2_ncmps;PDL_Indx __inc_dists_ncmps;PDL_Indx __d_size;PDL_Indx __nc1_size;PDL_Indx __n_size;PDL_Indx __nc2_size;PDL_Indx __k1_size;PDL_Indx __k2_size;PDL_Indx __ncmps_size; |
24518
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
24519
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
24520
|
|
|
|
|
|
|
} pdl_clusterdistancesenc_struct; |
24521
|
|
|
|
|
|
|
|
24522
|
0
|
|
|
|
|
|
void pdl_clusterdistancesenc_redodims(pdl_trans *__tr ) { |
24523
|
|
|
|
|
|
|
int __dim; |
24524
|
0
|
|
|
|
|
|
pdl_clusterdistancesenc_struct *__privtrans = (pdl_clusterdistancesenc_struct *) __tr; |
24525
|
|
|
|
|
|
|
|
24526
|
|
|
|
|
|
|
{ |
24527
|
|
|
|
|
|
|
PDL_Indx __creating[10]; |
24528
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
24529
|
0
|
|
|
|
|
|
__privtrans->__nc1_size = -1; |
24530
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
24531
|
0
|
|
|
|
|
|
__privtrans->__nc2_size = -1; |
24532
|
0
|
|
|
|
|
|
__privtrans->__k1_size = -1; |
24533
|
0
|
|
|
|
|
|
__privtrans->__k2_size = -1; |
24534
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = -1; |
24535
|
0
|
|
|
|
|
|
__creating[0] = 0; |
24536
|
0
|
|
|
|
|
|
__creating[1] = 0; |
24537
|
0
|
|
|
|
|
|
__creating[2] = 0; |
24538
|
0
|
|
|
|
|
|
__creating[3] = 0; |
24539
|
0
|
|
|
|
|
|
__creating[4] = 0; |
24540
|
0
|
|
|
|
|
|
__creating[5] = 0; |
24541
|
0
|
|
|
|
|
|
__creating[6] = 0; |
24542
|
0
|
|
|
|
|
|
__creating[7] = 0; |
24543
|
0
|
|
|
|
|
|
__creating[8] = 0; |
24544
|
0
|
0
|
|
|
|
|
__creating[9] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[9]); |
|
|
0
|
|
|
|
|
|
24545
|
|
|
|
|
|
|
{ |
24546
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
24547
|
|
|
|
|
|
|
|
24548
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
24549
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
24550
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24551
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24552
|
|
|
|
|
|
|
|
24553
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24554
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24555
|
|
|
|
|
|
|
|
24556
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24557
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24558
|
|
|
|
|
|
|
|
24559
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24560
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24561
|
|
|
|
|
|
|
|
24562
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24563
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24564
|
|
|
|
|
|
|
|
24565
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24566
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24567
|
|
|
|
|
|
|
|
24568
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24569
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24570
|
|
|
|
|
|
|
|
24571
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24572
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24573
|
|
|
|
|
|
|
|
24574
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24575
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24576
|
|
|
|
|
|
|
|
24577
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24578
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24579
|
|
|
|
|
|
|
|
24580
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24581
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24583
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24584
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24585
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24586
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24587
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24588
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24589
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24590
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24591
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24592
|
|
|
|
|
|
|
|
24593
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24594
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
24595
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24596
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24597
|
|
|
|
|
|
|
|
24598
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24599
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24600
|
|
|
|
|
|
|
|
24601
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24602
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24603
|
|
|
|
|
|
|
|
24604
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24605
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24606
|
|
|
|
|
|
|
|
24607
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24608
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24609
|
|
|
|
|
|
|
|
24610
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24611
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24612
|
|
|
|
|
|
|
|
24613
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24614
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24615
|
|
|
|
|
|
|
|
24616
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24617
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24618
|
|
|
|
|
|
|
|
24619
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24620
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24621
|
|
|
|
|
|
|
|
24622
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24623
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24624
|
|
|
|
|
|
|
|
24625
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24626
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24627
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24628
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24629
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24630
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24631
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24632
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24633
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24634
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24635
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24636
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24637
|
|
|
|
|
|
|
|
24638
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24639
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
24640
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24641
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24642
|
|
|
|
|
|
|
|
24643
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24644
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24645
|
|
|
|
|
|
|
|
24646
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24647
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24648
|
|
|
|
|
|
|
|
24649
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24650
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24651
|
|
|
|
|
|
|
|
24652
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24653
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24654
|
|
|
|
|
|
|
|
24655
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24656
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24657
|
|
|
|
|
|
|
|
24658
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24659
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24660
|
|
|
|
|
|
|
|
24661
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24662
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24663
|
|
|
|
|
|
|
|
24664
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24665
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24666
|
|
|
|
|
|
|
|
24667
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24668
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24669
|
|
|
|
|
|
|
|
24670
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24671
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24672
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24673
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24674
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24675
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24676
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24677
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24678
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24679
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24680
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24681
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24682
|
|
|
|
|
|
|
|
24683
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24684
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
24685
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24686
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24687
|
|
|
|
|
|
|
|
24688
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24689
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24690
|
|
|
|
|
|
|
|
24691
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24692
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24693
|
|
|
|
|
|
|
|
24694
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24695
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24696
|
|
|
|
|
|
|
|
24697
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24698
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24699
|
|
|
|
|
|
|
|
24700
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24701
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24702
|
|
|
|
|
|
|
|
24703
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24704
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24705
|
|
|
|
|
|
|
|
24706
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24707
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24708
|
|
|
|
|
|
|
|
24709
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24710
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24711
|
|
|
|
|
|
|
|
24712
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24713
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24714
|
|
|
|
|
|
|
|
24715
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24716
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24717
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24718
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24719
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24720
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24721
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24722
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24723
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24724
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24725
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24726
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24727
|
|
|
|
|
|
|
|
24728
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24729
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
24730
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24731
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24732
|
|
|
|
|
|
|
|
24733
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24734
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24735
|
|
|
|
|
|
|
|
24736
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24737
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24738
|
|
|
|
|
|
|
|
24739
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24740
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24741
|
|
|
|
|
|
|
|
24742
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24743
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24744
|
|
|
|
|
|
|
|
24745
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24746
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24747
|
|
|
|
|
|
|
|
24748
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24749
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24750
|
|
|
|
|
|
|
|
24751
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24752
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24753
|
|
|
|
|
|
|
|
24754
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24755
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24756
|
|
|
|
|
|
|
|
24757
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24758
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24759
|
|
|
|
|
|
|
|
24760
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24761
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24762
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24763
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24764
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24765
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24766
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24767
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24768
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24769
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24770
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24771
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24772
|
|
|
|
|
|
|
|
24773
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24774
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
24775
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24776
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24777
|
|
|
|
|
|
|
|
24778
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24779
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24780
|
|
|
|
|
|
|
|
24781
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24782
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24783
|
|
|
|
|
|
|
|
24784
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24785
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24786
|
|
|
|
|
|
|
|
24787
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24788
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24789
|
|
|
|
|
|
|
|
24790
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24791
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24792
|
|
|
|
|
|
|
|
24793
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24794
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24795
|
|
|
|
|
|
|
|
24796
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24797
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24798
|
|
|
|
|
|
|
|
24799
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24800
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24801
|
|
|
|
|
|
|
|
24802
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24803
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24804
|
|
|
|
|
|
|
|
24805
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24806
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24807
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24808
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24809
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24810
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24811
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24812
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24813
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24814
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24815
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24816
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24817
|
|
|
|
|
|
|
|
24818
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24819
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
24820
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24821
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24822
|
|
|
|
|
|
|
|
24823
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24824
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24825
|
|
|
|
|
|
|
|
24826
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24827
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24828
|
|
|
|
|
|
|
|
24829
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24830
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24831
|
|
|
|
|
|
|
|
24832
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24833
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24834
|
|
|
|
|
|
|
|
24835
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24836
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24837
|
|
|
|
|
|
|
|
24838
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24839
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24840
|
|
|
|
|
|
|
|
24841
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24842
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24843
|
|
|
|
|
|
|
|
24844
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24845
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24846
|
|
|
|
|
|
|
|
24847
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24848
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24849
|
|
|
|
|
|
|
|
24850
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24851
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24852
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24853
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24854
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24855
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24856
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24857
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24858
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24859
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24860
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24861
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24862
|
|
|
|
|
|
|
|
24863
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24864
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
24865
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
24866
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
24867
|
|
|
|
|
|
|
|
24868
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
24869
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
24870
|
|
|
|
|
|
|
|
24871
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
24872
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
24873
|
|
|
|
|
|
|
|
24874
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
24875
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
24876
|
|
|
|
|
|
|
|
24877
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
24878
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
24879
|
|
|
|
|
|
|
|
24880
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
24881
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
24882
|
|
|
|
|
|
|
|
24883
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
24884
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
24885
|
|
|
|
|
|
|
|
24886
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
24887
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
24888
|
|
|
|
|
|
|
|
24889
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
24890
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
24891
|
|
|
|
|
|
|
|
24892
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
24893
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
24894
|
|
|
|
|
|
|
|
24895
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
24896
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
24897
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
24898
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
24899
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
24900
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
24901
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
24902
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
24903
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
24904
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
24905
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
24906
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
24907
|
|
|
|
|
|
|
|
24908
|
|
|
|
|
|
|
PDL_COMMENT("none") |
24909
|
0
|
|
|
|
|
|
} break;} |
24910
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
24911
|
|
|
|
|
|
|
} |
24912
|
|
|
|
|
|
|
} |
24913
|
|
|
|
|
|
|
{ |
24914
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","coffsets1","crowids1","cwhich1","coffsets2","crowids2","cwhich2","dists"}; |
24915
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,1,1,1,1,1,1,1}; |
24916
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::clusterdistancesenc"; |
24917
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
24918
|
|
|
|
|
|
|
__funcname, __parnames, 10 |
24919
|
|
|
|
|
|
|
}; |
24920
|
|
|
|
|
|
|
|
24921
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
24922
|
|
|
|
|
|
|
__realdims,__creating,10, |
24923
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
24924
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
24925
|
|
|
|
|
|
|
0 ); |
24926
|
|
|
|
|
|
|
} |
24927
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
24928
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
24929
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
24930
|
|
|
|
|
|
|
} |
24931
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24932
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
24933
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
24934
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
24935
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24936
|
|
|
|
|
|
|
} |
24937
|
|
|
|
|
|
|
} |
24938
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24939
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
24940
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
24941
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
24942
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24943
|
|
|
|
|
|
|
} |
24944
|
|
|
|
|
|
|
} |
24945
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
24946
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
24947
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
24948
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
24949
|
|
|
|
|
|
|
} |
24950
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24951
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
24952
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
24953
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
24954
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24955
|
|
|
|
|
|
|
} |
24956
|
|
|
|
|
|
|
} |
24957
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24958
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
24959
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
24960
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
24961
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24962
|
|
|
|
|
|
|
} |
24963
|
|
|
|
|
|
|
} |
24964
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
24965
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
24966
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
24967
|
|
|
|
|
|
|
} |
24968
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24969
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
24970
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
24971
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
24972
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24973
|
|
|
|
|
|
|
} |
24974
|
|
|
|
|
|
|
} |
24975
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
24976
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
24977
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__k1_size <= 1) __privtrans->__k1_size = 1; |
|
|
0
|
|
|
|
|
|
24978
|
|
|
|
|
|
|
} |
24979
|
0
|
0
|
|
|
|
|
if(__privtrans->__k1_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__k1_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24980
|
0
|
|
|
|
|
|
__privtrans->__k1_size = ((__privtrans->pdls[3]))->dims[0]; |
24981
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__k1_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
24982
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
24983
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24984
|
|
|
|
|
|
|
} |
24985
|
|
|
|
|
|
|
} |
24986
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 1) { |
24987
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__nc1_size <= 1) __privtrans->__nc1_size = 1; |
|
|
0
|
|
|
|
|
|
24988
|
|
|
|
|
|
|
} |
24989
|
0
|
0
|
|
|
|
|
if(__privtrans->__nc1_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nc1_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
24990
|
0
|
|
|
|
|
|
__privtrans->__nc1_size = ((__privtrans->pdls[4]))->dims[0]; |
24991
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nc1_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
24992
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
24993
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
24994
|
|
|
|
|
|
|
} |
24995
|
|
|
|
|
|
|
} |
24996
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
24997
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 1) { |
24998
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__ncmps_size <= 1) __privtrans->__ncmps_size = 1; |
|
|
0
|
|
|
|
|
|
24999
|
|
|
|
|
|
|
} |
25000
|
0
|
0
|
|
|
|
|
if(__privtrans->__ncmps_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__ncmps_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25001
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = ((__privtrans->pdls[5]))->dims[0]; |
25002
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__ncmps_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
25003
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
25004
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
25005
|
|
|
|
|
|
|
} |
25006
|
|
|
|
|
|
|
} |
25007
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->ndims < 1) { |
25008
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[6]))->ndims < 1 && __privtrans->__k2_size <= 1) __privtrans->__k2_size = 1; |
|
|
0
|
|
|
|
|
|
25009
|
|
|
|
|
|
|
} |
25010
|
0
|
0
|
|
|
|
|
if(__privtrans->__k2_size == -1 || (((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__k2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25011
|
0
|
|
|
|
|
|
__privtrans->__k2_size = ((__privtrans->pdls[6]))->dims[0]; |
25012
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__k2_size != ((__privtrans->pdls[6]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
25013
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->dims[0] != 1) { |
25014
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
25015
|
|
|
|
|
|
|
} |
25016
|
|
|
|
|
|
|
} |
25017
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->ndims < 1) { |
25018
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[7]))->ndims < 1 && __privtrans->__nc2_size <= 1) __privtrans->__nc2_size = 1; |
|
|
0
|
|
|
|
|
|
25019
|
|
|
|
|
|
|
} |
25020
|
0
|
0
|
|
|
|
|
if(__privtrans->__nc2_size == -1 || (((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__nc2_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25021
|
0
|
|
|
|
|
|
__privtrans->__nc2_size = ((__privtrans->pdls[7]))->dims[0]; |
25022
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__nc2_size != ((__privtrans->pdls[7]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
25023
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->dims[0] != 1) { |
25024
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
25025
|
|
|
|
|
|
|
} |
25026
|
|
|
|
|
|
|
} |
25027
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[7]))); |
25028
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[8]))->ndims < 1) { |
25029
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[8]))->ndims < 1 && __privtrans->__ncmps_size <= 1) __privtrans->__ncmps_size = 1; |
|
|
0
|
|
|
|
|
|
25030
|
|
|
|
|
|
|
} |
25031
|
0
|
0
|
|
|
|
|
if(__privtrans->__ncmps_size == -1 || (((__privtrans->pdls[8]))->ndims > 0 && __privtrans->__ncmps_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25032
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = ((__privtrans->pdls[8]))->dims[0]; |
25033
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[8]))->ndims > 0 && __privtrans->__ncmps_size != ((__privtrans->pdls[8]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
25034
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[8]))->dims[0] != 1) { |
25035
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
25036
|
|
|
|
|
|
|
} |
25037
|
|
|
|
|
|
|
} |
25038
|
0
|
0
|
|
|
|
|
if(!__creating[9]) { |
25039
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[9]))->ndims < 1) { |
25040
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[9]))->ndims < 1 && __privtrans->__ncmps_size <= 1) __privtrans->__ncmps_size = 1; |
|
|
0
|
|
|
|
|
|
25041
|
|
|
|
|
|
|
} |
25042
|
0
|
0
|
|
|
|
|
if(__privtrans->__ncmps_size == -1 || (((__privtrans->pdls[9]))->ndims > 0 && __privtrans->__ncmps_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25043
|
0
|
|
|
|
|
|
__privtrans->__ncmps_size = ((__privtrans->pdls[9]))->dims[0]; |
25044
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[9]))->ndims > 0 && __privtrans->__ncmps_size != ((__privtrans->pdls[9]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
25045
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[9]))->dims[0] != 1) { |
25046
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in clusterdistancesenc:" "Wrong dims\n"); |
25047
|
|
|
|
|
|
|
} |
25048
|
|
|
|
|
|
|
} |
25049
|
|
|
|
|
|
|
} else { |
25050
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__ncmps_size; |
25051
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,9,dims,0); |
25052
|
|
|
|
|
|
|
} |
25053
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
25054
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
25055
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
25056
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
25057
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25058
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
25059
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
25060
|
|
|
|
|
|
|
) { |
25061
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
25062
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
25063
|
|
|
|
|
|
|
} |
25064
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25065
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
25066
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
25067
|
|
|
|
|
|
|
) { |
25068
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
25069
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
25070
|
|
|
|
|
|
|
} |
25071
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25072
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
25073
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
25074
|
|
|
|
|
|
|
) { |
25075
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
25076
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
25077
|
|
|
|
|
|
|
} |
25078
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25079
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
25080
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
25081
|
|
|
|
|
|
|
) { |
25082
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
25083
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
25084
|
|
|
|
|
|
|
} |
25085
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25086
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
25087
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
25088
|
|
|
|
|
|
|
) { |
25089
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
25090
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
25091
|
|
|
|
|
|
|
} |
25092
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25093
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
25094
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
25095
|
|
|
|
|
|
|
) { |
25096
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
25097
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
25098
|
|
|
|
|
|
|
} |
25099
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25100
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
25101
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
25102
|
|
|
|
|
|
|
) { |
25103
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
25104
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
25105
|
|
|
|
|
|
|
} |
25106
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25107
|
0
|
0
|
|
|
|
|
__privtrans->pdls[7]->hdrsv && |
25108
|
0
|
|
|
|
|
|
(__privtrans->pdls[7]->state & PDL_HDRCPY) |
25109
|
|
|
|
|
|
|
) { |
25110
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[7]->hdrsv; |
25111
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0); |
25112
|
|
|
|
|
|
|
} |
25113
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25114
|
0
|
0
|
|
|
|
|
__privtrans->pdls[8]->hdrsv && |
25115
|
0
|
|
|
|
|
|
(__privtrans->pdls[8]->state & PDL_HDRCPY) |
25116
|
|
|
|
|
|
|
) { |
25117
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[8]->hdrsv; |
25118
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[8]->state & PDL_HDRCPY) != 0); |
25119
|
|
|
|
|
|
|
} |
25120
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
25121
|
0
|
0
|
|
|
|
|
!__creating[9] && |
25122
|
0
|
0
|
|
|
|
|
__privtrans->pdls[9]->hdrsv && |
25123
|
0
|
|
|
|
|
|
(__privtrans->pdls[9]->state & PDL_HDRCPY) |
25124
|
|
|
|
|
|
|
) { |
25125
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[9]->hdrsv; |
25126
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[9]->state & PDL_HDRCPY) != 0); |
25127
|
|
|
|
|
|
|
} |
25128
|
0
|
0
|
|
|
|
|
if (hdrp) { |
25129
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
25130
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
25131
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
25132
|
|
|
|
|
|
|
int count; |
25133
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
25134
|
0
|
|
|
|
|
|
dSP; |
25135
|
0
|
|
|
|
|
|
ENTER ; |
25136
|
0
|
|
|
|
|
|
SAVETMPS ; |
25137
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
25138
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
25139
|
0
|
|
|
|
|
|
PUTBACK ; |
25140
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
25141
|
0
|
|
|
|
|
|
SPAGAIN ; |
25142
|
0
|
0
|
|
|
|
|
if(count != 1) |
25143
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
25144
|
|
|
|
|
|
|
|
25145
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
25146
|
|
|
|
|
|
|
|
25147
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
25148
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
25149
|
|
|
|
|
|
|
} |
25150
|
|
|
|
|
|
|
|
25151
|
0
|
0
|
|
|
|
|
FREETMPS ; |
25152
|
0
|
|
|
|
|
|
LEAVE ; |
25153
|
|
|
|
|
|
|
|
25154
|
|
|
|
|
|
|
|
25155
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
25156
|
|
|
|
|
|
|
|
25157
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[9]->hdrsv != hdrp ){ |
25158
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[9]->hdrsv && __privtrans->pdls[9]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
25159
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[9]->hdrsv ); |
25160
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
25161
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
25162
|
0
|
|
|
|
|
|
__privtrans->pdls[9]->hdrsv = hdr_copy; |
25163
|
|
|
|
|
|
|
} |
25164
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
25165
|
0
|
|
|
|
|
|
__privtrans->pdls[9]->state |= PDL_HDRCPY; |
25166
|
|
|
|
|
|
|
|
25167
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
25168
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
25169
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
25170
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
25171
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
25172
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
25173
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
25174
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
25175
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
25176
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
25177
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
25178
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
25179
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
25180
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
25181
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
25182
|
0
|
|
|
|
|
|
__privtrans->__inc_coffsets1_k1 = 0; else |
25183
|
0
|
0
|
|
|
|
|
__privtrans->__inc_coffsets1_k1 = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25184
|
0
|
|
|
|
|
|
__privtrans->__inc_crowids1_nc1 = 0; else |
25185
|
0
|
0
|
|
|
|
|
__privtrans->__inc_crowids1_nc1 = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
25186
|
0
|
|
|
|
|
|
__privtrans->__inc_cwhich1_ncmps = 0; else |
25187
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cwhich1_ncmps = PDL_REPRINC(__privtrans->pdls[5],0);if(__privtrans->pdls[6]->ndims <= 0 || __privtrans->pdls[6]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25188
|
0
|
|
|
|
|
|
__privtrans->__inc_coffsets2_k2 = 0; else |
25189
|
0
|
0
|
|
|
|
|
__privtrans->__inc_coffsets2_k2 = PDL_REPRINC(__privtrans->pdls[6],0);if(__privtrans->pdls[7]->ndims <= 0 || __privtrans->pdls[7]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25190
|
0
|
|
|
|
|
|
__privtrans->__inc_crowids2_nc2 = 0; else |
25191
|
0
|
0
|
|
|
|
|
__privtrans->__inc_crowids2_nc2 = __privtrans->pdls[7]->dimincs[0];if(__privtrans->pdls[8]->ndims <= 0 || __privtrans->pdls[8]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
25192
|
0
|
|
|
|
|
|
__privtrans->__inc_cwhich2_ncmps = 0; else |
25193
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cwhich2_ncmps = PDL_REPRINC(__privtrans->pdls[8],0);if(__privtrans->pdls[9]->ndims <= 0 || __privtrans->pdls[9]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
25194
|
0
|
|
|
|
|
|
__privtrans->__inc_dists_ncmps = 0; else |
25195
|
0
|
0
|
|
|
|
|
__privtrans->__inc_dists_ncmps = PDL_REPRINC(__privtrans->pdls[9],0); __privtrans->__ddone = 1; |
25196
|
|
|
|
|
|
|
} |
25197
|
0
|
|
|
|
|
|
} |
25198
|
|
|
|
|
|
|
|
25199
|
|
|
|
|
|
|
|
25200
|
0
|
|
|
|
|
|
pdl_trans * pdl_clusterdistancesenc_copy(pdl_trans *__tr ) { |
25201
|
|
|
|
|
|
|
int __dim; |
25202
|
0
|
|
|
|
|
|
pdl_clusterdistancesenc_struct *__privtrans = (pdl_clusterdistancesenc_struct *) __tr; |
25203
|
|
|
|
|
|
|
|
25204
|
|
|
|
|
|
|
{ |
25205
|
0
|
|
|
|
|
|
pdl_clusterdistancesenc_struct *__copy = malloc(sizeof(pdl_clusterdistancesenc_struct)); |
25206
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
25207
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
25208
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
25209
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
25210
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
25211
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
25212
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
25213
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
25214
|
|
|
|
|
|
|
{int i; |
25215
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
25216
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
25217
|
|
|
|
|
|
|
} |
25218
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
25219
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
25220
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_coffsets1_k1=__copy->__inc_coffsets1_k1;__privtrans->__inc_crowids1_nc1=__copy->__inc_crowids1_nc1;__privtrans->__inc_cwhich1_ncmps=__copy->__inc_cwhich1_ncmps;__privtrans->__inc_coffsets2_k2=__copy->__inc_coffsets2_k2;__privtrans->__inc_crowids2_nc2=__copy->__inc_crowids2_nc2;__privtrans->__inc_cwhich2_ncmps=__copy->__inc_cwhich2_ncmps;__privtrans->__inc_dists_ncmps=__copy->__inc_dists_ncmps;__copy->__d_size=__privtrans->__d_size;__copy->__nc1_size=__privtrans->__nc1_size;__copy->__n_size=__privtrans->__n_size;__copy->__nc2_size=__privtrans->__nc2_size;__copy->__k1_size=__privtrans->__k1_size;__copy->__k2_size=__privtrans->__k2_size;__copy->__ncmps_size=__privtrans->__ncmps_size; |
25221
|
|
|
|
|
|
|
} |
25222
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
25223
|
|
|
|
|
|
|
} |
25224
|
|
|
|
|
|
|
} |
25225
|
|
|
|
|
|
|
|
25226
|
|
|
|
|
|
|
|
25227
|
0
|
|
|
|
|
|
void pdl_clusterdistancesenc_readdata(pdl_trans *__tr ) { |
25228
|
|
|
|
|
|
|
int __dim; |
25229
|
0
|
|
|
|
|
|
pdl_clusterdistancesenc_struct *__privtrans = (pdl_clusterdistancesenc_struct *) __tr; |
25230
|
|
|
|
|
|
|
|
25231
|
|
|
|
|
|
|
{ |
25232
|
0
|
|
|
|
|
|
{register PDL_Indx __ncmps_size = __privtrans->__ncmps_size; |
25233
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
25234
|
|
|
|
|
|
|
|
25235
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
25236
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
25237
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
25238
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
25239
|
|
|
|
|
|
|
|
25240
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
25241
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
25242
|
|
|
|
|
|
|
|
25243
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
25244
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
25245
|
|
|
|
|
|
|
|
25246
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
25247
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
25248
|
|
|
|
|
|
|
|
25249
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
25250
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
25251
|
|
|
|
|
|
|
|
25252
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
25253
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
25254
|
|
|
|
|
|
|
|
25255
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
25256
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
25257
|
|
|
|
|
|
|
|
25258
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
25259
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
25260
|
|
|
|
|
|
|
|
25261
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
25262
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
25263
|
|
|
|
|
|
|
|
25264
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
25265
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
25266
|
|
|
|
|
|
|
|
25267
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
25268
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
25269
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
25270
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
25271
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
25272
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
25273
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
25274
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
25275
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
25276
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
25277
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
25278
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
25279
|
|
|
|
|
|
|
|
25280
|
|
|
|
|
|
|
|
25281
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
25282
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
25283
|
0
|
|
|
|
|
|
int transpose=0; |
25284
|
|
|
|
|
|
|
|
25285
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
25286
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
25287
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
25288
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
25289
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
25290
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
25291
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
25292
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
25293
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
25294
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
25295
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
25296
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
25297
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
25298
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
25299
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
25300
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
25301
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
25302
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
25303
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
25304
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
25305
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
25306
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
25307
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
25308
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
25309
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
25310
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
25311
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
25312
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
25313
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
25314
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
25315
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
25316
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
25317
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
25318
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
25319
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
25320
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
25321
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
25322
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
25323
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
25324
|
0
|
|
|
|
|
|
__tind2++ |
25325
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
25326
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
25327
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
25328
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
25329
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
25330
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
25331
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
25332
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
25333
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
25334
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
25335
|
|
|
|
|
|
|
) |
25336
|
|
|
|
|
|
|
{ |
25337
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
25338
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
25339
|
0
|
|
|
|
|
|
__tind1++ |
25340
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
25341
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
25342
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
25343
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
25344
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
25345
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
25346
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
25347
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
25348
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
25349
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
25350
|
|
|
|
|
|
|
) |
25351
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
25352
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
25353
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
25354
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
25355
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
25356
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25357
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25358
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
25359
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
25360
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
25361
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
25362
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
25363
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
25364
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
25365
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
25366
|
|
|
|
|
|
|
|
25367
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
25368
|
|
|
|
|
|
|
len1, len2, |
25369
|
|
|
|
|
|
|
crowids1p, crowids2p, |
25370
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
25371
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
25372
|
|
|
|
|
|
|
|
25373
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
25374
|
|
|
|
|
|
|
} |
25375
|
|
|
|
|
|
|
} |
25376
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
25377
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
25378
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
25379
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
25380
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
25381
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
25382
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
25383
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
25384
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
25385
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
25386
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
25387
|
|
|
|
|
|
|
/*-- cleanup --*/ |
25388
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
25389
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
25390
|
|
|
|
|
|
|
|
25391
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
25392
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
25393
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
25394
|
|
|
|
|
|
|
|
25395
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
25396
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
25397
|
|
|
|
|
|
|
|
25398
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
25399
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
25400
|
|
|
|
|
|
|
|
25401
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
25402
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
25403
|
|
|
|
|
|
|
|
25404
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
25405
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
25406
|
|
|
|
|
|
|
|
25407
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
25408
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
25409
|
|
|
|
|
|
|
|
25410
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
25411
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
25412
|
|
|
|
|
|
|
|
25413
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
25414
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
25415
|
|
|
|
|
|
|
|
25416
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
25417
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
25418
|
|
|
|
|
|
|
|
25419
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
25420
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
25421
|
|
|
|
|
|
|
|
25422
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
25423
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
25424
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
25425
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
25426
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
25427
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
25428
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
25429
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
25430
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
25431
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
25432
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
25433
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
25434
|
|
|
|
|
|
|
|
25435
|
|
|
|
|
|
|
|
25436
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
25437
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
25438
|
0
|
|
|
|
|
|
int transpose=0; |
25439
|
|
|
|
|
|
|
|
25440
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
25441
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
25442
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
25443
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
25444
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
25445
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
25446
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
25447
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
25448
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
25449
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
25450
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
25451
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
25452
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
25453
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
25454
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
25455
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
25456
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
25457
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
25458
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
25459
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
25460
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
25461
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
25462
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
25463
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
25464
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
25465
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
25466
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
25467
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
25468
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
25469
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
25470
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
25471
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
25472
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
25473
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
25474
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
25475
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
25476
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
25477
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
25478
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
25479
|
0
|
|
|
|
|
|
__tind2++ |
25480
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
25481
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
25482
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
25483
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
25484
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
25485
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
25486
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
25487
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
25488
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
25489
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
25490
|
|
|
|
|
|
|
) |
25491
|
|
|
|
|
|
|
{ |
25492
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
25493
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
25494
|
0
|
|
|
|
|
|
__tind1++ |
25495
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
25496
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
25497
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
25498
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
25499
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
25500
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
25501
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
25502
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
25503
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
25504
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
25505
|
|
|
|
|
|
|
) |
25506
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
25507
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
25508
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
25509
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
25510
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
25511
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25512
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25513
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
25514
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
25515
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
25516
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
25517
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
25518
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
25519
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
25520
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
25521
|
|
|
|
|
|
|
|
25522
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
25523
|
|
|
|
|
|
|
len1, len2, |
25524
|
|
|
|
|
|
|
crowids1p, crowids2p, |
25525
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
25526
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
25527
|
|
|
|
|
|
|
|
25528
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
25529
|
|
|
|
|
|
|
} |
25530
|
|
|
|
|
|
|
} |
25531
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
25532
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
25533
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
25534
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
25535
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
25536
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
25537
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
25538
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
25539
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
25540
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
25541
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
25542
|
|
|
|
|
|
|
/*-- cleanup --*/ |
25543
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
25544
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
25545
|
|
|
|
|
|
|
|
25546
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
25547
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
25548
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
25549
|
|
|
|
|
|
|
|
25550
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
25551
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
25552
|
|
|
|
|
|
|
|
25553
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
25554
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
25555
|
|
|
|
|
|
|
|
25556
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
25557
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
25558
|
|
|
|
|
|
|
|
25559
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
25560
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
25561
|
|
|
|
|
|
|
|
25562
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
25563
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
25564
|
|
|
|
|
|
|
|
25565
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
25566
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
25567
|
|
|
|
|
|
|
|
25568
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
25569
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
25570
|
|
|
|
|
|
|
|
25571
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
25572
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
25573
|
|
|
|
|
|
|
|
25574
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
25575
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
25576
|
|
|
|
|
|
|
|
25577
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
25578
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
25579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
25580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
25581
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
25582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
25583
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
25584
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
25585
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
25586
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
25587
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
25588
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
25589
|
|
|
|
|
|
|
|
25590
|
|
|
|
|
|
|
|
25591
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
25592
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
25593
|
0
|
|
|
|
|
|
int transpose=0; |
25594
|
|
|
|
|
|
|
|
25595
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
25596
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
25597
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
25598
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
25599
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
25600
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
25601
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
25602
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
25603
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
25604
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
25605
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
25606
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
25607
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
25608
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
25609
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
25610
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
25611
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
25612
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
25613
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
25614
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
25615
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
25616
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
25617
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
25618
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
25619
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
25620
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
25621
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
25622
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
25623
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
25624
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
25625
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
25626
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
25627
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
25628
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
25629
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
25630
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
25631
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
25632
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
25633
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
25634
|
0
|
|
|
|
|
|
__tind2++ |
25635
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
25636
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
25637
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
25638
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
25639
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
25640
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
25641
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
25642
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
25643
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
25644
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
25645
|
|
|
|
|
|
|
) |
25646
|
|
|
|
|
|
|
{ |
25647
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
25648
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
25649
|
0
|
|
|
|
|
|
__tind1++ |
25650
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
25651
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
25652
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
25653
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
25654
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
25655
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
25656
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
25657
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
25658
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
25659
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
25660
|
|
|
|
|
|
|
) |
25661
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
25662
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
25663
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
25664
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
25665
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
25666
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25667
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25668
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
25669
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
25670
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
25671
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
25672
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
25673
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
25674
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
25675
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
25676
|
|
|
|
|
|
|
|
25677
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
25678
|
|
|
|
|
|
|
len1, len2, |
25679
|
|
|
|
|
|
|
crowids1p, crowids2p, |
25680
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
25681
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
25682
|
|
|
|
|
|
|
|
25683
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
25684
|
|
|
|
|
|
|
} |
25685
|
|
|
|
|
|
|
} |
25686
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
25687
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
25688
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
25689
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
25690
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
25691
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
25692
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
25693
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
25694
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
25695
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
25696
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
25697
|
|
|
|
|
|
|
/*-- cleanup --*/ |
25698
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
25699
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
25700
|
|
|
|
|
|
|
|
25701
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
25702
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
25703
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
25704
|
|
|
|
|
|
|
|
25705
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
25706
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
25707
|
|
|
|
|
|
|
|
25708
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
25709
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
25710
|
|
|
|
|
|
|
|
25711
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
25712
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
25713
|
|
|
|
|
|
|
|
25714
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
25715
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
25716
|
|
|
|
|
|
|
|
25717
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
25718
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
25719
|
|
|
|
|
|
|
|
25720
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
25721
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
25722
|
|
|
|
|
|
|
|
25723
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
25724
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
25725
|
|
|
|
|
|
|
|
25726
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
25727
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
25728
|
|
|
|
|
|
|
|
25729
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
25730
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
25731
|
|
|
|
|
|
|
|
25732
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
25733
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
25734
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
25735
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
25736
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
25737
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
25738
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
25739
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
25740
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
25741
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
25742
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
25743
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
25744
|
|
|
|
|
|
|
|
25745
|
|
|
|
|
|
|
|
25746
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
25747
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
25748
|
0
|
|
|
|
|
|
int transpose=0; |
25749
|
|
|
|
|
|
|
|
25750
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
25751
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
25752
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
25753
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
25754
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
25755
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
25756
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
25757
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
25758
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
25759
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
25760
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
25761
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
25762
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
25763
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
25764
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
25765
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
25766
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
25767
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
25768
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
25769
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
25770
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
25771
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
25772
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
25773
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
25774
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
25775
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
25776
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
25777
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
25778
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
25779
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
25780
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
25781
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
25782
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
25783
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
25784
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
25785
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
25786
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
25787
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
25788
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
25789
|
0
|
|
|
|
|
|
__tind2++ |
25790
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
25791
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
25792
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
25793
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
25794
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
25795
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
25796
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
25797
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
25798
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
25799
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
25800
|
|
|
|
|
|
|
) |
25801
|
|
|
|
|
|
|
{ |
25802
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
25803
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
25804
|
0
|
|
|
|
|
|
__tind1++ |
25805
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
25806
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
25807
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
25808
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
25809
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
25810
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
25811
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
25812
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
25813
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
25814
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
25815
|
|
|
|
|
|
|
) |
25816
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
25817
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
25818
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
25819
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
25820
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
25821
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25822
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25823
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
25824
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
25825
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
25826
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
25827
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
25828
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
25829
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
25830
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
25831
|
|
|
|
|
|
|
|
25832
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
25833
|
|
|
|
|
|
|
len1, len2, |
25834
|
|
|
|
|
|
|
crowids1p, crowids2p, |
25835
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
25836
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
25837
|
|
|
|
|
|
|
|
25838
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
25839
|
|
|
|
|
|
|
} |
25840
|
|
|
|
|
|
|
} |
25841
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
25842
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
25843
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
25844
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
25845
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
25846
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
25847
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
25848
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
25849
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
25850
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
25851
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
25852
|
|
|
|
|
|
|
/*-- cleanup --*/ |
25853
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
25854
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
25855
|
|
|
|
|
|
|
|
25856
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
25857
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
25858
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
25859
|
|
|
|
|
|
|
|
25860
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
25861
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
25862
|
|
|
|
|
|
|
|
25863
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
25864
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
25865
|
|
|
|
|
|
|
|
25866
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
25867
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
25868
|
|
|
|
|
|
|
|
25869
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
25870
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
25871
|
|
|
|
|
|
|
|
25872
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
25873
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
25874
|
|
|
|
|
|
|
|
25875
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
25876
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
25877
|
|
|
|
|
|
|
|
25878
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
25879
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
25880
|
|
|
|
|
|
|
|
25881
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
25882
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
25883
|
|
|
|
|
|
|
|
25884
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
25885
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
25886
|
|
|
|
|
|
|
|
25887
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
25888
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
25889
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
25890
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
25891
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
25892
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
25893
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
25894
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
25895
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
25896
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
25897
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
25898
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
25899
|
|
|
|
|
|
|
|
25900
|
|
|
|
|
|
|
|
25901
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
25902
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
25903
|
0
|
|
|
|
|
|
int transpose=0; |
25904
|
|
|
|
|
|
|
|
25905
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
25906
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
25907
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
25908
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
25909
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
25910
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
25911
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
25912
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
25913
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
25914
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
25915
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
25916
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
25917
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
25918
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
25919
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
25920
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
25921
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
25922
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
25923
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
25924
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
25925
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
25926
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
25927
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
25928
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
25929
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
25930
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
25931
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
25932
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
25933
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
25934
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
25935
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
25936
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
25937
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
25938
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
25939
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
25940
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
25941
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
25942
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
25943
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
25944
|
0
|
|
|
|
|
|
__tind2++ |
25945
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
25946
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
25947
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
25948
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
25949
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
25950
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
25951
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
25952
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
25953
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
25954
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
25955
|
|
|
|
|
|
|
) |
25956
|
|
|
|
|
|
|
{ |
25957
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
25958
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
25959
|
0
|
|
|
|
|
|
__tind1++ |
25960
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
25961
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
25962
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
25963
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
25964
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
25965
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
25966
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
25967
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
25968
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
25969
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
25970
|
|
|
|
|
|
|
) |
25971
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
25972
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
25973
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
25974
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
25975
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
25976
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25977
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
25978
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
25979
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
25980
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
25981
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
25982
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
25983
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
25984
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
25985
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
25986
|
|
|
|
|
|
|
|
25987
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
25988
|
|
|
|
|
|
|
len1, len2, |
25989
|
|
|
|
|
|
|
crowids1p, crowids2p, |
25990
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
25991
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
25992
|
|
|
|
|
|
|
|
25993
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
25994
|
|
|
|
|
|
|
} |
25995
|
|
|
|
|
|
|
} |
25996
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
25997
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
25998
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
25999
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
26000
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
26001
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
26002
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
26003
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
26004
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
26005
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
26006
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
26007
|
|
|
|
|
|
|
/*-- cleanup --*/ |
26008
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
26009
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
26010
|
|
|
|
|
|
|
|
26011
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
26012
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26013
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26014
|
|
|
|
|
|
|
|
26015
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26016
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26017
|
|
|
|
|
|
|
|
26018
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26019
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26020
|
|
|
|
|
|
|
|
26021
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26022
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
26023
|
|
|
|
|
|
|
|
26024
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26025
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26026
|
|
|
|
|
|
|
|
26027
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
26028
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
26029
|
|
|
|
|
|
|
|
26030
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
26031
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
26032
|
|
|
|
|
|
|
|
26033
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
26034
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
26035
|
|
|
|
|
|
|
|
26036
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
26037
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
26038
|
|
|
|
|
|
|
|
26039
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
26040
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
26041
|
|
|
|
|
|
|
|
26042
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26043
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26044
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
26045
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
26046
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26047
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26048
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
26049
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
26050
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
26051
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
26052
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
26053
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
26054
|
|
|
|
|
|
|
|
26055
|
|
|
|
|
|
|
|
26056
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
26057
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
26058
|
0
|
|
|
|
|
|
int transpose=0; |
26059
|
|
|
|
|
|
|
|
26060
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
26061
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
26062
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
26063
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
26064
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
26065
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
26066
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
26067
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
26068
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
26069
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
26070
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
26071
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
26072
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
26073
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
26074
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
26075
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
26076
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
26077
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
26078
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
26079
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
26080
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
26081
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
26082
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
26083
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
26084
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
26085
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
26086
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
26087
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
26088
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
26089
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
26090
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
26091
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
26092
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
26093
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
26094
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
26095
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
26096
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
26097
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
26098
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
26099
|
0
|
|
|
|
|
|
__tind2++ |
26100
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
26101
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
26102
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
26103
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
26104
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
26105
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
26106
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
26107
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
26108
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
26109
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
26110
|
|
|
|
|
|
|
) |
26111
|
|
|
|
|
|
|
{ |
26112
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
26113
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
26114
|
0
|
|
|
|
|
|
__tind1++ |
26115
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
26116
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
26117
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
26118
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
26119
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
26120
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
26121
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
26122
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
26123
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
26124
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
26125
|
|
|
|
|
|
|
) |
26126
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
26127
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
26128
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
26129
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
26130
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
26131
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
26132
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
26133
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
26134
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
26135
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
26136
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
26137
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
26138
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
26139
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
26140
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
26141
|
|
|
|
|
|
|
|
26142
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
26143
|
|
|
|
|
|
|
len1, len2, |
26144
|
|
|
|
|
|
|
crowids1p, crowids2p, |
26145
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
26146
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
26147
|
|
|
|
|
|
|
|
26148
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
26149
|
|
|
|
|
|
|
} |
26150
|
|
|
|
|
|
|
} |
26151
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
26152
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
26153
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
26154
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
26155
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
26156
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
26157
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
26158
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
26159
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
26160
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
26161
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
26162
|
|
|
|
|
|
|
/*-- cleanup --*/ |
26163
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
26164
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
26165
|
|
|
|
|
|
|
|
26166
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
26167
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26168
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26169
|
|
|
|
|
|
|
|
26170
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26171
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26172
|
|
|
|
|
|
|
|
26173
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26174
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26175
|
|
|
|
|
|
|
|
26176
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26177
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
26178
|
|
|
|
|
|
|
|
26179
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26180
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26181
|
|
|
|
|
|
|
|
26182
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
26183
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
26184
|
|
|
|
|
|
|
|
26185
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
26186
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
26187
|
|
|
|
|
|
|
|
26188
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
26189
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
26190
|
|
|
|
|
|
|
|
26191
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
26192
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
26193
|
|
|
|
|
|
|
|
26194
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
26195
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
26196
|
|
|
|
|
|
|
|
26197
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26198
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26199
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
26200
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
26201
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26202
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26203
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
26204
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
26205
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
26206
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
26207
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
26208
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
26209
|
|
|
|
|
|
|
|
26210
|
|
|
|
|
|
|
|
26211
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
26212
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
26213
|
0
|
|
|
|
|
|
int transpose=0; |
26214
|
|
|
|
|
|
|
|
26215
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
26216
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
26217
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
26218
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
26219
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
26220
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
26221
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
26222
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
26223
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
26224
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
26225
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
26226
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
26227
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
26228
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
26229
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
26230
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
26231
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
26232
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
26233
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
26234
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
26235
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
26236
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
26237
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
26238
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
26239
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
26240
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
26241
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
26242
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
26243
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
26244
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
26245
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
26246
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
26247
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
26248
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
26249
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
26250
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
26251
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
26252
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
26253
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
26254
|
0
|
|
|
|
|
|
__tind2++ |
26255
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
26256
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
26257
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
26258
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
26259
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
26260
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
26261
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
26262
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
26263
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
26264
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
26265
|
|
|
|
|
|
|
) |
26266
|
|
|
|
|
|
|
{ |
26267
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
26268
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
26269
|
0
|
|
|
|
|
|
__tind1++ |
26270
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
26271
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
26272
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
26273
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
26274
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
26275
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
26276
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
26277
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
26278
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
26279
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
26280
|
|
|
|
|
|
|
) |
26281
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
26282
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
26283
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
26284
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
26285
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
26286
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
26287
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
26288
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
26289
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
26290
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
26291
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
26292
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
26293
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
26294
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
26295
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
26296
|
|
|
|
|
|
|
|
26297
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
26298
|
|
|
|
|
|
|
len1, len2, |
26299
|
|
|
|
|
|
|
crowids1p, crowids2p, |
26300
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
26301
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
26302
|
|
|
|
|
|
|
|
26303
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
26304
|
|
|
|
|
|
|
} |
26305
|
|
|
|
|
|
|
} |
26306
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
26307
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
26308
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
26309
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
26310
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
26311
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
26312
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
26313
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
26314
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
26315
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
26316
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
26317
|
|
|
|
|
|
|
/*-- cleanup --*/ |
26318
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
26319
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
26320
|
|
|
|
|
|
|
|
26321
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
26322
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26323
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26324
|
|
|
|
|
|
|
|
26325
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26326
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26327
|
|
|
|
|
|
|
|
26328
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26329
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26330
|
|
|
|
|
|
|
|
26331
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26332
|
0
|
|
|
|
|
|
PDL_Long * coffsets1_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
26333
|
|
|
|
|
|
|
|
26334
|
0
|
0
|
|
|
|
|
PDL_Long * crowids1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26335
|
0
|
|
|
|
|
|
PDL_Long * crowids1_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26336
|
|
|
|
|
|
|
|
26337
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich1_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
26338
|
0
|
|
|
|
|
|
PDL_Long * cwhich1_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
26339
|
|
|
|
|
|
|
|
26340
|
0
|
0
|
|
|
|
|
PDL_Long * coffsets2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
26341
|
0
|
|
|
|
|
|
PDL_Long * coffsets2_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
26342
|
|
|
|
|
|
|
|
26343
|
0
|
0
|
|
|
|
|
PDL_Long * crowids2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
26344
|
0
|
|
|
|
|
|
PDL_Long * crowids2_physdatap = ((PDL_Long *)((__privtrans->pdls[7])->data)); |
26345
|
|
|
|
|
|
|
|
26346
|
0
|
0
|
|
|
|
|
PDL_Long * cwhich2_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8])))); |
|
|
0
|
|
|
|
|
|
26347
|
0
|
|
|
|
|
|
PDL_Long * cwhich2_physdatap = ((PDL_Long *)((__privtrans->pdls[8])->data)); |
26348
|
|
|
|
|
|
|
|
26349
|
0
|
0
|
|
|
|
|
PDL_Double * dists_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9])))); |
|
|
0
|
|
|
|
|
|
26350
|
0
|
|
|
|
|
|
PDL_Double * dists_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data)); |
26351
|
|
|
|
|
|
|
|
26352
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26353
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26354
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich2_ncmps = __privtrans->__inc_cwhich2_ncmps; |
26355
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets2_k2 = __privtrans->__inc_coffsets2_k2; |
26356
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26357
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26358
|
0
|
|
|
|
|
|
register PDL_Indx __inc_dists_ncmps = __privtrans->__inc_dists_ncmps; |
26359
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
26360
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids2_nc2 = __privtrans->__inc_crowids2_nc2; |
26361
|
0
|
|
|
|
|
|
register PDL_Indx __inc_coffsets1_k1 = __privtrans->__inc_coffsets1_k1; |
26362
|
0
|
|
|
|
|
|
register PDL_Indx __inc_crowids1_nc1 = __privtrans->__inc_crowids1_nc1; |
26363
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cwhich1_ncmps = __privtrans->__inc_cwhich1_ncmps; |
26364
|
|
|
|
|
|
|
|
26365
|
|
|
|
|
|
|
|
26366
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
26367
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
26368
|
0
|
|
|
|
|
|
int transpose=0; |
26369
|
|
|
|
|
|
|
|
26370
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
26371
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
26372
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
26373
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
26374
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
26375
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
26376
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
26377
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
26378
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
26379
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
26380
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
26381
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
26382
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
26383
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
26384
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
26385
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8]; |
26386
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9]; |
26387
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
26388
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
26389
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
26390
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
26391
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
26392
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
26393
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
26394
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
26395
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8]; |
26396
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9]; |
26397
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
26398
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
26399
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
26400
|
0
|
|
|
|
|
|
coffsets1_datap += __offsp[3]; |
26401
|
0
|
|
|
|
|
|
crowids1_datap += __offsp[4]; |
26402
|
0
|
|
|
|
|
|
cwhich1_datap += __offsp[5]; |
26403
|
0
|
|
|
|
|
|
coffsets2_datap += __offsp[6]; |
26404
|
0
|
|
|
|
|
|
crowids2_datap += __offsp[7]; |
26405
|
0
|
|
|
|
|
|
cwhich2_datap += __offsp[8]; |
26406
|
0
|
|
|
|
|
|
dists_datap += __offsp[9]; |
26407
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
26408
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
26409
|
0
|
|
|
|
|
|
__tind2++ |
26410
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
26411
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
26412
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
26413
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
26414
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
26415
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
26416
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
26417
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
26418
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc1_8 - __tinc0_8 * __tdims0 |
26419
|
0
|
|
|
|
|
|
,dists_datap += __tinc1_9 - __tinc0_9 * __tdims0 |
26420
|
|
|
|
|
|
|
) |
26421
|
|
|
|
|
|
|
{ |
26422
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
26423
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
26424
|
0
|
|
|
|
|
|
__tind1++ |
26425
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
26426
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
26427
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
26428
|
0
|
|
|
|
|
|
,coffsets1_datap += __tinc0_3 |
26429
|
0
|
|
|
|
|
|
,crowids1_datap += __tinc0_4 |
26430
|
0
|
|
|
|
|
|
,cwhich1_datap += __tinc0_5 |
26431
|
0
|
|
|
|
|
|
,coffsets2_datap += __tinc0_6 |
26432
|
0
|
|
|
|
|
|
,crowids2_datap += __tinc0_7 |
26433
|
0
|
|
|
|
|
|
,cwhich2_datap += __tinc0_8 |
26434
|
0
|
|
|
|
|
|
,dists_datap += __tinc0_9 |
26435
|
|
|
|
|
|
|
) |
26436
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
26437
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
26438
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
26439
|
|
|
|
|
|
|
{PDL_COMMENT("Open ncmps") register PDL_Indx ncmps; |
26440
|
0
|
0
|
|
|
|
|
for(ncmps=0; ncmps<(__ncmps_size); ncmps++) { |
26441
|
0
|
0
|
|
|
|
|
int c1 = (cwhich1_datap)[0+(__inc_cwhich1_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
26442
|
0
|
0
|
|
|
|
|
int c2 = (cwhich2_datap)[0+(__inc_cwhich2_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") ; |
26443
|
0
|
|
|
|
|
|
int succ_c1=c1+1; |
26444
|
0
|
|
|
|
|
|
int succ_c2=c2+1; |
26445
|
0
|
0
|
|
|
|
|
int beg1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, c1))] PDL_COMMENT("ACCESS()") ; |
26446
|
0
|
0
|
|
|
|
|
int beg2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, c2))] PDL_COMMENT("ACCESS()") ; |
26447
|
0
|
0
|
|
|
|
|
int len1 = (coffsets1_datap)[0+(__inc_coffsets1_k1*PP_INDTERM(__privtrans->__k1_size, succ_c1))] PDL_COMMENT("ACCESS()") - beg1; |
26448
|
0
|
0
|
|
|
|
|
int len2 = (coffsets2_datap)[0+(__inc_coffsets2_k2*PP_INDTERM(__privtrans->__k2_size, succ_c2))] PDL_COMMENT("ACCESS()") - beg2; |
26449
|
0
|
|
|
|
|
|
int *crowids1p = crowids1_datap + beg1; |
26450
|
0
|
|
|
|
|
|
int *crowids2p = crowids2_datap + beg2; |
26451
|
|
|
|
|
|
|
|
26452
|
0
|
0
|
|
|
|
|
(dists_datap)[0+(__inc_dists_ncmps*PP_INDTERM(__privtrans->__ncmps_size, ncmps))] PDL_COMMENT("ACCESS()") = clusterdistance(__privtrans->__n_size, __privtrans->__d_size, datapp, maskpp, weight_datap, |
26453
|
|
|
|
|
|
|
len1, len2, |
26454
|
|
|
|
|
|
|
crowids1p, crowids2p, |
26455
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
26456
|
|
|
|
|
|
|
}} PDL_COMMENT("Close ncmps") |
26457
|
|
|
|
|
|
|
|
26458
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
26459
|
|
|
|
|
|
|
} |
26460
|
|
|
|
|
|
|
} |
26461
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
26462
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
26463
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
26464
|
0
|
|
|
|
|
|
coffsets1_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
26465
|
0
|
|
|
|
|
|
crowids1_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
26466
|
0
|
|
|
|
|
|
cwhich1_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
26467
|
0
|
|
|
|
|
|
coffsets2_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
26468
|
0
|
|
|
|
|
|
crowids2_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
26469
|
0
|
|
|
|
|
|
cwhich2_datap -= __tinc1_8 * __tdims1 + __offsp[8]; |
26470
|
0
|
|
|
|
|
|
dists_datap -= __tinc1_9 * __tdims1 + __offsp[9]; |
26471
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
26472
|
|
|
|
|
|
|
/*-- cleanup --*/ |
26473
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
26474
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
26475
|
|
|
|
|
|
|
|
26476
|
0
|
|
|
|
|
|
} break;} |
26477
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
26478
|
|
|
|
|
|
|
} |
26479
|
|
|
|
|
|
|
} |
26480
|
|
|
|
|
|
|
} |
26481
|
|
|
|
|
|
|
|
26482
|
|
|
|
|
|
|
|
26483
|
|
|
|
|
|
|
|
26484
|
|
|
|
|
|
|
|
26485
|
0
|
|
|
|
|
|
void pdl_clusterdistancesenc_free(pdl_trans *__tr ) { |
26486
|
|
|
|
|
|
|
int __dim; |
26487
|
0
|
|
|
|
|
|
pdl_clusterdistancesenc_struct *__privtrans = (pdl_clusterdistancesenc_struct *) __tr; |
26488
|
|
|
|
|
|
|
|
26489
|
|
|
|
|
|
|
{ |
26490
|
|
|
|
|
|
|
|
26491
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
26492
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
26493
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
26494
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
26495
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;; |
26496
|
|
|
|
|
|
|
} |
26497
|
|
|
|
|
|
|
|
26498
|
|
|
|
|
|
|
} |
26499
|
0
|
|
|
|
|
|
} |
26500
|
|
|
|
|
|
|
|
26501
|
|
|
|
|
|
|
|
26502
|
|
|
|
|
|
|
|
26503
|
|
|
|
|
|
|
|
26504
|
|
|
|
|
|
|
static char pdl_clusterdistancesenc_vtable_flags[] = |
26505
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
26506
|
|
|
|
|
|
|
pdl_transvtable pdl_clusterdistancesenc_vtable = { |
26507
|
|
|
|
|
|
|
0,0, 9, 10, pdl_clusterdistancesenc_vtable_flags, |
26508
|
|
|
|
|
|
|
pdl_clusterdistancesenc_redodims, pdl_clusterdistancesenc_readdata, NULL, |
26509
|
|
|
|
|
|
|
pdl_clusterdistancesenc_free,NULL,NULL,pdl_clusterdistancesenc_copy, |
26510
|
|
|
|
|
|
|
sizeof(pdl_clusterdistancesenc_struct),"pdl_clusterdistancesenc_vtable" |
26511
|
|
|
|
|
|
|
}; |
26512
|
|
|
|
|
|
|
|
26513
|
|
|
|
|
|
|
typedef struct pdl_getclusterwsum_struct { |
26514
|
|
|
|
|
|
|
PDL_TRANS_START(5); |
26515
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_clusterwts_k;PDL_Indx __inc_clusterwts_n;PDL_Indx __inc_cdata_d;PDL_Indx __inc_cdata_k;PDL_Indx __inc_cmask_d;PDL_Indx __inc_cmask_k;PDL_Indx __n_size;PDL_Indx __d_size;PDL_Indx __k_size; |
26516
|
|
|
|
|
|
|
|
26517
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
26518
|
|
|
|
|
|
|
} pdl_getclusterwsum_struct; |
26519
|
|
|
|
|
|
|
|
26520
|
0
|
|
|
|
|
|
void pdl_getclusterwsum_redodims(pdl_trans *__tr ) { |
26521
|
|
|
|
|
|
|
int __dim; |
26522
|
0
|
|
|
|
|
|
pdl_getclusterwsum_struct *__privtrans = (pdl_getclusterwsum_struct *) __tr; |
26523
|
|
|
|
|
|
|
|
26524
|
|
|
|
|
|
|
{ |
26525
|
|
|
|
|
|
|
PDL_Indx __creating[5]; |
26526
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
26527
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
26528
|
0
|
|
|
|
|
|
__privtrans->__k_size = -1; |
26529
|
0
|
|
|
|
|
|
__creating[0] = 0; |
26530
|
0
|
|
|
|
|
|
__creating[1] = 0; |
26531
|
0
|
|
|
|
|
|
__creating[2] = 0; |
26532
|
0
|
0
|
|
|
|
|
__creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]); |
|
|
0
|
|
|
|
|
|
26533
|
0
|
0
|
|
|
|
|
__creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]); |
|
|
0
|
|
|
|
|
|
26534
|
|
|
|
|
|
|
{ |
26535
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
26536
|
|
|
|
|
|
|
|
26537
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
26538
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
26539
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26540
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26541
|
|
|
|
|
|
|
|
26542
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26543
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26544
|
|
|
|
|
|
|
|
26545
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26546
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26547
|
|
|
|
|
|
|
|
26548
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26549
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26550
|
|
|
|
|
|
|
|
26551
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26552
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26553
|
|
|
|
|
|
|
|
26554
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26555
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26556
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26557
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26558
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26559
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26560
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26561
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26562
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26563
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26564
|
|
|
|
|
|
|
|
26565
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26566
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
26567
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26568
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26569
|
|
|
|
|
|
|
|
26570
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26571
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26572
|
|
|
|
|
|
|
|
26573
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26574
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26575
|
|
|
|
|
|
|
|
26576
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26577
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26578
|
|
|
|
|
|
|
|
26579
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26580
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26581
|
|
|
|
|
|
|
|
26582
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26583
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26584
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26585
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26586
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26587
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26588
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26589
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26590
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26591
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26592
|
|
|
|
|
|
|
|
26593
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26594
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
26595
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26596
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26597
|
|
|
|
|
|
|
|
26598
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26599
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26600
|
|
|
|
|
|
|
|
26601
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26602
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26603
|
|
|
|
|
|
|
|
26604
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26605
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26606
|
|
|
|
|
|
|
|
26607
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26608
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26609
|
|
|
|
|
|
|
|
26610
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26611
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26612
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26613
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26614
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26615
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26616
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26617
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26618
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26619
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26620
|
|
|
|
|
|
|
|
26621
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26622
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
26623
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26624
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26625
|
|
|
|
|
|
|
|
26626
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26627
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26628
|
|
|
|
|
|
|
|
26629
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26630
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26631
|
|
|
|
|
|
|
|
26632
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26633
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26634
|
|
|
|
|
|
|
|
26635
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26636
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26637
|
|
|
|
|
|
|
|
26638
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26639
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26640
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26641
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26642
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26643
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26644
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26645
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26646
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26647
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26648
|
|
|
|
|
|
|
|
26649
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26650
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
26651
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26652
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26653
|
|
|
|
|
|
|
|
26654
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26655
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26656
|
|
|
|
|
|
|
|
26657
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26658
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26659
|
|
|
|
|
|
|
|
26660
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26661
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26662
|
|
|
|
|
|
|
|
26663
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26664
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26665
|
|
|
|
|
|
|
|
26666
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26667
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26668
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26669
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26670
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26671
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26672
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26673
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26674
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26675
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26676
|
|
|
|
|
|
|
|
26677
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26678
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
26679
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26680
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26681
|
|
|
|
|
|
|
|
26682
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26683
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26684
|
|
|
|
|
|
|
|
26685
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26686
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26687
|
|
|
|
|
|
|
|
26688
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26689
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26690
|
|
|
|
|
|
|
|
26691
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26692
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26693
|
|
|
|
|
|
|
|
26694
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26695
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26696
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26697
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26698
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26699
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26700
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26701
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26702
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26703
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26704
|
|
|
|
|
|
|
|
26705
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26706
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
26707
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26708
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26709
|
|
|
|
|
|
|
|
26710
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26711
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26712
|
|
|
|
|
|
|
|
26713
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26714
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26715
|
|
|
|
|
|
|
|
26716
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26717
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26718
|
|
|
|
|
|
|
|
26719
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26720
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26721
|
|
|
|
|
|
|
|
26722
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26723
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26724
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26725
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26726
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26727
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26728
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26729
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26730
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26731
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26732
|
|
|
|
|
|
|
|
26733
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26734
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
26735
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
26736
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
26737
|
|
|
|
|
|
|
|
26738
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
26739
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
26740
|
|
|
|
|
|
|
|
26741
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
26742
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
26743
|
|
|
|
|
|
|
|
26744
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
26745
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
26746
|
|
|
|
|
|
|
|
26747
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
26748
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
26749
|
|
|
|
|
|
|
|
26750
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
26751
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
26752
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
26753
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
26754
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
26755
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
26756
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
26757
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
26758
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
26759
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
26760
|
|
|
|
|
|
|
|
26761
|
|
|
|
|
|
|
PDL_COMMENT("none") |
26762
|
0
|
|
|
|
|
|
} break;} |
26763
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
26764
|
|
|
|
|
|
|
} |
26765
|
|
|
|
|
|
|
} |
26766
|
|
|
|
|
|
|
{ |
26767
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","clusterwts","cdata","cmask"}; |
26768
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,2,2,2}; |
26769
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::getclusterwsum"; |
26770
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
26771
|
|
|
|
|
|
|
__funcname, __parnames, 5 |
26772
|
|
|
|
|
|
|
}; |
26773
|
|
|
|
|
|
|
|
26774
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
26775
|
|
|
|
|
|
|
__realdims,__creating,5, |
26776
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
26777
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
26778
|
|
|
|
|
|
|
0 ); |
26779
|
|
|
|
|
|
|
} |
26780
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
26781
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
26782
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
26783
|
|
|
|
|
|
|
} |
26784
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26785
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
26786
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
26787
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
26788
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26789
|
|
|
|
|
|
|
} |
26790
|
|
|
|
|
|
|
} |
26791
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26792
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
26793
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
26794
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
26795
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26796
|
|
|
|
|
|
|
} |
26797
|
|
|
|
|
|
|
} |
26798
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
26799
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
26800
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
26801
|
|
|
|
|
|
|
} |
26802
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26803
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
26804
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
26805
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
26806
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26807
|
|
|
|
|
|
|
} |
26808
|
|
|
|
|
|
|
} |
26809
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26810
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
26811
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
26812
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
26813
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26814
|
|
|
|
|
|
|
} |
26815
|
|
|
|
|
|
|
} |
26816
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 2) { |
26817
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
26818
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
26819
|
|
|
|
|
|
|
} |
26820
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26821
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[2]))->dims[0]; |
26822
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
26823
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
26824
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26825
|
|
|
|
|
|
|
} |
26826
|
|
|
|
|
|
|
} |
26827
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26828
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[2]))->dims[1]; |
26829
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
26830
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[1] != 1) { |
26831
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26832
|
|
|
|
|
|
|
} |
26833
|
|
|
|
|
|
|
} |
26834
|
0
|
0
|
|
|
|
|
if(!__creating[3]) { |
26835
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 2) { |
26836
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
26837
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
26838
|
|
|
|
|
|
|
} |
26839
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26840
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[3]))->dims[0]; |
26841
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
26842
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
26843
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26844
|
|
|
|
|
|
|
} |
26845
|
|
|
|
|
|
|
} |
26846
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26847
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[3]))->dims[1]; |
26848
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[3]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
26849
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[1] != 1) { |
26850
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26851
|
|
|
|
|
|
|
} |
26852
|
|
|
|
|
|
|
} |
26853
|
|
|
|
|
|
|
} else { |
26854
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;dims[1] = __privtrans->__k_size; |
26855
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0); |
26856
|
0
|
0
|
|
|
|
|
}if(!__creating[4]) { |
26857
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 2) { |
26858
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
26859
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
26860
|
|
|
|
|
|
|
} |
26861
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26862
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[4]))->dims[0]; |
26863
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
26864
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
26865
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26866
|
|
|
|
|
|
|
} |
26867
|
|
|
|
|
|
|
} |
26868
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26869
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[4]))->dims[1]; |
26870
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[4]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
26871
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[1] != 1) { |
26872
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in getclusterwsum:" "Wrong dims\n"); |
26873
|
|
|
|
|
|
|
} |
26874
|
|
|
|
|
|
|
} |
26875
|
|
|
|
|
|
|
} else { |
26876
|
0
|
|
|
|
|
|
PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;dims[1] = __privtrans->__k_size; |
26877
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0); |
26878
|
|
|
|
|
|
|
} |
26879
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
26880
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
26881
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
26882
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
26883
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
26884
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
26885
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
26886
|
|
|
|
|
|
|
) { |
26887
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
26888
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
26889
|
|
|
|
|
|
|
} |
26890
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
26891
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
26892
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
26893
|
|
|
|
|
|
|
) { |
26894
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
26895
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
26896
|
|
|
|
|
|
|
} |
26897
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
26898
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
26899
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
26900
|
|
|
|
|
|
|
) { |
26901
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
26902
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
26903
|
|
|
|
|
|
|
} |
26904
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
26905
|
0
|
0
|
|
|
|
|
!__creating[3] && |
26906
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
26907
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
26908
|
|
|
|
|
|
|
) { |
26909
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
26910
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
26911
|
|
|
|
|
|
|
} |
26912
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
26913
|
0
|
0
|
|
|
|
|
!__creating[4] && |
26914
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
26915
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
26916
|
|
|
|
|
|
|
) { |
26917
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
26918
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
26919
|
|
|
|
|
|
|
} |
26920
|
0
|
0
|
|
|
|
|
if (hdrp) { |
26921
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
26922
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
26923
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
26924
|
|
|
|
|
|
|
int count; |
26925
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
26926
|
0
|
|
|
|
|
|
dSP; |
26927
|
0
|
|
|
|
|
|
ENTER ; |
26928
|
0
|
|
|
|
|
|
SAVETMPS ; |
26929
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
26930
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
26931
|
0
|
|
|
|
|
|
PUTBACK ; |
26932
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
26933
|
0
|
|
|
|
|
|
SPAGAIN ; |
26934
|
0
|
0
|
|
|
|
|
if(count != 1) |
26935
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
26936
|
|
|
|
|
|
|
|
26937
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
26938
|
|
|
|
|
|
|
|
26939
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
26940
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
26941
|
|
|
|
|
|
|
} |
26942
|
|
|
|
|
|
|
|
26943
|
0
|
0
|
|
|
|
|
FREETMPS ; |
26944
|
0
|
|
|
|
|
|
LEAVE ; |
26945
|
|
|
|
|
|
|
|
26946
|
|
|
|
|
|
|
|
26947
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
26948
|
|
|
|
|
|
|
|
26949
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[3]->hdrsv != hdrp ){ |
26950
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
26951
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv ); |
26952
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
26953
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
26954
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->hdrsv = hdr_copy; |
26955
|
|
|
|
|
|
|
} |
26956
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
26957
|
0
|
|
|
|
|
|
__privtrans->pdls[3]->state |= PDL_HDRCPY; |
26958
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[4]->hdrsv != hdrp ){ |
26959
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
26960
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv ); |
26961
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
26962
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
26963
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->hdrsv = hdr_copy; |
26964
|
|
|
|
|
|
|
} |
26965
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
26966
|
0
|
|
|
|
|
|
__privtrans->pdls[4]->state |= PDL_HDRCPY; |
26967
|
|
|
|
|
|
|
|
26968
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
26969
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
26970
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
26971
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
26972
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
26973
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
26974
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26975
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
26976
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = PDL_REPRINC(__privtrans->pdls[0],1);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26977
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
26978
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26979
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
26980
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = PDL_REPRINC(__privtrans->pdls[1],1);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26981
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterwts_k = 0; else |
26982
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clusterwts_k = PDL_REPRINC(__privtrans->pdls[2],0);if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26983
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterwts_n = 0; else |
26984
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clusterwts_n = PDL_REPRINC(__privtrans->pdls[2],1);if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26985
|
0
|
|
|
|
|
|
__privtrans->__inc_cdata_d = 0; else |
26986
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdata_d = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[3]->ndims <= 1 || __privtrans->pdls[3]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26987
|
0
|
|
|
|
|
|
__privtrans->__inc_cdata_k = 0; else |
26988
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdata_k = PDL_REPRINC(__privtrans->pdls[3],1);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26989
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_d = 0; else |
26990
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cmask_d = PDL_REPRINC(__privtrans->pdls[4],0);if(__privtrans->pdls[4]->ndims <= 1 || __privtrans->pdls[4]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
26991
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_k = 0; else |
26992
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cmask_k = PDL_REPRINC(__privtrans->pdls[4],1); __privtrans->__ddone = 1; |
26993
|
|
|
|
|
|
|
} |
26994
|
0
|
|
|
|
|
|
} |
26995
|
|
|
|
|
|
|
|
26996
|
|
|
|
|
|
|
|
26997
|
0
|
|
|
|
|
|
pdl_trans * pdl_getclusterwsum_copy(pdl_trans *__tr ) { |
26998
|
|
|
|
|
|
|
int __dim; |
26999
|
0
|
|
|
|
|
|
pdl_getclusterwsum_struct *__privtrans = (pdl_getclusterwsum_struct *) __tr; |
27000
|
|
|
|
|
|
|
|
27001
|
|
|
|
|
|
|
{ |
27002
|
0
|
|
|
|
|
|
pdl_getclusterwsum_struct *__copy = malloc(sizeof(pdl_getclusterwsum_struct)); |
27003
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
27004
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
27005
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
27006
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
27007
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
27008
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
27009
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
27010
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
27011
|
|
|
|
|
|
|
{int i; |
27012
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
27013
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
27014
|
|
|
|
|
|
|
} |
27015
|
|
|
|
|
|
|
|
27016
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
27017
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_clusterwts_k=__copy->__inc_clusterwts_k;__privtrans->__inc_clusterwts_n=__copy->__inc_clusterwts_n;__privtrans->__inc_cdata_d=__copy->__inc_cdata_d;__privtrans->__inc_cdata_k=__copy->__inc_cdata_k;__privtrans->__inc_cmask_d=__copy->__inc_cmask_d;__privtrans->__inc_cmask_k=__copy->__inc_cmask_k;__copy->__n_size=__privtrans->__n_size;__copy->__d_size=__privtrans->__d_size;__copy->__k_size=__privtrans->__k_size; |
27018
|
|
|
|
|
|
|
} |
27019
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
27020
|
|
|
|
|
|
|
} |
27021
|
|
|
|
|
|
|
} |
27022
|
|
|
|
|
|
|
|
27023
|
|
|
|
|
|
|
|
27024
|
0
|
|
|
|
|
|
void pdl_getclusterwsum_readdata(pdl_trans *__tr ) { |
27025
|
|
|
|
|
|
|
int __dim; |
27026
|
0
|
|
|
|
|
|
pdl_getclusterwsum_struct *__privtrans = (pdl_getclusterwsum_struct *) __tr; |
27027
|
|
|
|
|
|
|
|
27028
|
|
|
|
|
|
|
{ |
27029
|
0
|
|
|
|
|
|
{register PDL_Indx __d_size = __privtrans->__d_size; |
27030
|
0
|
|
|
|
|
|
register PDL_Indx __k_size = __privtrans->__k_size; |
27031
|
0
|
|
|
|
|
|
register PDL_Indx __n_size = __privtrans->__n_size; |
27032
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
27033
|
|
|
|
|
|
|
|
27034
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
27035
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
27036
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27037
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27038
|
|
|
|
|
|
|
|
27039
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27040
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27041
|
|
|
|
|
|
|
|
27042
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27043
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27044
|
|
|
|
|
|
|
|
27045
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27046
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27047
|
|
|
|
|
|
|
|
27048
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27049
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27050
|
|
|
|
|
|
|
|
27051
|
|
|
|
|
|
|
|
27052
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27053
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27054
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27055
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27056
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27057
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27058
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27059
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27060
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27061
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27062
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27063
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27064
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27065
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27066
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27067
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27068
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27069
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27070
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27071
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27072
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27073
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27074
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27075
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27076
|
0
|
|
|
|
|
|
__tind2++ |
27077
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27078
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27079
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27080
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27081
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27082
|
|
|
|
|
|
|
) |
27083
|
|
|
|
|
|
|
{ |
27084
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27085
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27086
|
0
|
|
|
|
|
|
__tind1++ |
27087
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27088
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27089
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27090
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27091
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27092
|
|
|
|
|
|
|
) |
27093
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27094
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27095
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27096
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27097
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27098
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27099
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27100
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27101
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27102
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27103
|
|
|
|
|
|
|
|
27104
|
|
|
|
|
|
|
|
27105
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27106
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27107
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27108
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27109
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27110
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27111
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27112
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27113
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27114
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27115
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27116
|
|
|
|
|
|
|
} |
27117
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27118
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27119
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27120
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27121
|
|
|
|
|
|
|
|
27122
|
|
|
|
|
|
|
} |
27123
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27124
|
|
|
|
|
|
|
} |
27125
|
|
|
|
|
|
|
} |
27126
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27127
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27128
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27129
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27130
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27131
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: { |
27132
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27133
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27134
|
|
|
|
|
|
|
|
27135
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27136
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27137
|
|
|
|
|
|
|
|
27138
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27139
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27140
|
|
|
|
|
|
|
|
27141
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27142
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27143
|
|
|
|
|
|
|
|
27144
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27145
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27146
|
|
|
|
|
|
|
|
27147
|
|
|
|
|
|
|
|
27148
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27149
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27150
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27151
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27152
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27153
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27154
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27155
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27156
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27157
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27158
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27159
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27160
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27161
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27162
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27163
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27164
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27165
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27166
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27167
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27168
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27169
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27170
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27171
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27172
|
0
|
|
|
|
|
|
__tind2++ |
27173
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27174
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27175
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27176
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27177
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27178
|
|
|
|
|
|
|
) |
27179
|
|
|
|
|
|
|
{ |
27180
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27181
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27182
|
0
|
|
|
|
|
|
__tind1++ |
27183
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27184
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27185
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27186
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27187
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27188
|
|
|
|
|
|
|
) |
27189
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27190
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27191
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27192
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27193
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27194
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27195
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27196
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27197
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27198
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27199
|
|
|
|
|
|
|
|
27200
|
|
|
|
|
|
|
|
27201
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27202
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27203
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27204
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27205
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27206
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27207
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27208
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27209
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27210
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27211
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27212
|
|
|
|
|
|
|
} |
27213
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27214
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27215
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27216
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27217
|
|
|
|
|
|
|
|
27218
|
|
|
|
|
|
|
} |
27219
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27220
|
|
|
|
|
|
|
} |
27221
|
|
|
|
|
|
|
} |
27222
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27223
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27224
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27225
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27226
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27227
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: { |
27228
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27229
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27230
|
|
|
|
|
|
|
|
27231
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27232
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27233
|
|
|
|
|
|
|
|
27234
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27235
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27236
|
|
|
|
|
|
|
|
27237
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27238
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27239
|
|
|
|
|
|
|
|
27240
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27241
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27242
|
|
|
|
|
|
|
|
27243
|
|
|
|
|
|
|
|
27244
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27245
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27246
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27247
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27248
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27249
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27250
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27251
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27252
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27253
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27254
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27255
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27256
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27257
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27258
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27259
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27260
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27261
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27262
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27263
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27264
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27265
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27266
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27267
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27268
|
0
|
|
|
|
|
|
__tind2++ |
27269
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27270
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27271
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27272
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27273
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27274
|
|
|
|
|
|
|
) |
27275
|
|
|
|
|
|
|
{ |
27276
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27277
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27278
|
0
|
|
|
|
|
|
__tind1++ |
27279
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27280
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27281
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27282
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27283
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27284
|
|
|
|
|
|
|
) |
27285
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27286
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27287
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27288
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27289
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27290
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27291
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27292
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27293
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27294
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27295
|
|
|
|
|
|
|
|
27296
|
|
|
|
|
|
|
|
27297
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27298
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27299
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27300
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27301
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27302
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27303
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27304
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27305
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27306
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27307
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27308
|
|
|
|
|
|
|
} |
27309
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27310
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27311
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27312
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27313
|
|
|
|
|
|
|
|
27314
|
|
|
|
|
|
|
} |
27315
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27316
|
|
|
|
|
|
|
} |
27317
|
|
|
|
|
|
|
} |
27318
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27319
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27320
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27321
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27322
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27323
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: { |
27324
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27325
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27326
|
|
|
|
|
|
|
|
27327
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27328
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27329
|
|
|
|
|
|
|
|
27330
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27331
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27332
|
|
|
|
|
|
|
|
27333
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27334
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27335
|
|
|
|
|
|
|
|
27336
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27337
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27338
|
|
|
|
|
|
|
|
27339
|
|
|
|
|
|
|
|
27340
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27341
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27342
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27343
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27344
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27345
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27346
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27347
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27348
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27349
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27350
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27351
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27352
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27353
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27354
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27355
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27356
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27357
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27358
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27359
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27360
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27361
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27362
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27363
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27364
|
0
|
|
|
|
|
|
__tind2++ |
27365
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27366
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27367
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27368
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27369
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27370
|
|
|
|
|
|
|
) |
27371
|
|
|
|
|
|
|
{ |
27372
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27373
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27374
|
0
|
|
|
|
|
|
__tind1++ |
27375
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27376
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27377
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27378
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27379
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27380
|
|
|
|
|
|
|
) |
27381
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27382
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27383
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27384
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27385
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27386
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27387
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27388
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27389
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27390
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27391
|
|
|
|
|
|
|
|
27392
|
|
|
|
|
|
|
|
27393
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27394
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27395
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27396
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27397
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27398
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27399
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27400
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27401
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27402
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27403
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27404
|
|
|
|
|
|
|
} |
27405
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27406
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27407
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27408
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27409
|
|
|
|
|
|
|
|
27410
|
|
|
|
|
|
|
} |
27411
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27412
|
|
|
|
|
|
|
} |
27413
|
|
|
|
|
|
|
} |
27414
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27415
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27416
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27417
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27418
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27419
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: { |
27420
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27421
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27422
|
|
|
|
|
|
|
|
27423
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27424
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27425
|
|
|
|
|
|
|
|
27426
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27427
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27428
|
|
|
|
|
|
|
|
27429
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27430
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27431
|
|
|
|
|
|
|
|
27432
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27433
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27434
|
|
|
|
|
|
|
|
27435
|
|
|
|
|
|
|
|
27436
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27437
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27438
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27439
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27440
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27441
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27442
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27443
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27444
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27445
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27446
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27447
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27448
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27449
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27450
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27451
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27452
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27453
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27454
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27455
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27456
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27457
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27458
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27459
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27460
|
0
|
|
|
|
|
|
__tind2++ |
27461
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27462
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27463
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27464
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27465
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27466
|
|
|
|
|
|
|
) |
27467
|
|
|
|
|
|
|
{ |
27468
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27469
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27470
|
0
|
|
|
|
|
|
__tind1++ |
27471
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27472
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27473
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27474
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27475
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27476
|
|
|
|
|
|
|
) |
27477
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27478
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27479
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27480
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27481
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27482
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27483
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27484
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27485
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27486
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27487
|
|
|
|
|
|
|
|
27488
|
|
|
|
|
|
|
|
27489
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27490
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27491
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27492
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27493
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27494
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27495
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27496
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27497
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27498
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27499
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27500
|
|
|
|
|
|
|
} |
27501
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27502
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27503
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27504
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27505
|
|
|
|
|
|
|
|
27506
|
|
|
|
|
|
|
} |
27507
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27508
|
|
|
|
|
|
|
} |
27509
|
|
|
|
|
|
|
} |
27510
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27511
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27512
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27513
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27514
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27515
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: { |
27516
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27517
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27518
|
|
|
|
|
|
|
|
27519
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27520
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27521
|
|
|
|
|
|
|
|
27522
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27523
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27524
|
|
|
|
|
|
|
|
27525
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27526
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27527
|
|
|
|
|
|
|
|
27528
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27529
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27530
|
|
|
|
|
|
|
|
27531
|
|
|
|
|
|
|
|
27532
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27533
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27534
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27535
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27536
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27537
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27538
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27539
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27540
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27541
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27542
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27543
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27544
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27545
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27546
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27547
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27548
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27549
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27550
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27551
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27552
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27553
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27554
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27555
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27556
|
0
|
|
|
|
|
|
__tind2++ |
27557
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27558
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27559
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27560
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27561
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27562
|
|
|
|
|
|
|
) |
27563
|
|
|
|
|
|
|
{ |
27564
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27565
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27566
|
0
|
|
|
|
|
|
__tind1++ |
27567
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27568
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27569
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27570
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27571
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27572
|
|
|
|
|
|
|
) |
27573
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27574
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27575
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27576
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27577
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27578
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27579
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27580
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27581
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27582
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27583
|
|
|
|
|
|
|
|
27584
|
|
|
|
|
|
|
|
27585
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27586
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27587
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27588
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27589
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27590
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27591
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27592
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27593
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27594
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27595
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27596
|
|
|
|
|
|
|
} |
27597
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27598
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27599
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27600
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27601
|
|
|
|
|
|
|
|
27602
|
|
|
|
|
|
|
} |
27603
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27604
|
|
|
|
|
|
|
} |
27605
|
|
|
|
|
|
|
} |
27606
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27607
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27608
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27609
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27610
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27611
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: { |
27612
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27613
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27614
|
|
|
|
|
|
|
|
27615
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27616
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27617
|
|
|
|
|
|
|
|
27618
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27619
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27620
|
|
|
|
|
|
|
|
27621
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27622
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27623
|
|
|
|
|
|
|
|
27624
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27625
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27626
|
|
|
|
|
|
|
|
27627
|
|
|
|
|
|
|
|
27628
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27629
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27630
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27631
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27632
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27633
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27634
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27635
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27636
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27637
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27638
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27639
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27640
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27641
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27642
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27643
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27644
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27645
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27646
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27647
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27648
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27649
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27650
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27651
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27652
|
0
|
|
|
|
|
|
__tind2++ |
27653
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27654
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27655
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27656
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27657
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27658
|
|
|
|
|
|
|
) |
27659
|
|
|
|
|
|
|
{ |
27660
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27661
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27662
|
0
|
|
|
|
|
|
__tind1++ |
27663
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27664
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27665
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27666
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27667
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27668
|
|
|
|
|
|
|
) |
27669
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27670
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27671
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27672
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27673
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27674
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27675
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27676
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27677
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27678
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27679
|
|
|
|
|
|
|
|
27680
|
|
|
|
|
|
|
|
27681
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27682
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27683
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27684
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27685
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27686
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27687
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27688
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27689
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27690
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27691
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27692
|
|
|
|
|
|
|
} |
27693
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27694
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27695
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27696
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27697
|
|
|
|
|
|
|
|
27698
|
|
|
|
|
|
|
} |
27699
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27700
|
|
|
|
|
|
|
} |
27701
|
|
|
|
|
|
|
} |
27702
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27703
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27704
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27705
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27706
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27707
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: { |
27708
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27709
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27710
|
|
|
|
|
|
|
|
27711
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27712
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27713
|
|
|
|
|
|
|
|
27714
|
0
|
0
|
|
|
|
|
PDL_Double * clusterwts_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27715
|
0
|
|
|
|
|
|
PDL_Double * clusterwts_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27716
|
|
|
|
|
|
|
|
27717
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27718
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data)); |
27719
|
|
|
|
|
|
|
|
27720
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27721
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data)); |
27722
|
|
|
|
|
|
|
|
27723
|
|
|
|
|
|
|
|
27724
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
27725
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
27726
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
27727
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
27728
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
27729
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
27730
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
27731
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
27732
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
27733
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
27734
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
27735
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
27736
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
27737
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
27738
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
27739
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
27740
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
27741
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
27742
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
27743
|
0
|
|
|
|
|
|
clusterwts_datap += __offsp[2]; |
27744
|
0
|
|
|
|
|
|
cdata_datap += __offsp[3]; |
27745
|
0
|
|
|
|
|
|
cmask_datap += __offsp[4]; |
27746
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
27747
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
27748
|
0
|
|
|
|
|
|
__tind2++ |
27749
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
27750
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
27751
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
27752
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
27753
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
27754
|
|
|
|
|
|
|
) |
27755
|
|
|
|
|
|
|
{ |
27756
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
27757
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
27758
|
0
|
|
|
|
|
|
__tind1++ |
27759
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
27760
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
27761
|
0
|
|
|
|
|
|
,clusterwts_datap += __tinc0_2 |
27762
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_3 |
27763
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_4 |
27764
|
|
|
|
|
|
|
) |
27765
|
0
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27766
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27767
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_k = __privtrans->__inc_clusterwts_k; |
27768
|
0
|
|
|
|
|
|
register PDL_Indx __inc_clusterwts_n = __privtrans->__inc_clusterwts_n; |
27769
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27770
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27771
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27772
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27773
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27774
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27775
|
|
|
|
|
|
|
|
27776
|
|
|
|
|
|
|
|
27777
|
|
|
|
|
|
|
int rid, rwt, cmaskdk; |
27778
|
|
|
|
|
|
|
{PDL_COMMENT("Open d") register PDL_Indx d; |
27779
|
0
|
0
|
|
|
|
|
for(d=0; d<(__d_size); d++) { |
27780
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
27781
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
27782
|
0
|
|
|
|
|
|
cmaskdk = 0; |
27783
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
27784
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
27785
|
0
|
0
|
|
|
|
|
if ((mask_datap)[0+(__inc_mask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_mask_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27786
|
0
|
|
|
|
|
|
cmaskdk = 1; |
27787
|
0
|
0
|
|
|
|
|
(cdata_datap)[0+(__inc_cdata_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cdata_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") += (clusterwts_datap)[0+(__inc_clusterwts_k*PP_INDTERM(__privtrans->__k_size, k))+(__inc_clusterwts_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") * (data_datap)[0+(__inc_data_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_data_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
27788
|
|
|
|
|
|
|
} |
27789
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
27790
|
0
|
0
|
|
|
|
|
(cmask_datap)[0+(__inc_cmask_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_cmask_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = cmaskdk; |
|
|
0
|
|
|
|
|
|
27791
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
27792
|
|
|
|
|
|
|
}} PDL_COMMENT("Close d") |
27793
|
|
|
|
|
|
|
|
27794
|
|
|
|
|
|
|
} |
27795
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
27796
|
|
|
|
|
|
|
} |
27797
|
|
|
|
|
|
|
} |
27798
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
27799
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
27800
|
0
|
|
|
|
|
|
clusterwts_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
27801
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
27802
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
27803
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;} |
27804
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
27805
|
|
|
|
|
|
|
} |
27806
|
|
|
|
|
|
|
} |
27807
|
|
|
|
|
|
|
} |
27808
|
|
|
|
|
|
|
|
27809
|
|
|
|
|
|
|
|
27810
|
|
|
|
|
|
|
|
27811
|
|
|
|
|
|
|
|
27812
|
0
|
|
|
|
|
|
void pdl_getclusterwsum_free(pdl_trans *__tr ) { |
27813
|
|
|
|
|
|
|
int __dim; |
27814
|
0
|
|
|
|
|
|
pdl_getclusterwsum_struct *__privtrans = (pdl_getclusterwsum_struct *) __tr; |
27815
|
|
|
|
|
|
|
|
27816
|
|
|
|
|
|
|
{ |
27817
|
|
|
|
|
|
|
|
27818
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
27819
|
|
|
|
|
|
|
|
27820
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
27821
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
27822
|
|
|
|
|
|
|
;;;;;;;;;;;;;; |
27823
|
|
|
|
|
|
|
} |
27824
|
|
|
|
|
|
|
|
27825
|
|
|
|
|
|
|
} |
27826
|
0
|
|
|
|
|
|
} |
27827
|
|
|
|
|
|
|
|
27828
|
|
|
|
|
|
|
|
27829
|
|
|
|
|
|
|
|
27830
|
|
|
|
|
|
|
|
27831
|
|
|
|
|
|
|
static char pdl_getclusterwsum_vtable_flags[] = |
27832
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
27833
|
|
|
|
|
|
|
pdl_transvtable pdl_getclusterwsum_vtable = { |
27834
|
|
|
|
|
|
|
0,0, 3, 5, pdl_getclusterwsum_vtable_flags, |
27835
|
|
|
|
|
|
|
pdl_getclusterwsum_redodims, pdl_getclusterwsum_readdata, NULL, |
27836
|
|
|
|
|
|
|
pdl_getclusterwsum_free,NULL,NULL,pdl_getclusterwsum_copy, |
27837
|
|
|
|
|
|
|
sizeof(pdl_getclusterwsum_struct),"pdl_getclusterwsum_vtable" |
27838
|
|
|
|
|
|
|
}; |
27839
|
|
|
|
|
|
|
|
27840
|
|
|
|
|
|
|
typedef struct pdl_attachtonearest_struct { |
27841
|
|
|
|
|
|
|
PDL_TRANS_START(8); |
27842
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_data_d;PDL_Indx __inc_data_n;PDL_Indx __inc_mask_d;PDL_Indx __inc_mask_n;PDL_Indx __inc_weight_d;PDL_Indx __inc_rowids_nr;PDL_Indx __inc_cdata_d;PDL_Indx __inc_cdata_k;PDL_Indx __inc_cmask_d;PDL_Indx __inc_cmask_k;PDL_Indx __inc_clusterids_nr;PDL_Indx __inc_cdist_nr;PDL_Indx __nr_size;PDL_Indx __n_size;PDL_Indx __d_size;PDL_Indx __k_size; |
27843
|
|
|
|
|
|
|
char *distFlag;char *methodFlag; |
27844
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
27845
|
|
|
|
|
|
|
} pdl_attachtonearest_struct; |
27846
|
|
|
|
|
|
|
|
27847
|
0
|
|
|
|
|
|
void pdl_attachtonearest_redodims(pdl_trans *__tr ) { |
27848
|
|
|
|
|
|
|
int __dim; |
27849
|
0
|
|
|
|
|
|
pdl_attachtonearest_struct *__privtrans = (pdl_attachtonearest_struct *) __tr; |
27850
|
|
|
|
|
|
|
|
27851
|
|
|
|
|
|
|
{ |
27852
|
|
|
|
|
|
|
PDL_Indx __creating[8]; |
27853
|
0
|
|
|
|
|
|
__privtrans->__nr_size = -1; |
27854
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
27855
|
0
|
|
|
|
|
|
__privtrans->__d_size = -1; |
27856
|
0
|
|
|
|
|
|
__privtrans->__k_size = -1; |
27857
|
0
|
|
|
|
|
|
__creating[0] = 0; |
27858
|
0
|
|
|
|
|
|
__creating[1] = 0; |
27859
|
0
|
|
|
|
|
|
__creating[2] = 0; |
27860
|
0
|
|
|
|
|
|
__creating[3] = 0; |
27861
|
0
|
|
|
|
|
|
__creating[4] = 0; |
27862
|
0
|
|
|
|
|
|
__creating[5] = 0; |
27863
|
0
|
0
|
|
|
|
|
__creating[6] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[6]); |
|
|
0
|
|
|
|
|
|
27864
|
0
|
0
|
|
|
|
|
__creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]); |
|
|
0
|
|
|
|
|
|
27865
|
|
|
|
|
|
|
{ |
27866
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
27867
|
|
|
|
|
|
|
|
27868
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
27869
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
27870
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27871
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27872
|
|
|
|
|
|
|
|
27873
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27874
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27875
|
|
|
|
|
|
|
|
27876
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27877
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27878
|
|
|
|
|
|
|
|
27879
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27880
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
27881
|
|
|
|
|
|
|
|
27882
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27883
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
27884
|
|
|
|
|
|
|
|
27885
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
27886
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
27887
|
|
|
|
|
|
|
|
27888
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
27889
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
27890
|
|
|
|
|
|
|
|
27891
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
27892
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
27893
|
|
|
|
|
|
|
|
27894
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
27895
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27896
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27897
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
27898
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27899
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27900
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27901
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27902
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27903
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27904
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
27905
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
27906
|
|
|
|
|
|
|
|
27907
|
|
|
|
|
|
|
PDL_COMMENT("none") |
27908
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
27909
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27910
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27911
|
|
|
|
|
|
|
|
27912
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27913
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27914
|
|
|
|
|
|
|
|
27915
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27916
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27917
|
|
|
|
|
|
|
|
27918
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27919
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
27920
|
|
|
|
|
|
|
|
27921
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27922
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
27923
|
|
|
|
|
|
|
|
27924
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
27925
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
27926
|
|
|
|
|
|
|
|
27927
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
27928
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
27929
|
|
|
|
|
|
|
|
27930
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
27931
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
27932
|
|
|
|
|
|
|
|
27933
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
27934
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27935
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27936
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
27937
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27938
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27939
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27940
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27941
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27942
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27943
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
27944
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
27945
|
|
|
|
|
|
|
|
27946
|
|
|
|
|
|
|
PDL_COMMENT("none") |
27947
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
27948
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27949
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27950
|
|
|
|
|
|
|
|
27951
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27952
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27953
|
|
|
|
|
|
|
|
27954
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27955
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27956
|
|
|
|
|
|
|
|
27957
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27958
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
27959
|
|
|
|
|
|
|
|
27960
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
27961
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
27962
|
|
|
|
|
|
|
|
27963
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
27964
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
27965
|
|
|
|
|
|
|
|
27966
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
27967
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
27968
|
|
|
|
|
|
|
|
27969
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
27970
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
27971
|
|
|
|
|
|
|
|
27972
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
27973
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
27974
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
27975
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
27976
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
27977
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
27978
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
27979
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
27980
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
27981
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
27982
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
27983
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
27984
|
|
|
|
|
|
|
|
27985
|
|
|
|
|
|
|
PDL_COMMENT("none") |
27986
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
27987
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
27988
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
27989
|
|
|
|
|
|
|
|
27990
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
27991
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
27992
|
|
|
|
|
|
|
|
27993
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
27994
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
27995
|
|
|
|
|
|
|
|
27996
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
27997
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
27998
|
|
|
|
|
|
|
|
27999
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28000
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28001
|
|
|
|
|
|
|
|
28002
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28003
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28004
|
|
|
|
|
|
|
|
28005
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28006
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28007
|
|
|
|
|
|
|
|
28008
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28009
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28010
|
|
|
|
|
|
|
|
28011
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28012
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28013
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28014
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28015
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28016
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28017
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28018
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28019
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28020
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28021
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28022
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28023
|
|
|
|
|
|
|
|
28024
|
|
|
|
|
|
|
PDL_COMMENT("none") |
28025
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
28026
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28027
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28028
|
|
|
|
|
|
|
|
28029
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28030
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28031
|
|
|
|
|
|
|
|
28032
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28033
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28034
|
|
|
|
|
|
|
|
28035
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28036
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28037
|
|
|
|
|
|
|
|
28038
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28039
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28040
|
|
|
|
|
|
|
|
28041
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28042
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28043
|
|
|
|
|
|
|
|
28044
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28045
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28046
|
|
|
|
|
|
|
|
28047
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28048
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28049
|
|
|
|
|
|
|
|
28050
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28051
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28052
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28053
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28054
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28055
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28056
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28057
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28058
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28059
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28060
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28061
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28062
|
|
|
|
|
|
|
|
28063
|
|
|
|
|
|
|
PDL_COMMENT("none") |
28064
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
28065
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28066
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28067
|
|
|
|
|
|
|
|
28068
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28069
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28070
|
|
|
|
|
|
|
|
28071
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28072
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28073
|
|
|
|
|
|
|
|
28074
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28075
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28076
|
|
|
|
|
|
|
|
28077
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28078
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28079
|
|
|
|
|
|
|
|
28080
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28081
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28082
|
|
|
|
|
|
|
|
28083
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28084
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28085
|
|
|
|
|
|
|
|
28086
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28087
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28088
|
|
|
|
|
|
|
|
28089
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28090
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28091
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28092
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28093
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28094
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28095
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28096
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28097
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28098
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28099
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28100
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28101
|
|
|
|
|
|
|
|
28102
|
|
|
|
|
|
|
PDL_COMMENT("none") |
28103
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
28104
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28105
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28106
|
|
|
|
|
|
|
|
28107
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28108
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28109
|
|
|
|
|
|
|
|
28110
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28111
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28112
|
|
|
|
|
|
|
|
28113
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28114
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28115
|
|
|
|
|
|
|
|
28116
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28117
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28118
|
|
|
|
|
|
|
|
28119
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28120
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28121
|
|
|
|
|
|
|
|
28122
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28123
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28124
|
|
|
|
|
|
|
|
28125
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28126
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28127
|
|
|
|
|
|
|
|
28128
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28129
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28130
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28131
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28132
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28133
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28134
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28135
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28136
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28137
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28138
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28139
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28140
|
|
|
|
|
|
|
|
28141
|
|
|
|
|
|
|
PDL_COMMENT("none") |
28142
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
28143
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28144
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28145
|
|
|
|
|
|
|
|
28146
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28147
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28148
|
|
|
|
|
|
|
|
28149
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28150
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28151
|
|
|
|
|
|
|
|
28152
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28153
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28154
|
|
|
|
|
|
|
|
28155
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28156
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28157
|
|
|
|
|
|
|
|
28158
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28159
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28160
|
|
|
|
|
|
|
|
28161
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28162
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28163
|
|
|
|
|
|
|
|
28164
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28165
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28166
|
|
|
|
|
|
|
|
28167
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28168
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28169
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28170
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28171
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28172
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28173
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28174
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28175
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28176
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28177
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28178
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28179
|
|
|
|
|
|
|
|
28180
|
|
|
|
|
|
|
PDL_COMMENT("none") |
28181
|
0
|
|
|
|
|
|
} break;} |
28182
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
28183
|
|
|
|
|
|
|
} |
28184
|
|
|
|
|
|
|
} |
28185
|
|
|
|
|
|
|
{ |
28186
|
|
|
|
|
|
|
static char *__parnames[] = {"data","mask","weight","rowids","cdata","cmask","clusterids","cdist"}; |
28187
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {2,2,1,1,2,2,1,1}; |
28188
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::attachtonearest"; |
28189
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
28190
|
|
|
|
|
|
|
__funcname, __parnames, 8 |
28191
|
|
|
|
|
|
|
}; |
28192
|
|
|
|
|
|
|
|
28193
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
28194
|
|
|
|
|
|
|
__realdims,__creating,8, |
28195
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
28196
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
28197
|
|
|
|
|
|
|
0 ); |
28198
|
|
|
|
|
|
|
} |
28199
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 2) { |
28200
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
28201
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
28202
|
|
|
|
|
|
|
} |
28203
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28204
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0]; |
28205
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28206
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
28207
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28208
|
|
|
|
|
|
|
} |
28209
|
|
|
|
|
|
|
} |
28210
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28211
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[1]; |
28212
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
28213
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[1] != 1) { |
28214
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28215
|
|
|
|
|
|
|
} |
28216
|
|
|
|
|
|
|
} |
28217
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[0]))); |
28218
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 2) { |
28219
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
28220
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
28221
|
|
|
|
|
|
|
} |
28222
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28223
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0]; |
28224
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28225
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
28226
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28227
|
|
|
|
|
|
|
} |
28228
|
|
|
|
|
|
|
} |
28229
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28230
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[1]; |
28231
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
28232
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[1] != 1) { |
28233
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28234
|
|
|
|
|
|
|
} |
28235
|
|
|
|
|
|
|
} |
28236
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[1]))); |
28237
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
28238
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
28239
|
|
|
|
|
|
|
} |
28240
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28241
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0]; |
28242
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28243
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
28244
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28245
|
|
|
|
|
|
|
} |
28246
|
|
|
|
|
|
|
} |
28247
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[2]))); |
28248
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->ndims < 1) { |
28249
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
28250
|
|
|
|
|
|
|
} |
28251
|
0
|
0
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nr_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28252
|
0
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[3]))->dims[0]; |
28253
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nr_size != ((__privtrans->pdls[3]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28254
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[3]))->dims[0] != 1) { |
28255
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28256
|
|
|
|
|
|
|
} |
28257
|
|
|
|
|
|
|
} |
28258
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->ndims < 2) { |
28259
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
28260
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[4]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
28261
|
|
|
|
|
|
|
} |
28262
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28263
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[4]))->dims[0]; |
28264
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[4]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28265
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[0] != 1) { |
28266
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28267
|
|
|
|
|
|
|
} |
28268
|
|
|
|
|
|
|
} |
28269
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28270
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[4]))->dims[1]; |
28271
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[4]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
28272
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[4]))->dims[1] != 1) { |
28273
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28274
|
|
|
|
|
|
|
} |
28275
|
|
|
|
|
|
|
} |
28276
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[4]))); |
28277
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->ndims < 2) { |
28278
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1; |
|
|
0
|
|
|
|
|
|
28279
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[5]))->ndims < 2 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
28280
|
|
|
|
|
|
|
} |
28281
|
0
|
0
|
|
|
|
|
if(__privtrans->__d_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__d_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28282
|
0
|
|
|
|
|
|
__privtrans->__d_size = ((__privtrans->pdls[5]))->dims[0]; |
28283
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[5]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28284
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[0] != 1) { |
28285
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28286
|
|
|
|
|
|
|
} |
28287
|
|
|
|
|
|
|
} |
28288
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[5]))->ndims > 1 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28289
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[5]))->dims[1]; |
28290
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[5]))->ndims > 1 && __privtrans->__k_size != ((__privtrans->pdls[5]))->dims[1]) { |
|
|
0
|
|
|
|
|
|
28291
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[5]))->dims[1] != 1) { |
28292
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28293
|
|
|
|
|
|
|
} |
28294
|
|
|
|
|
|
|
} |
28295
|
0
|
|
|
|
|
|
PDL->make_physical(((__privtrans->pdls[5]))); |
28296
|
0
|
0
|
|
|
|
|
if(!__creating[6]) { |
28297
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->ndims < 1) { |
28298
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[6]))->ndims < 1 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
28299
|
|
|
|
|
|
|
} |
28300
|
0
|
0
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__nr_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28301
|
0
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[6]))->dims[0]; |
28302
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__nr_size != ((__privtrans->pdls[6]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28303
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[6]))->dims[0] != 1) { |
28304
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28305
|
|
|
|
|
|
|
} |
28306
|
|
|
|
|
|
|
} |
28307
|
|
|
|
|
|
|
} else { |
28308
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nr_size; |
28309
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,6,dims,0); |
28310
|
0
|
0
|
|
|
|
|
}if(!__creating[7]) { |
28311
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->ndims < 1) { |
28312
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[7]))->ndims < 1 && __privtrans->__nr_size <= 1) __privtrans->__nr_size = 1; |
|
|
0
|
|
|
|
|
|
28313
|
|
|
|
|
|
|
} |
28314
|
0
|
0
|
|
|
|
|
if(__privtrans->__nr_size == -1 || (((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__nr_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28315
|
0
|
|
|
|
|
|
__privtrans->__nr_size = ((__privtrans->pdls[7]))->dims[0]; |
28316
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__nr_size != ((__privtrans->pdls[7]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
28317
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[7]))->dims[0] != 1) { |
28318
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in attachtonearest:" "Wrong dims\n"); |
28319
|
|
|
|
|
|
|
} |
28320
|
|
|
|
|
|
|
} |
28321
|
|
|
|
|
|
|
} else { |
28322
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nr_size; |
28323
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0); |
28324
|
|
|
|
|
|
|
} |
28325
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
28326
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
28327
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
28328
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
28329
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28330
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
28331
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
28332
|
|
|
|
|
|
|
) { |
28333
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
28334
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
28335
|
|
|
|
|
|
|
} |
28336
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28337
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
28338
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
28339
|
|
|
|
|
|
|
) { |
28340
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
28341
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
28342
|
|
|
|
|
|
|
} |
28343
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28344
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
28345
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
28346
|
|
|
|
|
|
|
) { |
28347
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
28348
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
28349
|
|
|
|
|
|
|
} |
28350
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28351
|
0
|
0
|
|
|
|
|
__privtrans->pdls[3]->hdrsv && |
28352
|
0
|
|
|
|
|
|
(__privtrans->pdls[3]->state & PDL_HDRCPY) |
28353
|
|
|
|
|
|
|
) { |
28354
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[3]->hdrsv; |
28355
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0); |
28356
|
|
|
|
|
|
|
} |
28357
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28358
|
0
|
0
|
|
|
|
|
__privtrans->pdls[4]->hdrsv && |
28359
|
0
|
|
|
|
|
|
(__privtrans->pdls[4]->state & PDL_HDRCPY) |
28360
|
|
|
|
|
|
|
) { |
28361
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[4]->hdrsv; |
28362
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0); |
28363
|
|
|
|
|
|
|
} |
28364
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28365
|
0
|
0
|
|
|
|
|
__privtrans->pdls[5]->hdrsv && |
28366
|
0
|
|
|
|
|
|
(__privtrans->pdls[5]->state & PDL_HDRCPY) |
28367
|
|
|
|
|
|
|
) { |
28368
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[5]->hdrsv; |
28369
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0); |
28370
|
|
|
|
|
|
|
} |
28371
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28372
|
0
|
0
|
|
|
|
|
!__creating[6] && |
28373
|
0
|
0
|
|
|
|
|
__privtrans->pdls[6]->hdrsv && |
28374
|
0
|
|
|
|
|
|
(__privtrans->pdls[6]->state & PDL_HDRCPY) |
28375
|
|
|
|
|
|
|
) { |
28376
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[6]->hdrsv; |
28377
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0); |
28378
|
|
|
|
|
|
|
} |
28379
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
28380
|
0
|
0
|
|
|
|
|
!__creating[7] && |
28381
|
0
|
0
|
|
|
|
|
__privtrans->pdls[7]->hdrsv && |
28382
|
0
|
|
|
|
|
|
(__privtrans->pdls[7]->state & PDL_HDRCPY) |
28383
|
|
|
|
|
|
|
) { |
28384
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[7]->hdrsv; |
28385
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0); |
28386
|
|
|
|
|
|
|
} |
28387
|
0
|
0
|
|
|
|
|
if (hdrp) { |
28388
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
28389
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
28390
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
28391
|
|
|
|
|
|
|
int count; |
28392
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
28393
|
0
|
|
|
|
|
|
dSP; |
28394
|
0
|
|
|
|
|
|
ENTER ; |
28395
|
0
|
|
|
|
|
|
SAVETMPS ; |
28396
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
28397
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
28398
|
0
|
|
|
|
|
|
PUTBACK ; |
28399
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
28400
|
0
|
|
|
|
|
|
SPAGAIN ; |
28401
|
0
|
0
|
|
|
|
|
if(count != 1) |
28402
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
28403
|
|
|
|
|
|
|
|
28404
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
28405
|
|
|
|
|
|
|
|
28406
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
28407
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
28408
|
|
|
|
|
|
|
} |
28409
|
|
|
|
|
|
|
|
28410
|
0
|
0
|
|
|
|
|
FREETMPS ; |
28411
|
0
|
|
|
|
|
|
LEAVE ; |
28412
|
|
|
|
|
|
|
|
28413
|
|
|
|
|
|
|
|
28414
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
28415
|
|
|
|
|
|
|
|
28416
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[6]->hdrsv != hdrp ){ |
28417
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[6]->hdrsv && __privtrans->pdls[6]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
28418
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[6]->hdrsv ); |
28419
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
28420
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
28421
|
0
|
|
|
|
|
|
__privtrans->pdls[6]->hdrsv = hdr_copy; |
28422
|
|
|
|
|
|
|
} |
28423
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
28424
|
0
|
|
|
|
|
|
__privtrans->pdls[6]->state |= PDL_HDRCPY; |
28425
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[7]->hdrsv != hdrp ){ |
28426
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
28427
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv ); |
28428
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
28429
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
28430
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->hdrsv = hdr_copy; |
28431
|
|
|
|
|
|
|
} |
28432
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
28433
|
0
|
|
|
|
|
|
__privtrans->pdls[7]->state |= PDL_HDRCPY; |
28434
|
|
|
|
|
|
|
|
28435
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
28436
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
28437
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
28438
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
28439
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
28440
|
0
|
|
|
|
|
|
__privtrans->__inc_data_d = 0; else |
28441
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_d = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
28442
|
0
|
|
|
|
|
|
__privtrans->__inc_data_n = 0; else |
28443
|
0
|
0
|
|
|
|
|
__privtrans->__inc_data_n = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
28444
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_d = 0; else |
28445
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_d = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 1 || __privtrans->pdls[1]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
28446
|
0
|
|
|
|
|
|
__privtrans->__inc_mask_n = 0; else |
28447
|
0
|
0
|
|
|
|
|
__privtrans->__inc_mask_n = __privtrans->pdls[1]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
28448
|
0
|
|
|
|
|
|
__privtrans->__inc_weight_d = 0; else |
28449
|
0
|
0
|
|
|
|
|
__privtrans->__inc_weight_d = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
28450
|
0
|
|
|
|
|
|
__privtrans->__inc_rowids_nr = 0; else |
28451
|
0
|
0
|
|
|
|
|
__privtrans->__inc_rowids_nr = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28452
|
0
|
|
|
|
|
|
__privtrans->__inc_cdata_d = 0; else |
28453
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdata_d = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[4]->ndims <= 1 || __privtrans->pdls[4]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
28454
|
0
|
|
|
|
|
|
__privtrans->__inc_cdata_k = 0; else |
28455
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdata_k = __privtrans->pdls[4]->dimincs[1];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
28456
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_d = 0; else |
28457
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cmask_d = __privtrans->pdls[5]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 1 || __privtrans->pdls[5]->dims[1] <= 1) |
|
|
0
|
|
|
|
|
|
28458
|
0
|
|
|
|
|
|
__privtrans->__inc_cmask_k = 0; else |
28459
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cmask_k = __privtrans->pdls[5]->dimincs[1];if(__privtrans->pdls[6]->ndims <= 0 || __privtrans->pdls[6]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
28460
|
0
|
|
|
|
|
|
__privtrans->__inc_clusterids_nr = 0; else |
28461
|
0
|
0
|
|
|
|
|
__privtrans->__inc_clusterids_nr = PDL_REPRINC(__privtrans->pdls[6],0);if(__privtrans->pdls[7]->ndims <= 0 || __privtrans->pdls[7]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
28462
|
0
|
|
|
|
|
|
__privtrans->__inc_cdist_nr = 0; else |
28463
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cdist_nr = PDL_REPRINC(__privtrans->pdls[7],0); __privtrans->__ddone = 1; |
28464
|
|
|
|
|
|
|
} |
28465
|
0
|
|
|
|
|
|
} |
28466
|
|
|
|
|
|
|
|
28467
|
|
|
|
|
|
|
|
28468
|
0
|
|
|
|
|
|
pdl_trans * pdl_attachtonearest_copy(pdl_trans *__tr ) { |
28469
|
|
|
|
|
|
|
int __dim; |
28470
|
0
|
|
|
|
|
|
pdl_attachtonearest_struct *__privtrans = (pdl_attachtonearest_struct *) __tr; |
28471
|
|
|
|
|
|
|
|
28472
|
|
|
|
|
|
|
{ |
28473
|
0
|
|
|
|
|
|
pdl_attachtonearest_struct *__copy = malloc(sizeof(pdl_attachtonearest_struct)); |
28474
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
28475
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
28476
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
28477
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
28478
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
28479
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
28480
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
28481
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
28482
|
|
|
|
|
|
|
{int i; |
28483
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
28484
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
28485
|
|
|
|
|
|
|
} |
28486
|
0
|
|
|
|
|
|
(__copy->distFlag) = malloc(strlen(__privtrans->distFlag)+1); strcpy(__copy->distFlag,__privtrans->distFlag);;(__copy->methodFlag) = malloc(strlen(__privtrans->methodFlag)+1); strcpy(__copy->methodFlag,__privtrans->methodFlag);; |
28487
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
28488
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_data_d=__copy->__inc_data_d;__privtrans->__inc_data_n=__copy->__inc_data_n;__privtrans->__inc_mask_d=__copy->__inc_mask_d;__privtrans->__inc_mask_n=__copy->__inc_mask_n;__privtrans->__inc_weight_d=__copy->__inc_weight_d;__privtrans->__inc_rowids_nr=__copy->__inc_rowids_nr;__privtrans->__inc_cdata_d=__copy->__inc_cdata_d;__privtrans->__inc_cdata_k=__copy->__inc_cdata_k;__privtrans->__inc_cmask_d=__copy->__inc_cmask_d;__privtrans->__inc_cmask_k=__copy->__inc_cmask_k;__privtrans->__inc_clusterids_nr=__copy->__inc_clusterids_nr;__privtrans->__inc_cdist_nr=__copy->__inc_cdist_nr;__copy->__nr_size=__privtrans->__nr_size;__copy->__n_size=__privtrans->__n_size;__copy->__d_size=__privtrans->__d_size;__copy->__k_size=__privtrans->__k_size; |
28489
|
|
|
|
|
|
|
} |
28490
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
28491
|
|
|
|
|
|
|
} |
28492
|
|
|
|
|
|
|
} |
28493
|
|
|
|
|
|
|
|
28494
|
|
|
|
|
|
|
|
28495
|
0
|
|
|
|
|
|
void pdl_attachtonearest_readdata(pdl_trans *__tr ) { |
28496
|
|
|
|
|
|
|
int __dim; |
28497
|
0
|
|
|
|
|
|
pdl_attachtonearest_struct *__privtrans = (pdl_attachtonearest_struct *) __tr; |
28498
|
|
|
|
|
|
|
|
28499
|
|
|
|
|
|
|
{ |
28500
|
0
|
|
|
|
|
|
{register PDL_Indx __nr_size = __privtrans->__nr_size; |
28501
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
28502
|
|
|
|
|
|
|
|
28503
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
28504
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
28505
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28506
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28507
|
|
|
|
|
|
|
|
28508
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28509
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28510
|
|
|
|
|
|
|
|
28511
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28512
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28513
|
|
|
|
|
|
|
|
28514
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28515
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28516
|
|
|
|
|
|
|
|
28517
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28518
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28519
|
|
|
|
|
|
|
|
28520
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28521
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28522
|
|
|
|
|
|
|
|
28523
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28524
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28525
|
|
|
|
|
|
|
|
28526
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28527
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28528
|
|
|
|
|
|
|
|
28529
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28530
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28531
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28532
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28533
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28534
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28535
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28536
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28537
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28538
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28539
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28540
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28541
|
|
|
|
|
|
|
|
28542
|
|
|
|
|
|
|
|
28543
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
28544
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
28545
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
28546
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
28547
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
28548
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
28549
|
0
|
|
|
|
|
|
int transpose=0; |
28550
|
|
|
|
|
|
|
|
28551
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
28552
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
28553
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
28554
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
28555
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
28556
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
28557
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
28558
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
28559
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
28560
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
28561
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
28562
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
28563
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
28564
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
28565
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
28566
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
28567
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
28568
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
28569
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
28570
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
28571
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
28572
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
28573
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
28574
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
28575
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
28576
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
28577
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
28578
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
28579
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
28580
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
28581
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
28582
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
28583
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
28584
|
0
|
|
|
|
|
|
__tind2++ |
28585
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
28586
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
28587
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
28588
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
28589
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
28590
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
28591
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
28592
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
28593
|
|
|
|
|
|
|
) |
28594
|
|
|
|
|
|
|
{ |
28595
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
28596
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
28597
|
0
|
|
|
|
|
|
__tind1++ |
28598
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
28599
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
28600
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
28601
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
28602
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
28603
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
28604
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
28605
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
28606
|
|
|
|
|
|
|
) |
28607
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
28608
|
0
|
|
|
|
|
|
int tmprowid = 0; |
28609
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
28610
|
|
|
|
|
|
|
int ni; |
28611
|
|
|
|
|
|
|
int ki, kbest; |
28612
|
|
|
|
|
|
|
double dist, dbest; |
28613
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
28614
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
28615
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
28616
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
28617
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
28618
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
28619
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
28620
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
28621
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
28622
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
28623
|
|
|
|
|
|
|
/*-- initialize --*/ |
28624
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
28625
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
28626
|
0
|
|
|
|
|
|
kbest = 0; |
28627
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
28628
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
28629
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
28630
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
28631
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
28632
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
28633
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
28634
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
28635
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
28636
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
28637
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
28638
|
0
|
|
|
|
|
|
kbest = ki; |
28639
|
0
|
|
|
|
|
|
dbest = dist; |
28640
|
|
|
|
|
|
|
} |
28641
|
|
|
|
|
|
|
} |
28642
|
|
|
|
|
|
|
/*-- save best data --*/ |
28643
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
28644
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
28645
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
28646
|
|
|
|
|
|
|
|
28647
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
28648
|
|
|
|
|
|
|
} |
28649
|
|
|
|
|
|
|
} |
28650
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
28651
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
28652
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
28653
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
28654
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
28655
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
28656
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
28657
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
28658
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
28659
|
|
|
|
|
|
|
/*-- cleanup --*/ |
28660
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
28661
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
28662
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
28663
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
28664
|
|
|
|
|
|
|
|
28665
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
28666
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28667
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28668
|
|
|
|
|
|
|
|
28669
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28670
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28671
|
|
|
|
|
|
|
|
28672
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28673
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28674
|
|
|
|
|
|
|
|
28675
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28676
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28677
|
|
|
|
|
|
|
|
28678
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28679
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28680
|
|
|
|
|
|
|
|
28681
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28682
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28683
|
|
|
|
|
|
|
|
28684
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28685
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28686
|
|
|
|
|
|
|
|
28687
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28688
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28689
|
|
|
|
|
|
|
|
28690
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28691
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28692
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28693
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28694
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28695
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28696
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28697
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28698
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28699
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28700
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28701
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28702
|
|
|
|
|
|
|
|
28703
|
|
|
|
|
|
|
|
28704
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
28705
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
28706
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
28707
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
28708
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
28709
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
28710
|
0
|
|
|
|
|
|
int transpose=0; |
28711
|
|
|
|
|
|
|
|
28712
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
28713
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
28714
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
28715
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
28716
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
28717
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
28718
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
28719
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
28720
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
28721
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
28722
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
28723
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
28724
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
28725
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
28726
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
28727
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
28728
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
28729
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
28730
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
28731
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
28732
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
28733
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
28734
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
28735
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
28736
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
28737
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
28738
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
28739
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
28740
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
28741
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
28742
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
28743
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
28744
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
28745
|
0
|
|
|
|
|
|
__tind2++ |
28746
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
28747
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
28748
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
28749
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
28750
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
28751
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
28752
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
28753
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
28754
|
|
|
|
|
|
|
) |
28755
|
|
|
|
|
|
|
{ |
28756
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
28757
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
28758
|
0
|
|
|
|
|
|
__tind1++ |
28759
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
28760
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
28761
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
28762
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
28763
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
28764
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
28765
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
28766
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
28767
|
|
|
|
|
|
|
) |
28768
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
28769
|
0
|
|
|
|
|
|
int tmprowid = 0; |
28770
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
28771
|
|
|
|
|
|
|
int ni; |
28772
|
|
|
|
|
|
|
int ki, kbest; |
28773
|
|
|
|
|
|
|
double dist, dbest; |
28774
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
28775
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
28776
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
28777
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
28778
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
28779
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
28780
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
28781
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
28782
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
28783
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
28784
|
|
|
|
|
|
|
/*-- initialize --*/ |
28785
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
28786
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
28787
|
0
|
|
|
|
|
|
kbest = 0; |
28788
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
28789
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
28790
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
28791
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
28792
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
28793
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
28794
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
28795
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
28796
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
28797
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
28798
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
28799
|
0
|
|
|
|
|
|
kbest = ki; |
28800
|
0
|
|
|
|
|
|
dbest = dist; |
28801
|
|
|
|
|
|
|
} |
28802
|
|
|
|
|
|
|
} |
28803
|
|
|
|
|
|
|
/*-- save best data --*/ |
28804
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
28805
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
28806
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
28807
|
|
|
|
|
|
|
|
28808
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
28809
|
|
|
|
|
|
|
} |
28810
|
|
|
|
|
|
|
} |
28811
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
28812
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
28813
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
28814
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
28815
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
28816
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
28817
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
28818
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
28819
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
28820
|
|
|
|
|
|
|
/*-- cleanup --*/ |
28821
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
28822
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
28823
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
28824
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
28825
|
|
|
|
|
|
|
|
28826
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
28827
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28828
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28829
|
|
|
|
|
|
|
|
28830
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28831
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28832
|
|
|
|
|
|
|
|
28833
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28834
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28835
|
|
|
|
|
|
|
|
28836
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28837
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28838
|
|
|
|
|
|
|
|
28839
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
28840
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
28841
|
|
|
|
|
|
|
|
28842
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
28843
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
28844
|
|
|
|
|
|
|
|
28845
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
28846
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
28847
|
|
|
|
|
|
|
|
28848
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
28849
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
28850
|
|
|
|
|
|
|
|
28851
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
28852
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
28853
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
28854
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
28855
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
28856
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
28857
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
28858
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
28859
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
28860
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
28861
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
28862
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
28863
|
|
|
|
|
|
|
|
28864
|
|
|
|
|
|
|
|
28865
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
28866
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
28867
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
28868
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
28869
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
28870
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
28871
|
0
|
|
|
|
|
|
int transpose=0; |
28872
|
|
|
|
|
|
|
|
28873
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
28874
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
28875
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
28876
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
28877
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
28878
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
28879
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
28880
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
28881
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
28882
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
28883
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
28884
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
28885
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
28886
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
28887
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
28888
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
28889
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
28890
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
28891
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
28892
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
28893
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
28894
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
28895
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
28896
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
28897
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
28898
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
28899
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
28900
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
28901
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
28902
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
28903
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
28904
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
28905
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
28906
|
0
|
|
|
|
|
|
__tind2++ |
28907
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
28908
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
28909
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
28910
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
28911
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
28912
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
28913
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
28914
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
28915
|
|
|
|
|
|
|
) |
28916
|
|
|
|
|
|
|
{ |
28917
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
28918
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
28919
|
0
|
|
|
|
|
|
__tind1++ |
28920
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
28921
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
28922
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
28923
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
28924
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
28925
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
28926
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
28927
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
28928
|
|
|
|
|
|
|
) |
28929
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
28930
|
0
|
|
|
|
|
|
int tmprowid = 0; |
28931
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
28932
|
|
|
|
|
|
|
int ni; |
28933
|
|
|
|
|
|
|
int ki, kbest; |
28934
|
|
|
|
|
|
|
double dist, dbest; |
28935
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
28936
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
28937
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
28938
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
28939
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
28940
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
28941
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
28942
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
28943
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
28944
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
28945
|
|
|
|
|
|
|
/*-- initialize --*/ |
28946
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
28947
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
28948
|
0
|
|
|
|
|
|
kbest = 0; |
28949
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
28950
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
28951
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
28952
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
28953
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
28954
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
28955
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
28956
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
28957
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
28958
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
28959
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
28960
|
0
|
|
|
|
|
|
kbest = ki; |
28961
|
0
|
|
|
|
|
|
dbest = dist; |
28962
|
|
|
|
|
|
|
} |
28963
|
|
|
|
|
|
|
} |
28964
|
|
|
|
|
|
|
/*-- save best data --*/ |
28965
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
28966
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
28967
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
28968
|
|
|
|
|
|
|
|
28969
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
28970
|
|
|
|
|
|
|
} |
28971
|
|
|
|
|
|
|
} |
28972
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
28973
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
28974
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
28975
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
28976
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
28977
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
28978
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
28979
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
28980
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
28981
|
|
|
|
|
|
|
/*-- cleanup --*/ |
28982
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
28983
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
28984
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
28985
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
28986
|
|
|
|
|
|
|
|
28987
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
28988
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
28989
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
28990
|
|
|
|
|
|
|
|
28991
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
28992
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
28993
|
|
|
|
|
|
|
|
28994
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
28995
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
28996
|
|
|
|
|
|
|
|
28997
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
28998
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
28999
|
|
|
|
|
|
|
|
29000
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
29001
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
29002
|
|
|
|
|
|
|
|
29003
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
29004
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
29005
|
|
|
|
|
|
|
|
29006
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
29007
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
29008
|
|
|
|
|
|
|
|
29009
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
29010
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
29011
|
|
|
|
|
|
|
|
29012
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
29013
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
29014
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
29015
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
29016
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
29017
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
29018
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
29019
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
29020
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
29021
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
29022
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
29023
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
29024
|
|
|
|
|
|
|
|
29025
|
|
|
|
|
|
|
|
29026
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
29027
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
29028
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
29029
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
29030
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
29031
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
29032
|
0
|
|
|
|
|
|
int transpose=0; |
29033
|
|
|
|
|
|
|
|
29034
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
29035
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
29036
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
29037
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
29038
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
29039
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
29040
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
29041
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
29042
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
29043
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
29044
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
29045
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
29046
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
29047
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
29048
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
29049
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
29050
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
29051
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
29052
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
29053
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
29054
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
29055
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
29056
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
29057
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
29058
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
29059
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
29060
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
29061
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
29062
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
29063
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
29064
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
29065
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
29066
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
29067
|
0
|
|
|
|
|
|
__tind2++ |
29068
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
29069
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
29070
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
29071
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
29072
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
29073
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
29074
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
29075
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
29076
|
|
|
|
|
|
|
) |
29077
|
|
|
|
|
|
|
{ |
29078
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
29079
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
29080
|
0
|
|
|
|
|
|
__tind1++ |
29081
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
29082
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
29083
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
29084
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
29085
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
29086
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
29087
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
29088
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
29089
|
|
|
|
|
|
|
) |
29090
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
29091
|
0
|
|
|
|
|
|
int tmprowid = 0; |
29092
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
29093
|
|
|
|
|
|
|
int ni; |
29094
|
|
|
|
|
|
|
int ki, kbest; |
29095
|
|
|
|
|
|
|
double dist, dbest; |
29096
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
29097
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
29098
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
29099
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
29100
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
29101
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
29102
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
29103
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
29104
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
29105
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
29106
|
|
|
|
|
|
|
/*-- initialize --*/ |
29107
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
29108
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
29109
|
0
|
|
|
|
|
|
kbest = 0; |
29110
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29111
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29112
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29113
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
29114
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
29115
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
29116
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
29117
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29118
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29119
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29120
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
29121
|
0
|
|
|
|
|
|
kbest = ki; |
29122
|
0
|
|
|
|
|
|
dbest = dist; |
29123
|
|
|
|
|
|
|
} |
29124
|
|
|
|
|
|
|
} |
29125
|
|
|
|
|
|
|
/*-- save best data --*/ |
29126
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
29127
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
29128
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
29129
|
|
|
|
|
|
|
|
29130
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
29131
|
|
|
|
|
|
|
} |
29132
|
|
|
|
|
|
|
} |
29133
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
29134
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
29135
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
29136
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
29137
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
29138
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
29139
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
29140
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
29141
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
29142
|
|
|
|
|
|
|
/*-- cleanup --*/ |
29143
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
29144
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
29145
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
29146
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
29147
|
|
|
|
|
|
|
|
29148
|
0
|
|
|
|
|
|
} } break; case PDL_IND: { |
29149
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29150
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
29151
|
|
|
|
|
|
|
|
29152
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29153
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
29154
|
|
|
|
|
|
|
|
29155
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29156
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
29157
|
|
|
|
|
|
|
|
29158
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
29159
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
29160
|
|
|
|
|
|
|
|
29161
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
29162
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
29163
|
|
|
|
|
|
|
|
29164
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
29165
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
29166
|
|
|
|
|
|
|
|
29167
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
29168
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
29169
|
|
|
|
|
|
|
|
29170
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
29171
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
29172
|
|
|
|
|
|
|
|
29173
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
29174
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
29175
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
29176
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
29177
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
29178
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
29179
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
29180
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
29181
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
29182
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
29183
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
29184
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
29185
|
|
|
|
|
|
|
|
29186
|
|
|
|
|
|
|
|
29187
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
29188
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
29189
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
29190
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
29191
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
29192
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
29193
|
0
|
|
|
|
|
|
int transpose=0; |
29194
|
|
|
|
|
|
|
|
29195
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
29196
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
29197
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
29198
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
29199
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
29200
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
29201
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
29202
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
29203
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
29204
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
29205
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
29206
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
29207
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
29208
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
29209
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
29210
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
29211
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
29212
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
29213
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
29214
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
29215
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
29216
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
29217
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
29218
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
29219
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
29220
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
29221
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
29222
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
29223
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
29224
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
29225
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
29226
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
29227
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
29228
|
0
|
|
|
|
|
|
__tind2++ |
29229
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
29230
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
29231
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
29232
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
29233
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
29234
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
29235
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
29236
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
29237
|
|
|
|
|
|
|
) |
29238
|
|
|
|
|
|
|
{ |
29239
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
29240
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
29241
|
0
|
|
|
|
|
|
__tind1++ |
29242
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
29243
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
29244
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
29245
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
29246
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
29247
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
29248
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
29249
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
29250
|
|
|
|
|
|
|
) |
29251
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
29252
|
0
|
|
|
|
|
|
int tmprowid = 0; |
29253
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
29254
|
|
|
|
|
|
|
int ni; |
29255
|
|
|
|
|
|
|
int ki, kbest; |
29256
|
|
|
|
|
|
|
double dist, dbest; |
29257
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
29258
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
29259
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
29260
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
29261
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
29262
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
29263
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
29264
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
29265
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
29266
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
29267
|
|
|
|
|
|
|
/*-- initialize --*/ |
29268
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
29269
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
29270
|
0
|
|
|
|
|
|
kbest = 0; |
29271
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29272
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29273
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29274
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
29275
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
29276
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
29277
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
29278
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29279
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29280
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29281
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
29282
|
0
|
|
|
|
|
|
kbest = ki; |
29283
|
0
|
|
|
|
|
|
dbest = dist; |
29284
|
|
|
|
|
|
|
} |
29285
|
|
|
|
|
|
|
} |
29286
|
|
|
|
|
|
|
/*-- save best data --*/ |
29287
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
29288
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
29289
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
29290
|
|
|
|
|
|
|
|
29291
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
29292
|
|
|
|
|
|
|
} |
29293
|
|
|
|
|
|
|
} |
29294
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
29295
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
29296
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
29297
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
29298
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
29299
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
29300
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
29301
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
29302
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
29303
|
|
|
|
|
|
|
/*-- cleanup --*/ |
29304
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
29305
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
29306
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
29307
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
29308
|
|
|
|
|
|
|
|
29309
|
0
|
|
|
|
|
|
} } break; case PDL_LL: { |
29310
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29311
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
29312
|
|
|
|
|
|
|
|
29313
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29314
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
29315
|
|
|
|
|
|
|
|
29316
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29317
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
29318
|
|
|
|
|
|
|
|
29319
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
29320
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
29321
|
|
|
|
|
|
|
|
29322
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
29323
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
29324
|
|
|
|
|
|
|
|
29325
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
29326
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
29327
|
|
|
|
|
|
|
|
29328
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
29329
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
29330
|
|
|
|
|
|
|
|
29331
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
29332
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
29333
|
|
|
|
|
|
|
|
29334
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
29335
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
29336
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
29337
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
29338
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
29339
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
29340
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
29341
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
29342
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
29343
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
29344
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
29345
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
29346
|
|
|
|
|
|
|
|
29347
|
|
|
|
|
|
|
|
29348
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
29349
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
29350
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
29351
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
29352
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
29353
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
29354
|
0
|
|
|
|
|
|
int transpose=0; |
29355
|
|
|
|
|
|
|
|
29356
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
29357
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
29358
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
29359
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
29360
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
29361
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
29362
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
29363
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
29364
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
29365
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
29366
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
29367
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
29368
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
29369
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
29370
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
29371
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
29372
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
29373
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
29374
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
29375
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
29376
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
29377
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
29378
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
29379
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
29380
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
29381
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
29382
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
29383
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
29384
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
29385
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
29386
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
29387
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
29388
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
29389
|
0
|
|
|
|
|
|
__tind2++ |
29390
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
29391
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
29392
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
29393
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
29394
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
29395
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
29396
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
29397
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
29398
|
|
|
|
|
|
|
) |
29399
|
|
|
|
|
|
|
{ |
29400
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
29401
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
29402
|
0
|
|
|
|
|
|
__tind1++ |
29403
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
29404
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
29405
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
29406
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
29407
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
29408
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
29409
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
29410
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
29411
|
|
|
|
|
|
|
) |
29412
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
29413
|
0
|
|
|
|
|
|
int tmprowid = 0; |
29414
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
29415
|
|
|
|
|
|
|
int ni; |
29416
|
|
|
|
|
|
|
int ki, kbest; |
29417
|
|
|
|
|
|
|
double dist, dbest; |
29418
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
29419
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
29420
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
29421
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
29422
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
29423
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
29424
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
29425
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
29426
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
29427
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
29428
|
|
|
|
|
|
|
/*-- initialize --*/ |
29429
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
29430
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
29431
|
0
|
|
|
|
|
|
kbest = 0; |
29432
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29433
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29434
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29435
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
29436
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
29437
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
29438
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
29439
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29440
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29441
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29442
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
29443
|
0
|
|
|
|
|
|
kbest = ki; |
29444
|
0
|
|
|
|
|
|
dbest = dist; |
29445
|
|
|
|
|
|
|
} |
29446
|
|
|
|
|
|
|
} |
29447
|
|
|
|
|
|
|
/*-- save best data --*/ |
29448
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
29449
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
29450
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
29451
|
|
|
|
|
|
|
|
29452
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
29453
|
|
|
|
|
|
|
} |
29454
|
|
|
|
|
|
|
} |
29455
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
29456
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
29457
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
29458
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
29459
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
29460
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
29461
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
29462
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
29463
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
29464
|
|
|
|
|
|
|
/*-- cleanup --*/ |
29465
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
29466
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
29467
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
29468
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
29469
|
|
|
|
|
|
|
|
29470
|
0
|
|
|
|
|
|
} } break; case PDL_F: { |
29471
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29472
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
29473
|
|
|
|
|
|
|
|
29474
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29475
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
29476
|
|
|
|
|
|
|
|
29477
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29478
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
29479
|
|
|
|
|
|
|
|
29480
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
29481
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
29482
|
|
|
|
|
|
|
|
29483
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
29484
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
29485
|
|
|
|
|
|
|
|
29486
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
29487
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
29488
|
|
|
|
|
|
|
|
29489
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
29490
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
29491
|
|
|
|
|
|
|
|
29492
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
29493
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
29494
|
|
|
|
|
|
|
|
29495
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
29496
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
29497
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
29498
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
29499
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
29500
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
29501
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
29502
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
29503
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
29504
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
29505
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
29506
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
29507
|
|
|
|
|
|
|
|
29508
|
|
|
|
|
|
|
|
29509
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
29510
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
29511
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
29512
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
29513
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
29514
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
29515
|
0
|
|
|
|
|
|
int transpose=0; |
29516
|
|
|
|
|
|
|
|
29517
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
29518
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
29519
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
29520
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
29521
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
29522
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
29523
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
29524
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
29525
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
29526
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
29527
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
29528
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
29529
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
29530
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
29531
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
29532
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
29533
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
29534
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
29535
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
29536
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
29537
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
29538
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
29539
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
29540
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
29541
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
29542
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
29543
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
29544
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
29545
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
29546
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
29547
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
29548
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
29549
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
29550
|
0
|
|
|
|
|
|
__tind2++ |
29551
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
29552
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
29553
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
29554
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
29555
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
29556
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
29557
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
29558
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
29559
|
|
|
|
|
|
|
) |
29560
|
|
|
|
|
|
|
{ |
29561
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
29562
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
29563
|
0
|
|
|
|
|
|
__tind1++ |
29564
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
29565
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
29566
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
29567
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
29568
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
29569
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
29570
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
29571
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
29572
|
|
|
|
|
|
|
) |
29573
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
29574
|
0
|
|
|
|
|
|
int tmprowid = 0; |
29575
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
29576
|
|
|
|
|
|
|
int ni; |
29577
|
|
|
|
|
|
|
int ki, kbest; |
29578
|
|
|
|
|
|
|
double dist, dbest; |
29579
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
29580
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
29581
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
29582
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
29583
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
29584
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
29585
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
29586
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
29587
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
29588
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
29589
|
|
|
|
|
|
|
/*-- initialize --*/ |
29590
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
29591
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
29592
|
0
|
|
|
|
|
|
kbest = 0; |
29593
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29594
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29595
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29596
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
29597
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
29598
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
29599
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
29600
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29601
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29602
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29603
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
29604
|
0
|
|
|
|
|
|
kbest = ki; |
29605
|
0
|
|
|
|
|
|
dbest = dist; |
29606
|
|
|
|
|
|
|
} |
29607
|
|
|
|
|
|
|
} |
29608
|
|
|
|
|
|
|
/*-- save best data --*/ |
29609
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
29610
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
29611
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
29612
|
|
|
|
|
|
|
|
29613
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
29614
|
|
|
|
|
|
|
} |
29615
|
|
|
|
|
|
|
} |
29616
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
29617
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
29618
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
29619
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
29620
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
29621
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
29622
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
29623
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
29624
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
29625
|
|
|
|
|
|
|
/*-- cleanup --*/ |
29626
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
29627
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
29628
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
29629
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
29630
|
|
|
|
|
|
|
|
29631
|
0
|
|
|
|
|
|
} } break; case PDL_D: { |
29632
|
0
|
0
|
|
|
|
|
PDL_Double * data_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29633
|
0
|
|
|
|
|
|
PDL_Double * data_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data)); |
29634
|
|
|
|
|
|
|
|
29635
|
0
|
0
|
|
|
|
|
PDL_Long * mask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29636
|
0
|
|
|
|
|
|
PDL_Long * mask_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
29637
|
|
|
|
|
|
|
|
29638
|
0
|
0
|
|
|
|
|
PDL_Double * weight_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29639
|
0
|
|
|
|
|
|
PDL_Double * weight_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data)); |
29640
|
|
|
|
|
|
|
|
29641
|
0
|
0
|
|
|
|
|
PDL_Long * rowids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3])))); |
|
|
0
|
|
|
|
|
|
29642
|
0
|
|
|
|
|
|
PDL_Long * rowids_physdatap = ((PDL_Long *)((__privtrans->pdls[3])->data)); |
29643
|
|
|
|
|
|
|
|
29644
|
0
|
0
|
|
|
|
|
PDL_Double * cdata_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4])))); |
|
|
0
|
|
|
|
|
|
29645
|
0
|
|
|
|
|
|
PDL_Double * cdata_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data)); |
29646
|
|
|
|
|
|
|
|
29647
|
0
|
0
|
|
|
|
|
PDL_Long * cmask_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5])))); |
|
|
0
|
|
|
|
|
|
29648
|
0
|
|
|
|
|
|
PDL_Long * cmask_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data)); |
29649
|
|
|
|
|
|
|
|
29650
|
0
|
0
|
|
|
|
|
PDL_Long * clusterids_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6])))); |
|
|
0
|
|
|
|
|
|
29651
|
0
|
|
|
|
|
|
PDL_Long * clusterids_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data)); |
29652
|
|
|
|
|
|
|
|
29653
|
0
|
0
|
|
|
|
|
PDL_Double * cdist_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7])))); |
|
|
0
|
|
|
|
|
|
29654
|
0
|
|
|
|
|
|
PDL_Double * cdist_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data)); |
29655
|
|
|
|
|
|
|
|
29656
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_clusterids_nr = __privtrans->__inc_clusterids_nr; |
29657
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_d = __privtrans->__inc_cdata_d; |
29658
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdata_k = __privtrans->__inc_cdata_k; |
29659
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cdist_nr = __privtrans->__inc_cdist_nr; |
29660
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_d = __privtrans->__inc_mask_d; |
29661
|
0
|
|
|
|
|
|
register PDL_Indx __inc_mask_n = __privtrans->__inc_mask_n; |
29662
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_d = __privtrans->__inc_cmask_d; |
29663
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cmask_k = __privtrans->__inc_cmask_k; |
29664
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_d = __privtrans->__inc_data_d; |
29665
|
0
|
|
|
|
|
|
register PDL_Indx __inc_data_n = __privtrans->__inc_data_n; |
29666
|
0
|
|
|
|
|
|
register PDL_Indx __inc_weight_d = __privtrans->__inc_weight_d; |
29667
|
0
|
|
|
|
|
|
register PDL_Indx __inc_rowids_nr = __privtrans->__inc_rowids_nr; |
29668
|
|
|
|
|
|
|
|
29669
|
|
|
|
|
|
|
|
29670
|
0
|
|
|
|
|
|
double **datapp = (double **)pp_alloc(__privtrans->__n_size); |
29671
|
0
|
|
|
|
|
|
int **maskpp = (int **)pp_alloc(__privtrans->__n_size); |
29672
|
0
|
|
|
|
|
|
double **cdatapp = (double **)pp_alloc(__privtrans->__k_size); |
29673
|
0
|
|
|
|
|
|
int **cmaskpp = (int **)pp_alloc(__privtrans->__k_size); |
29674
|
|
|
|
|
|
|
double *tmpdatapp[2]; |
29675
|
|
|
|
|
|
|
int *tmpmaskpp[2]; |
29676
|
0
|
|
|
|
|
|
int transpose=0; |
29677
|
|
|
|
|
|
|
|
29678
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
29679
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
29680
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
29681
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
29682
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
29683
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
29684
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
29685
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
29686
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
29687
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
29688
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3]; |
29689
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4]; |
29690
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5]; |
29691
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6]; |
29692
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7]; |
29693
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
29694
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
29695
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
29696
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3]; |
29697
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4]; |
29698
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5]; |
29699
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6]; |
29700
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7]; |
29701
|
0
|
|
|
|
|
|
data_datap += __offsp[0]; |
29702
|
0
|
|
|
|
|
|
mask_datap += __offsp[1]; |
29703
|
0
|
|
|
|
|
|
weight_datap += __offsp[2]; |
29704
|
0
|
|
|
|
|
|
rowids_datap += __offsp[3]; |
29705
|
0
|
|
|
|
|
|
cdata_datap += __offsp[4]; |
29706
|
0
|
|
|
|
|
|
cmask_datap += __offsp[5]; |
29707
|
0
|
|
|
|
|
|
clusterids_datap += __offsp[6]; |
29708
|
0
|
|
|
|
|
|
cdist_datap += __offsp[7]; |
29709
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
29710
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
29711
|
0
|
|
|
|
|
|
__tind2++ |
29712
|
0
|
|
|
|
|
|
,data_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
29713
|
0
|
|
|
|
|
|
,mask_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
29714
|
0
|
|
|
|
|
|
,weight_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
29715
|
0
|
|
|
|
|
|
,rowids_datap += __tinc1_3 - __tinc0_3 * __tdims0 |
29716
|
0
|
|
|
|
|
|
,cdata_datap += __tinc1_4 - __tinc0_4 * __tdims0 |
29717
|
0
|
|
|
|
|
|
,cmask_datap += __tinc1_5 - __tinc0_5 * __tdims0 |
29718
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc1_6 - __tinc0_6 * __tdims0 |
29719
|
0
|
|
|
|
|
|
,cdist_datap += __tinc1_7 - __tinc0_7 * __tdims0 |
29720
|
|
|
|
|
|
|
) |
29721
|
|
|
|
|
|
|
{ |
29722
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
29723
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
29724
|
0
|
|
|
|
|
|
__tind1++ |
29725
|
0
|
|
|
|
|
|
,data_datap += __tinc0_0 |
29726
|
0
|
|
|
|
|
|
,mask_datap += __tinc0_1 |
29727
|
0
|
|
|
|
|
|
,weight_datap += __tinc0_2 |
29728
|
0
|
|
|
|
|
|
,rowids_datap += __tinc0_3 |
29729
|
0
|
|
|
|
|
|
,cdata_datap += __tinc0_4 |
29730
|
0
|
|
|
|
|
|
,cmask_datap += __tinc0_5 |
29731
|
0
|
|
|
|
|
|
,clusterids_datap += __tinc0_6 |
29732
|
0
|
|
|
|
|
|
,cdist_datap += __tinc0_7 |
29733
|
|
|
|
|
|
|
) |
29734
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
29735
|
0
|
|
|
|
|
|
int tmprowid = 0; |
29736
|
0
|
|
|
|
|
|
int tmpctrid = 1; |
29737
|
|
|
|
|
|
|
int ni; |
29738
|
|
|
|
|
|
|
int ki, kbest; |
29739
|
|
|
|
|
|
|
double dist, dbest; |
29740
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__n_size, __privtrans->__d_size, data_datap, datapp); |
29741
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__n_size, __privtrans->__d_size, mask_datap, maskpp); |
29742
|
0
|
|
|
|
|
|
p2pp_dbl(__privtrans->__k_size, __privtrans->__d_size, cdata_datap, cdatapp); |
29743
|
0
|
|
|
|
|
|
p2pp_int(__privtrans->__k_size, __privtrans->__d_size, cmask_datap, cmaskpp); |
29744
|
|
|
|
|
|
|
/*-- loop over all target rows --*/ |
29745
|
|
|
|
|
|
|
{PDL_COMMENT("Open nr") register PDL_Indx nr; |
29746
|
0
|
0
|
|
|
|
|
for(nr=0; nr<(__nr_size); nr++) { |
29747
|
0
|
0
|
|
|
|
|
ni = (rowids_datap)[0+(__inc_rowids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") ; |
29748
|
0
|
|
|
|
|
|
tmpdatapp[tmprowid] = datapp[ni]; |
29749
|
0
|
|
|
|
|
|
tmpmaskpp[tmprowid] = maskpp[ni]; |
29750
|
|
|
|
|
|
|
/*-- initialize --*/ |
29751
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[0]; |
29752
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[0]; |
29753
|
0
|
|
|
|
|
|
kbest = 0; |
29754
|
0
|
|
|
|
|
|
dbest = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29755
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29756
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29757
|
|
|
|
|
|
|
/*-- loop over all centroids --*/ |
29758
|
0
|
0
|
|
|
|
|
for (ki=1; ki < __privtrans->__k_size; ki++) { |
29759
|
0
|
|
|
|
|
|
tmpdatapp[tmpctrid] = cdatapp[ki]; |
29760
|
0
|
|
|
|
|
|
tmpmaskpp[tmpctrid] = cmaskpp[ki]; |
29761
|
0
|
|
|
|
|
|
dist = clusterdistance(2, __privtrans->__d_size, tmpdatapp, tmpmaskpp, weight_datap, |
29762
|
|
|
|
|
|
|
1, 1, &tmprowid, &tmpctrid, |
29763
|
0
|
|
|
|
|
|
*__privtrans->distFlag, *__privtrans->methodFlag, transpose); |
29764
|
0
|
0
|
|
|
|
|
if (dist < dbest) { |
29765
|
0
|
|
|
|
|
|
kbest = ki; |
29766
|
0
|
|
|
|
|
|
dbest = dist; |
29767
|
|
|
|
|
|
|
} |
29768
|
|
|
|
|
|
|
} |
29769
|
|
|
|
|
|
|
/*-- save best data --*/ |
29770
|
0
|
0
|
|
|
|
|
(clusterids_datap)[0+(__inc_clusterids_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = kbest; |
29771
|
0
|
0
|
|
|
|
|
(cdist_datap)[0+(__inc_cdist_nr*PP_INDTERM(__privtrans->__nr_size, nr))] PDL_COMMENT("ACCESS()") = dbest; |
29772
|
|
|
|
|
|
|
}} PDL_COMMENT("Close nr") |
29773
|
|
|
|
|
|
|
|
29774
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
29775
|
|
|
|
|
|
|
} |
29776
|
|
|
|
|
|
|
} |
29777
|
0
|
|
|
|
|
|
data_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
29778
|
0
|
|
|
|
|
|
mask_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
29779
|
0
|
|
|
|
|
|
weight_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
29780
|
0
|
|
|
|
|
|
rowids_datap -= __tinc1_3 * __tdims1 + __offsp[3]; |
29781
|
0
|
|
|
|
|
|
cdata_datap -= __tinc1_4 * __tdims1 + __offsp[4]; |
29782
|
0
|
|
|
|
|
|
cmask_datap -= __tinc1_5 * __tdims1 + __offsp[5]; |
29783
|
0
|
|
|
|
|
|
clusterids_datap -= __tinc1_6 * __tdims1 + __offsp[6]; |
29784
|
0
|
|
|
|
|
|
cdist_datap -= __tinc1_7 * __tdims1 + __offsp[7]; |
29785
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
29786
|
|
|
|
|
|
|
/*-- cleanup --*/ |
29787
|
0
|
0
|
|
|
|
|
if (datapp) free(datapp); |
29788
|
0
|
0
|
|
|
|
|
if (maskpp) free(maskpp); |
29789
|
0
|
0
|
|
|
|
|
if (cdatapp) free(cdatapp); |
29790
|
0
|
0
|
|
|
|
|
if (cmaskpp) free(cmaskpp); |
29791
|
|
|
|
|
|
|
|
29792
|
0
|
|
|
|
|
|
} break;} |
29793
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
29794
|
|
|
|
|
|
|
} |
29795
|
|
|
|
|
|
|
} |
29796
|
|
|
|
|
|
|
} |
29797
|
|
|
|
|
|
|
|
29798
|
|
|
|
|
|
|
|
29799
|
|
|
|
|
|
|
|
29800
|
|
|
|
|
|
|
|
29801
|
0
|
|
|
|
|
|
void pdl_attachtonearest_free(pdl_trans *__tr ) { |
29802
|
|
|
|
|
|
|
int __dim; |
29803
|
0
|
|
|
|
|
|
pdl_attachtonearest_struct *__privtrans = (pdl_attachtonearest_struct *) __tr; |
29804
|
|
|
|
|
|
|
|
29805
|
|
|
|
|
|
|
{ |
29806
|
|
|
|
|
|
|
|
29807
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
29808
|
0
|
|
|
|
|
|
free(__privtrans->distFlag);;free(__privtrans->methodFlag);; |
29809
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
29810
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
29811
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;; |
29812
|
|
|
|
|
|
|
} |
29813
|
|
|
|
|
|
|
|
29814
|
|
|
|
|
|
|
} |
29815
|
0
|
|
|
|
|
|
} |
29816
|
|
|
|
|
|
|
|
29817
|
|
|
|
|
|
|
|
29818
|
|
|
|
|
|
|
|
29819
|
|
|
|
|
|
|
|
29820
|
|
|
|
|
|
|
static char pdl_attachtonearest_vtable_flags[] = |
29821
|
|
|
|
|
|
|
{ 0,0,0,PDL_TPDL_VAFFINE_OK,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
29822
|
|
|
|
|
|
|
pdl_transvtable pdl_attachtonearest_vtable = { |
29823
|
|
|
|
|
|
|
0,0, 6, 8, pdl_attachtonearest_vtable_flags, |
29824
|
|
|
|
|
|
|
pdl_attachtonearest_redodims, pdl_attachtonearest_readdata, NULL, |
29825
|
|
|
|
|
|
|
pdl_attachtonearest_free,NULL,NULL,pdl_attachtonearest_copy, |
29826
|
|
|
|
|
|
|
sizeof(pdl_attachtonearest_struct),"pdl_attachtonearest_vtable" |
29827
|
|
|
|
|
|
|
}; |
29828
|
|
|
|
|
|
|
|
29829
|
|
|
|
|
|
|
typedef struct pdl_checkprototypes_struct { |
29830
|
|
|
|
|
|
|
PDL_TRANS_START(3); |
29831
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_protos_k;PDL_Indx __inc_cprotos_k;PDL_Indx __inc_otmp_n;PDL_Indx __n_size;PDL_Indx __k_size; |
29832
|
|
|
|
|
|
|
int nsize; |
29833
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
29834
|
|
|
|
|
|
|
} pdl_checkprototypes_struct; |
29835
|
|
|
|
|
|
|
|
29836
|
0
|
|
|
|
|
|
void pdl_checkprototypes_redodims(pdl_trans *__tr ) { |
29837
|
|
|
|
|
|
|
int __dim; |
29838
|
0
|
|
|
|
|
|
pdl_checkprototypes_struct *__privtrans = (pdl_checkprototypes_struct *) __tr; |
29839
|
|
|
|
|
|
|
|
29840
|
|
|
|
|
|
|
{ |
29841
|
|
|
|
|
|
|
PDL_Indx __creating[3]; |
29842
|
0
|
|
|
|
|
|
__privtrans->__n_size = __privtrans->nsize; |
29843
|
0
|
|
|
|
|
|
__privtrans->__k_size = -1; |
29844
|
0
|
|
|
|
|
|
__creating[0] = 0; |
29845
|
0
|
0
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
0
|
|
|
|
|
|
29846
|
0
|
0
|
|
|
|
|
__creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]); |
|
|
0
|
|
|
|
|
|
29847
|
|
|
|
|
|
|
{ |
29848
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
29849
|
|
|
|
|
|
|
|
29850
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
29851
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
29852
|
0
|
0
|
|
|
|
|
PDL_Byte * protos_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29853
|
0
|
|
|
|
|
|
PDL_Byte * protos_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data)); |
29854
|
|
|
|
|
|
|
|
29855
|
0
|
0
|
|
|
|
|
PDL_Byte * cprotos_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29856
|
0
|
|
|
|
|
|
PDL_Byte * cprotos_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
29857
|
|
|
|
|
|
|
|
29858
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29859
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
29860
|
|
|
|
|
|
|
|
29861
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
29862
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
29863
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
29864
|
|
|
|
|
|
|
|
29865
|
|
|
|
|
|
|
PDL_COMMENT("none") |
29866
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
29867
|
0
|
0
|
|
|
|
|
PDL_Short * protos_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29868
|
0
|
|
|
|
|
|
PDL_Short * protos_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data)); |
29869
|
|
|
|
|
|
|
|
29870
|
0
|
0
|
|
|
|
|
PDL_Short * cprotos_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29871
|
0
|
|
|
|
|
|
PDL_Short * cprotos_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data)); |
29872
|
|
|
|
|
|
|
|
29873
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29874
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
29875
|
|
|
|
|
|
|
|
29876
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
29877
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
29878
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
29879
|
|
|
|
|
|
|
|
29880
|
|
|
|
|
|
|
PDL_COMMENT("none") |
29881
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
29882
|
0
|
0
|
|
|
|
|
PDL_Ushort * protos_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29883
|
0
|
|
|
|
|
|
PDL_Ushort * protos_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data)); |
29884
|
|
|
|
|
|
|
|
29885
|
0
|
0
|
|
|
|
|
PDL_Ushort * cprotos_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29886
|
0
|
|
|
|
|
|
PDL_Ushort * cprotos_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data)); |
29887
|
|
|
|
|
|
|
|
29888
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29889
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
29890
|
|
|
|
|
|
|
|
29891
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
29892
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
29893
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
29894
|
|
|
|
|
|
|
|
29895
|
|
|
|
|
|
|
PDL_COMMENT("none") |
29896
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
29897
|
0
|
0
|
|
|
|
|
PDL_Long * protos_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
29898
|
0
|
|
|
|
|
|
PDL_Long * protos_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
29899
|
|
|
|
|
|
|
|
29900
|
0
|
0
|
|
|
|
|
PDL_Long * cprotos_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
29901
|
0
|
|
|
|
|
|
PDL_Long * cprotos_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
29902
|
|
|
|
|
|
|
|
29903
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
29904
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
29905
|
|
|
|
|
|
|
|
29906
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
29907
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
29908
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
29909
|
|
|
|
|
|
|
|
29910
|
|
|
|
|
|
|
PDL_COMMENT("none") |
29911
|
0
|
|
|
|
|
|
} break;} |
29912
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
29913
|
|
|
|
|
|
|
} |
29914
|
|
|
|
|
|
|
} |
29915
|
|
|
|
|
|
|
{ |
29916
|
|
|
|
|
|
|
static char *__parnames[] = {"protos","cprotos","otmp"}; |
29917
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,1,1}; |
29918
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::checkprototypes"; |
29919
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
29920
|
|
|
|
|
|
|
__funcname, __parnames, 3 |
29921
|
|
|
|
|
|
|
}; |
29922
|
|
|
|
|
|
|
|
29923
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
29924
|
|
|
|
|
|
|
__realdims,__creating,3, |
29925
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
29926
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
29927
|
|
|
|
|
|
|
0 ); |
29928
|
|
|
|
|
|
|
} |
29929
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
29930
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
29931
|
|
|
|
|
|
|
} |
29932
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
29933
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[0]))->dims[0]; |
29934
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
29935
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
29936
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in checkprototypes:" "Wrong dims\n"); |
29937
|
|
|
|
|
|
|
} |
29938
|
|
|
|
|
|
|
} |
29939
|
0
|
0
|
|
|
|
|
if(!__creating[1]) { |
29940
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 1) { |
29941
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
29942
|
|
|
|
|
|
|
} |
29943
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
29944
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[1]))->dims[0]; |
29945
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
29946
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
29947
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in checkprototypes:" "Wrong dims\n"); |
29948
|
|
|
|
|
|
|
} |
29949
|
|
|
|
|
|
|
} |
29950
|
|
|
|
|
|
|
} else { |
29951
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size; |
29952
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
29953
|
0
|
0
|
|
|
|
|
}if(!__creating[2]) { |
29954
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
29955
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
29956
|
|
|
|
|
|
|
} |
29957
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
29958
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[2]))->dims[0]; |
29959
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
29960
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
29961
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in checkprototypes:" "Wrong dims\n"); |
29962
|
|
|
|
|
|
|
} |
29963
|
|
|
|
|
|
|
} |
29964
|
|
|
|
|
|
|
} else { |
29965
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
29966
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,1); |
29967
|
|
|
|
|
|
|
} |
29968
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
29969
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
29970
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
29971
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
29972
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
29973
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
29974
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
29975
|
|
|
|
|
|
|
) { |
29976
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
29977
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
29978
|
|
|
|
|
|
|
} |
29979
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
29980
|
0
|
0
|
|
|
|
|
!__creating[1] && |
29981
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
29982
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
29983
|
|
|
|
|
|
|
) { |
29984
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
29985
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
29986
|
|
|
|
|
|
|
} |
29987
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
29988
|
0
|
0
|
|
|
|
|
!__creating[2] && |
29989
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
29990
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
29991
|
|
|
|
|
|
|
) { |
29992
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
29993
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
29994
|
|
|
|
|
|
|
} |
29995
|
0
|
0
|
|
|
|
|
if (hdrp) { |
29996
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
29997
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
29998
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
29999
|
|
|
|
|
|
|
int count; |
30000
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
30001
|
0
|
|
|
|
|
|
dSP; |
30002
|
0
|
|
|
|
|
|
ENTER ; |
30003
|
0
|
|
|
|
|
|
SAVETMPS ; |
30004
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
30005
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
30006
|
0
|
|
|
|
|
|
PUTBACK ; |
30007
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
30008
|
0
|
|
|
|
|
|
SPAGAIN ; |
30009
|
0
|
0
|
|
|
|
|
if(count != 1) |
30010
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
30011
|
|
|
|
|
|
|
|
30012
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
30013
|
|
|
|
|
|
|
|
30014
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
30015
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
30016
|
|
|
|
|
|
|
} |
30017
|
|
|
|
|
|
|
|
30018
|
0
|
0
|
|
|
|
|
FREETMPS ; |
30019
|
0
|
|
|
|
|
|
LEAVE ; |
30020
|
|
|
|
|
|
|
|
30021
|
|
|
|
|
|
|
|
30022
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
30023
|
|
|
|
|
|
|
|
30024
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
30025
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
30026
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
30027
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
30028
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
30029
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
30030
|
|
|
|
|
|
|
} |
30031
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
30032
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
30033
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[2]->hdrsv != hdrp ){ |
30034
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
30035
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv ); |
30036
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
30037
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
30038
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->hdrsv = hdr_copy; |
30039
|
|
|
|
|
|
|
} |
30040
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
30041
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->state |= PDL_HDRCPY; |
30042
|
|
|
|
|
|
|
|
30043
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
30044
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
30045
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
30046
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
30047
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
30048
|
0
|
|
|
|
|
|
__privtrans->__inc_protos_k = 0; else |
30049
|
0
|
0
|
|
|
|
|
__privtrans->__inc_protos_k = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30050
|
0
|
|
|
|
|
|
__privtrans->__inc_cprotos_k = 0; else |
30051
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cprotos_k = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30052
|
0
|
|
|
|
|
|
__privtrans->__inc_otmp_n = 0; else |
30053
|
0
|
0
|
|
|
|
|
__privtrans->__inc_otmp_n = PDL_REPRINC(__privtrans->pdls[2],0); __privtrans->__ddone = 1; |
30054
|
|
|
|
|
|
|
} |
30055
|
0
|
|
|
|
|
|
} |
30056
|
|
|
|
|
|
|
|
30057
|
|
|
|
|
|
|
|
30058
|
0
|
|
|
|
|
|
pdl_trans * pdl_checkprototypes_copy(pdl_trans *__tr ) { |
30059
|
|
|
|
|
|
|
int __dim; |
30060
|
0
|
|
|
|
|
|
pdl_checkprototypes_struct *__privtrans = (pdl_checkprototypes_struct *) __tr; |
30061
|
|
|
|
|
|
|
|
30062
|
|
|
|
|
|
|
{ |
30063
|
0
|
|
|
|
|
|
pdl_checkprototypes_struct *__copy = malloc(sizeof(pdl_checkprototypes_struct)); |
30064
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
30065
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
30066
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
30067
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
30068
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
30069
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
30070
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
30071
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
30072
|
|
|
|
|
|
|
{int i; |
30073
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
30074
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
30075
|
|
|
|
|
|
|
} |
30076
|
0
|
|
|
|
|
|
(__copy->nsize) = (__privtrans->nsize);; |
30077
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
30078
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_protos_k=__copy->__inc_protos_k;__privtrans->__inc_cprotos_k=__copy->__inc_cprotos_k;__privtrans->__inc_otmp_n=__copy->__inc_otmp_n;__copy->__n_size=__privtrans->__n_size;__copy->__k_size=__privtrans->__k_size; |
30079
|
|
|
|
|
|
|
} |
30080
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
30081
|
|
|
|
|
|
|
} |
30082
|
|
|
|
|
|
|
} |
30083
|
|
|
|
|
|
|
|
30084
|
|
|
|
|
|
|
|
30085
|
0
|
|
|
|
|
|
void pdl_checkprototypes_readdata(pdl_trans *__tr ) { |
30086
|
|
|
|
|
|
|
int __dim; |
30087
|
0
|
|
|
|
|
|
pdl_checkprototypes_struct *__privtrans = (pdl_checkprototypes_struct *) __tr; |
30088
|
|
|
|
|
|
|
|
30089
|
|
|
|
|
|
|
{ |
30090
|
0
|
|
|
|
|
|
{register PDL_Indx __k_size = __privtrans->__k_size; |
30091
|
0
|
|
|
|
|
|
register PDL_Indx __n_size = __privtrans->__n_size; |
30092
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
30093
|
|
|
|
|
|
|
|
30094
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
30095
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
30096
|
0
|
0
|
|
|
|
|
PDL_Byte * protos_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30097
|
0
|
|
|
|
|
|
PDL_Byte * protos_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data)); |
30098
|
|
|
|
|
|
|
|
30099
|
0
|
0
|
|
|
|
|
PDL_Byte * cprotos_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30100
|
0
|
|
|
|
|
|
PDL_Byte * cprotos_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
30101
|
|
|
|
|
|
|
|
30102
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30103
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
30104
|
|
|
|
|
|
|
|
30105
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
30106
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
30107
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
30108
|
|
|
|
|
|
|
|
30109
|
|
|
|
|
|
|
|
30110
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30111
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30112
|
0
|
|
|
|
|
|
barf("checkprototypes(): number of prototypes \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30113
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30114
|
|
|
|
|
|
|
} |
30115
|
|
|
|
|
|
|
|
30116
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30117
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30118
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30119
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30120
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30121
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30122
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30123
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30124
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30125
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30126
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30127
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30128
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30129
|
0
|
|
|
|
|
|
protos_datap += __offsp[0]; |
30130
|
0
|
|
|
|
|
|
cprotos_datap += __offsp[1]; |
30131
|
0
|
|
|
|
|
|
otmp_datap += __offsp[2]; |
30132
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30133
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30134
|
0
|
|
|
|
|
|
__tind2++ |
30135
|
0
|
|
|
|
|
|
,protos_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30136
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30137
|
0
|
|
|
|
|
|
,otmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30138
|
|
|
|
|
|
|
) |
30139
|
|
|
|
|
|
|
{ |
30140
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30141
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30142
|
0
|
|
|
|
|
|
__tind1++ |
30143
|
0
|
|
|
|
|
|
,protos_datap += __tinc0_0 |
30144
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc0_1 |
30145
|
0
|
|
|
|
|
|
,otmp_datap += __tinc0_2 |
30146
|
|
|
|
|
|
|
) |
30147
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30148
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30149
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close n") |
|
|
0
|
|
|
|
|
|
30150
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30151
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
30152
|
0
|
0
|
|
|
|
|
int protoi = (protos_datap)[0+(__inc_protos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") ; |
30153
|
0
|
0
|
|
|
|
|
for (; (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") ; protoi = (protoi+1)%__privtrans->__n_size) { ; } |
|
|
0
|
|
|
|
|
|
30154
|
0
|
0
|
|
|
|
|
(cprotos_datap)[0+(__inc_cprotos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = protoi; |
30155
|
0
|
0
|
|
|
|
|
(otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") = 1; |
30156
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
30157
|
|
|
|
|
|
|
|
30158
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30159
|
|
|
|
|
|
|
} |
30160
|
|
|
|
|
|
|
} |
30161
|
0
|
|
|
|
|
|
protos_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30162
|
0
|
|
|
|
|
|
cprotos_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30163
|
0
|
|
|
|
|
|
otmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30164
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30165
|
|
|
|
|
|
|
|
30166
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
30167
|
0
|
0
|
|
|
|
|
PDL_Short * protos_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30168
|
0
|
|
|
|
|
|
PDL_Short * protos_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data)); |
30169
|
|
|
|
|
|
|
|
30170
|
0
|
0
|
|
|
|
|
PDL_Short * cprotos_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30171
|
0
|
|
|
|
|
|
PDL_Short * cprotos_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data)); |
30172
|
|
|
|
|
|
|
|
30173
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30174
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
30175
|
|
|
|
|
|
|
|
30176
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
30177
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
30178
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
30179
|
|
|
|
|
|
|
|
30180
|
|
|
|
|
|
|
|
30181
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30182
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30183
|
0
|
|
|
|
|
|
barf("checkprototypes(): number of prototypes \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30184
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30185
|
|
|
|
|
|
|
} |
30186
|
|
|
|
|
|
|
|
30187
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30188
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30189
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30190
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30191
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30192
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30193
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30194
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30195
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30196
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30197
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30198
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30199
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30200
|
0
|
|
|
|
|
|
protos_datap += __offsp[0]; |
30201
|
0
|
|
|
|
|
|
cprotos_datap += __offsp[1]; |
30202
|
0
|
|
|
|
|
|
otmp_datap += __offsp[2]; |
30203
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30204
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30205
|
0
|
|
|
|
|
|
__tind2++ |
30206
|
0
|
|
|
|
|
|
,protos_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30207
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30208
|
0
|
|
|
|
|
|
,otmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30209
|
|
|
|
|
|
|
) |
30210
|
|
|
|
|
|
|
{ |
30211
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30212
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30213
|
0
|
|
|
|
|
|
__tind1++ |
30214
|
0
|
|
|
|
|
|
,protos_datap += __tinc0_0 |
30215
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc0_1 |
30216
|
0
|
|
|
|
|
|
,otmp_datap += __tinc0_2 |
30217
|
|
|
|
|
|
|
) |
30218
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30219
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30220
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close n") |
|
|
0
|
|
|
|
|
|
30221
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30222
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
30223
|
0
|
0
|
|
|
|
|
int protoi = (protos_datap)[0+(__inc_protos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") ; |
30224
|
0
|
0
|
|
|
|
|
for (; (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") ; protoi = (protoi+1)%__privtrans->__n_size) { ; } |
|
|
0
|
|
|
|
|
|
30225
|
0
|
0
|
|
|
|
|
(cprotos_datap)[0+(__inc_cprotos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = protoi; |
30226
|
0
|
0
|
|
|
|
|
(otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") = 1; |
30227
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
30228
|
|
|
|
|
|
|
|
30229
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30230
|
|
|
|
|
|
|
} |
30231
|
|
|
|
|
|
|
} |
30232
|
0
|
|
|
|
|
|
protos_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30233
|
0
|
|
|
|
|
|
cprotos_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30234
|
0
|
|
|
|
|
|
otmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30235
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30236
|
|
|
|
|
|
|
|
30237
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
30238
|
0
|
0
|
|
|
|
|
PDL_Ushort * protos_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30239
|
0
|
|
|
|
|
|
PDL_Ushort * protos_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data)); |
30240
|
|
|
|
|
|
|
|
30241
|
0
|
0
|
|
|
|
|
PDL_Ushort * cprotos_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30242
|
0
|
|
|
|
|
|
PDL_Ushort * cprotos_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data)); |
30243
|
|
|
|
|
|
|
|
30244
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30245
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
30246
|
|
|
|
|
|
|
|
30247
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
30248
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
30249
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
30250
|
|
|
|
|
|
|
|
30251
|
|
|
|
|
|
|
|
30252
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30253
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30254
|
0
|
|
|
|
|
|
barf("checkprototypes(): number of prototypes \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30255
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30256
|
|
|
|
|
|
|
} |
30257
|
|
|
|
|
|
|
|
30258
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30259
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30260
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30261
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30262
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30263
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30264
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30265
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30266
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30267
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30268
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30269
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30270
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30271
|
0
|
|
|
|
|
|
protos_datap += __offsp[0]; |
30272
|
0
|
|
|
|
|
|
cprotos_datap += __offsp[1]; |
30273
|
0
|
|
|
|
|
|
otmp_datap += __offsp[2]; |
30274
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30275
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30276
|
0
|
|
|
|
|
|
__tind2++ |
30277
|
0
|
|
|
|
|
|
,protos_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30278
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30279
|
0
|
|
|
|
|
|
,otmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30280
|
|
|
|
|
|
|
) |
30281
|
|
|
|
|
|
|
{ |
30282
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30283
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30284
|
0
|
|
|
|
|
|
__tind1++ |
30285
|
0
|
|
|
|
|
|
,protos_datap += __tinc0_0 |
30286
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc0_1 |
30287
|
0
|
|
|
|
|
|
,otmp_datap += __tinc0_2 |
30288
|
|
|
|
|
|
|
) |
30289
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30290
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30291
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close n") |
|
|
0
|
|
|
|
|
|
30292
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30293
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
30294
|
0
|
0
|
|
|
|
|
int protoi = (protos_datap)[0+(__inc_protos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") ; |
30295
|
0
|
0
|
|
|
|
|
for (; (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") ; protoi = (protoi+1)%__privtrans->__n_size) { ; } |
|
|
0
|
|
|
|
|
|
30296
|
0
|
0
|
|
|
|
|
(cprotos_datap)[0+(__inc_cprotos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = protoi; |
30297
|
0
|
0
|
|
|
|
|
(otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") = 1; |
30298
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
30299
|
|
|
|
|
|
|
|
30300
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30301
|
|
|
|
|
|
|
} |
30302
|
|
|
|
|
|
|
} |
30303
|
0
|
|
|
|
|
|
protos_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30304
|
0
|
|
|
|
|
|
cprotos_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30305
|
0
|
|
|
|
|
|
otmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30306
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30307
|
|
|
|
|
|
|
|
30308
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
30309
|
0
|
0
|
|
|
|
|
PDL_Long * protos_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30310
|
0
|
|
|
|
|
|
PDL_Long * protos_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
30311
|
|
|
|
|
|
|
|
30312
|
0
|
0
|
|
|
|
|
PDL_Long * cprotos_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30313
|
0
|
|
|
|
|
|
PDL_Long * cprotos_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
30314
|
|
|
|
|
|
|
|
30315
|
0
|
0
|
|
|
|
|
PDL_Byte * otmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30316
|
0
|
|
|
|
|
|
PDL_Byte * otmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
30317
|
|
|
|
|
|
|
|
30318
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_protos_k = __privtrans->__inc_protos_k; |
30319
|
0
|
|
|
|
|
|
register PDL_Indx __inc_cprotos_k = __privtrans->__inc_cprotos_k; |
30320
|
0
|
|
|
|
|
|
register PDL_Indx __inc_otmp_n = __privtrans->__inc_otmp_n; |
30321
|
|
|
|
|
|
|
|
30322
|
|
|
|
|
|
|
|
30323
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30324
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30325
|
0
|
|
|
|
|
|
barf("checkprototypes(): number of prototypes \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30326
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30327
|
|
|
|
|
|
|
} |
30328
|
|
|
|
|
|
|
|
30329
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30330
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30331
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30332
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30333
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30334
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30335
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30336
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30337
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30338
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30339
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30340
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30341
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30342
|
0
|
|
|
|
|
|
protos_datap += __offsp[0]; |
30343
|
0
|
|
|
|
|
|
cprotos_datap += __offsp[1]; |
30344
|
0
|
|
|
|
|
|
otmp_datap += __offsp[2]; |
30345
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30346
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30347
|
0
|
|
|
|
|
|
__tind2++ |
30348
|
0
|
|
|
|
|
|
,protos_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30349
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30350
|
0
|
|
|
|
|
|
,otmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30351
|
|
|
|
|
|
|
) |
30352
|
|
|
|
|
|
|
{ |
30353
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30354
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30355
|
0
|
|
|
|
|
|
__tind1++ |
30356
|
0
|
|
|
|
|
|
,protos_datap += __tinc0_0 |
30357
|
0
|
|
|
|
|
|
,cprotos_datap += __tinc0_1 |
30358
|
0
|
|
|
|
|
|
,otmp_datap += __tinc0_2 |
30359
|
|
|
|
|
|
|
) |
30360
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30361
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30362
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close n") |
|
|
0
|
|
|
|
|
|
30363
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30364
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { |
30365
|
0
|
0
|
|
|
|
|
int protoi = (protos_datap)[0+(__inc_protos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") ; |
30366
|
0
|
0
|
|
|
|
|
for (; (otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") ; protoi = (protoi+1)%__privtrans->__n_size) { ; } |
|
|
0
|
|
|
|
|
|
30367
|
0
|
0
|
|
|
|
|
(cprotos_datap)[0+(__inc_cprotos_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = protoi; |
30368
|
0
|
0
|
|
|
|
|
(otmp_datap)[0+(__inc_otmp_n*PP_INDTERM(__privtrans->__n_size, protoi))] PDL_COMMENT("ACCESS()") = 1; |
30369
|
|
|
|
|
|
|
}} PDL_COMMENT("Close k") |
30370
|
|
|
|
|
|
|
|
30371
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30372
|
|
|
|
|
|
|
} |
30373
|
|
|
|
|
|
|
} |
30374
|
0
|
|
|
|
|
|
protos_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30375
|
0
|
|
|
|
|
|
cprotos_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30376
|
0
|
|
|
|
|
|
otmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30377
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30378
|
|
|
|
|
|
|
|
30379
|
0
|
|
|
|
|
|
} break;} |
30380
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
30381
|
|
|
|
|
|
|
} |
30382
|
|
|
|
|
|
|
} |
30383
|
|
|
|
|
|
|
} |
30384
|
|
|
|
|
|
|
|
30385
|
|
|
|
|
|
|
|
30386
|
|
|
|
|
|
|
|
30387
|
|
|
|
|
|
|
|
30388
|
0
|
|
|
|
|
|
void pdl_checkprototypes_free(pdl_trans *__tr ) { |
30389
|
|
|
|
|
|
|
int __dim; |
30390
|
0
|
|
|
|
|
|
pdl_checkprototypes_struct *__privtrans = (pdl_checkprototypes_struct *) __tr; |
30391
|
|
|
|
|
|
|
|
30392
|
|
|
|
|
|
|
{ |
30393
|
|
|
|
|
|
|
|
30394
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
30395
|
|
|
|
|
|
|
; |
30396
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
30397
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
30398
|
|
|
|
|
|
|
;;;;;; |
30399
|
|
|
|
|
|
|
} |
30400
|
|
|
|
|
|
|
|
30401
|
|
|
|
|
|
|
} |
30402
|
0
|
|
|
|
|
|
} |
30403
|
|
|
|
|
|
|
|
30404
|
|
|
|
|
|
|
|
30405
|
|
|
|
|
|
|
|
30406
|
|
|
|
|
|
|
|
30407
|
|
|
|
|
|
|
static char pdl_checkprototypes_vtable_flags[] = |
30408
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
30409
|
|
|
|
|
|
|
pdl_transvtable pdl_checkprototypes_vtable = { |
30410
|
|
|
|
|
|
|
0,0, 1, 3, pdl_checkprototypes_vtable_flags, |
30411
|
|
|
|
|
|
|
pdl_checkprototypes_redodims, pdl_checkprototypes_readdata, NULL, |
30412
|
|
|
|
|
|
|
pdl_checkprototypes_free,NULL,NULL,pdl_checkprototypes_copy, |
30413
|
|
|
|
|
|
|
sizeof(pdl_checkprototypes_struct),"pdl_checkprototypes_vtable" |
30414
|
|
|
|
|
|
|
}; |
30415
|
|
|
|
|
|
|
|
30416
|
|
|
|
|
|
|
typedef struct pdl_checkpartitions_struct { |
30417
|
|
|
|
|
|
|
PDL_TRANS_START(3); |
30418
|
|
|
|
|
|
|
pdl_thread __pdlthread;PDL_Indx __inc_part_n;PDL_Indx __inc_cpart_n;PDL_Indx __inc_ptmp_k;PDL_Indx __k_size;PDL_Indx __n_size; |
30419
|
|
|
|
|
|
|
int ksize; |
30420
|
|
|
|
|
|
|
char __ddone; PDL_COMMENT("Dims done") |
30421
|
|
|
|
|
|
|
} pdl_checkpartitions_struct; |
30422
|
|
|
|
|
|
|
|
30423
|
0
|
|
|
|
|
|
void pdl_checkpartitions_redodims(pdl_trans *__tr ) { |
30424
|
|
|
|
|
|
|
int __dim; |
30425
|
0
|
|
|
|
|
|
pdl_checkpartitions_struct *__privtrans = (pdl_checkpartitions_struct *) __tr; |
30426
|
|
|
|
|
|
|
|
30427
|
|
|
|
|
|
|
{ |
30428
|
|
|
|
|
|
|
PDL_Indx __creating[3]; |
30429
|
0
|
|
|
|
|
|
__privtrans->__k_size = __privtrans->ksize; |
30430
|
0
|
|
|
|
|
|
__privtrans->__n_size = -1; |
30431
|
0
|
|
|
|
|
|
__creating[0] = 0; |
30432
|
0
|
0
|
|
|
|
|
__creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]); |
|
|
0
|
|
|
|
|
|
30433
|
0
|
0
|
|
|
|
|
__creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]); |
|
|
0
|
|
|
|
|
|
30434
|
|
|
|
|
|
|
{ |
30435
|
|
|
|
|
|
|
{PDL_COMMENT("Start generic loop") |
30436
|
|
|
|
|
|
|
|
30437
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
30438
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
30439
|
0
|
0
|
|
|
|
|
PDL_Byte * part_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30440
|
0
|
|
|
|
|
|
PDL_Byte * part_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data)); |
30441
|
|
|
|
|
|
|
|
30442
|
0
|
0
|
|
|
|
|
PDL_Byte * cpart_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30443
|
0
|
|
|
|
|
|
PDL_Byte * cpart_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
30444
|
|
|
|
|
|
|
|
30445
|
0
|
0
|
|
|
|
|
PDL_Byte * ptmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30446
|
0
|
|
|
|
|
|
PDL_Byte * ptmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
30447
|
|
|
|
|
|
|
|
30448
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30449
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30450
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30451
|
|
|
|
|
|
|
|
30452
|
|
|
|
|
|
|
PDL_COMMENT("none") |
30453
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
30454
|
0
|
0
|
|
|
|
|
PDL_Short * part_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30455
|
0
|
|
|
|
|
|
PDL_Short * part_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data)); |
30456
|
|
|
|
|
|
|
|
30457
|
0
|
0
|
|
|
|
|
PDL_Short * cpart_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30458
|
0
|
|
|
|
|
|
PDL_Short * cpart_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data)); |
30459
|
|
|
|
|
|
|
|
30460
|
0
|
0
|
|
|
|
|
PDL_Short * ptmp_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30461
|
0
|
|
|
|
|
|
PDL_Short * ptmp_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data)); |
30462
|
|
|
|
|
|
|
|
30463
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30464
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30465
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30466
|
|
|
|
|
|
|
|
30467
|
|
|
|
|
|
|
PDL_COMMENT("none") |
30468
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
30469
|
0
|
0
|
|
|
|
|
PDL_Ushort * part_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30470
|
0
|
|
|
|
|
|
PDL_Ushort * part_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data)); |
30471
|
|
|
|
|
|
|
|
30472
|
0
|
0
|
|
|
|
|
PDL_Ushort * cpart_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30473
|
0
|
|
|
|
|
|
PDL_Ushort * cpart_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data)); |
30474
|
|
|
|
|
|
|
|
30475
|
0
|
0
|
|
|
|
|
PDL_Ushort * ptmp_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30476
|
0
|
|
|
|
|
|
PDL_Ushort * ptmp_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data)); |
30477
|
|
|
|
|
|
|
|
30478
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30479
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30480
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30481
|
|
|
|
|
|
|
|
30482
|
|
|
|
|
|
|
PDL_COMMENT("none") |
30483
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
30484
|
0
|
0
|
|
|
|
|
PDL_Long * part_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30485
|
0
|
|
|
|
|
|
PDL_Long * part_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
30486
|
|
|
|
|
|
|
|
30487
|
0
|
0
|
|
|
|
|
PDL_Long * cpart_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30488
|
0
|
|
|
|
|
|
PDL_Long * cpart_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
30489
|
|
|
|
|
|
|
|
30490
|
0
|
0
|
|
|
|
|
PDL_Long * ptmp_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30491
|
0
|
|
|
|
|
|
PDL_Long * ptmp_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
30492
|
|
|
|
|
|
|
|
30493
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30494
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30495
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30496
|
|
|
|
|
|
|
|
30497
|
|
|
|
|
|
|
PDL_COMMENT("none") |
30498
|
0
|
|
|
|
|
|
} break;} |
30499
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
30500
|
|
|
|
|
|
|
} |
30501
|
|
|
|
|
|
|
} |
30502
|
|
|
|
|
|
|
{ |
30503
|
|
|
|
|
|
|
static char *__parnames[] = {"part","cpart","ptmp"}; |
30504
|
|
|
|
|
|
|
static PDL_Indx __realdims[] = {1,1,1}; |
30505
|
|
|
|
|
|
|
static char __funcname[] = "PDL::Cluster::checkpartitions"; |
30506
|
|
|
|
|
|
|
static pdl_errorinfo __einfo = { |
30507
|
|
|
|
|
|
|
__funcname, __parnames, 3 |
30508
|
|
|
|
|
|
|
}; |
30509
|
|
|
|
|
|
|
|
30510
|
0
|
|
|
|
|
|
PDL->initthreadstruct(2,__privtrans->pdls, |
30511
|
|
|
|
|
|
|
__realdims,__creating,3, |
30512
|
|
|
|
|
|
|
&__einfo,&(__privtrans->__pdlthread), |
30513
|
0
|
|
|
|
|
|
__privtrans->vtable->per_pdl_flags, |
30514
|
|
|
|
|
|
|
0 ); |
30515
|
|
|
|
|
|
|
} |
30516
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->ndims < 1) { |
30517
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
30518
|
|
|
|
|
|
|
} |
30519
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30520
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0]; |
30521
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
30522
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[0]))->dims[0] != 1) { |
30523
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in checkpartitions:" "Wrong dims\n"); |
30524
|
|
|
|
|
|
|
} |
30525
|
|
|
|
|
|
|
} |
30526
|
0
|
0
|
|
|
|
|
if(!__creating[1]) { |
30527
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->ndims < 1) { |
30528
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1; |
|
|
0
|
|
|
|
|
|
30529
|
|
|
|
|
|
|
} |
30530
|
0
|
0
|
|
|
|
|
if(__privtrans->__n_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30531
|
0
|
|
|
|
|
|
__privtrans->__n_size = ((__privtrans->pdls[1]))->dims[0]; |
30532
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[1]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
30533
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[1]))->dims[0] != 1) { |
30534
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in checkpartitions:" "Wrong dims\n"); |
30535
|
|
|
|
|
|
|
} |
30536
|
|
|
|
|
|
|
} |
30537
|
|
|
|
|
|
|
} else { |
30538
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size; |
30539
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0); |
30540
|
0
|
0
|
|
|
|
|
}if(!__creating[2]) { |
30541
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->ndims < 1) { |
30542
|
0
|
0
|
|
|
|
|
if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__k_size <= 1) __privtrans->__k_size = 1; |
|
|
0
|
|
|
|
|
|
30543
|
|
|
|
|
|
|
} |
30544
|
0
|
0
|
|
|
|
|
if(__privtrans->__k_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__k_size == 1)) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30545
|
0
|
|
|
|
|
|
__privtrans->__k_size = ((__privtrans->pdls[2]))->dims[0]; |
30546
|
0
|
0
|
|
|
|
|
} else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__k_size != ((__privtrans->pdls[2]))->dims[0]) { |
|
|
0
|
|
|
|
|
|
30547
|
0
|
0
|
|
|
|
|
if(((__privtrans->pdls[2]))->dims[0] != 1) { |
30548
|
0
|
|
|
|
|
|
PDL->pdl_barf("Error in checkpartitions:" "Wrong dims\n"); |
30549
|
|
|
|
|
|
|
} |
30550
|
|
|
|
|
|
|
} |
30551
|
|
|
|
|
|
|
} else { |
30552
|
0
|
|
|
|
|
|
PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__k_size; |
30553
|
0
|
|
|
|
|
|
PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,1); |
30554
|
|
|
|
|
|
|
} |
30555
|
|
|
|
|
|
|
{ PDL_COMMENT("convenience block") |
30556
|
0
|
|
|
|
|
|
void *hdrp = NULL; |
30557
|
0
|
|
|
|
|
|
char propagate_hdrcpy = 0; |
30558
|
0
|
|
|
|
|
|
SV *hdr_copy = NULL; |
30559
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
30560
|
0
|
0
|
|
|
|
|
__privtrans->pdls[0]->hdrsv && |
30561
|
0
|
|
|
|
|
|
(__privtrans->pdls[0]->state & PDL_HDRCPY) |
30562
|
|
|
|
|
|
|
) { |
30563
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[0]->hdrsv; |
30564
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0); |
30565
|
|
|
|
|
|
|
} |
30566
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
30567
|
0
|
0
|
|
|
|
|
!__creating[1] && |
30568
|
0
|
0
|
|
|
|
|
__privtrans->pdls[1]->hdrsv && |
30569
|
0
|
|
|
|
|
|
(__privtrans->pdls[1]->state & PDL_HDRCPY) |
30570
|
|
|
|
|
|
|
) { |
30571
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[1]->hdrsv; |
30572
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0); |
30573
|
|
|
|
|
|
|
} |
30574
|
0
|
0
|
|
|
|
|
if(!hdrp && |
|
|
0
|
|
|
|
|
|
30575
|
0
|
0
|
|
|
|
|
!__creating[2] && |
30576
|
0
|
0
|
|
|
|
|
__privtrans->pdls[2]->hdrsv && |
30577
|
0
|
|
|
|
|
|
(__privtrans->pdls[2]->state & PDL_HDRCPY) |
30578
|
|
|
|
|
|
|
) { |
30579
|
0
|
|
|
|
|
|
hdrp = __privtrans->pdls[2]->hdrsv; |
30580
|
0
|
|
|
|
|
|
propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0); |
30581
|
|
|
|
|
|
|
} |
30582
|
0
|
0
|
|
|
|
|
if (hdrp) { |
30583
|
0
|
0
|
|
|
|
|
if(hdrp == &PL_sv_undef) |
30584
|
0
|
|
|
|
|
|
hdr_copy = &PL_sv_undef; |
30585
|
|
|
|
|
|
|
else { PDL_COMMENT("Call the perl routine _hdr_copy...") |
30586
|
|
|
|
|
|
|
int count; |
30587
|
|
|
|
|
|
|
PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)") |
30588
|
0
|
|
|
|
|
|
dSP; |
30589
|
0
|
|
|
|
|
|
ENTER ; |
30590
|
0
|
|
|
|
|
|
SAVETMPS ; |
30591
|
0
|
0
|
|
|
|
|
PUSHMARK(SP) ; |
30592
|
0
|
0
|
|
|
|
|
XPUSHs( hdrp ); |
30593
|
0
|
|
|
|
|
|
PUTBACK ; |
30594
|
0
|
|
|
|
|
|
count = call_pv("PDL::_hdr_copy",G_SCALAR); |
30595
|
0
|
|
|
|
|
|
SPAGAIN ; |
30596
|
0
|
0
|
|
|
|
|
if(count != 1) |
30597
|
0
|
|
|
|
|
|
croak("PDL::_hdr_copy didn't return a single value - please report this bug (A)."); |
30598
|
|
|
|
|
|
|
|
30599
|
0
|
|
|
|
|
|
hdr_copy = (SV *)POPs; |
30600
|
|
|
|
|
|
|
|
30601
|
0
|
0
|
|
|
|
|
if(hdr_copy && hdr_copy != &PL_sv_undef) { |
|
|
0
|
|
|
|
|
|
30602
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS") |
30603
|
|
|
|
|
|
|
} |
30604
|
|
|
|
|
|
|
|
30605
|
0
|
0
|
|
|
|
|
FREETMPS ; |
30606
|
0
|
|
|
|
|
|
LEAVE ; |
30607
|
|
|
|
|
|
|
|
30608
|
|
|
|
|
|
|
|
30609
|
|
|
|
|
|
|
} PDL_COMMENT("end of callback block") |
30610
|
|
|
|
|
|
|
|
30611
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[1]->hdrsv != hdrp ){ |
30612
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
30613
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv ); |
30614
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
30615
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
30616
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->hdrsv = hdr_copy; |
30617
|
|
|
|
|
|
|
} |
30618
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
30619
|
0
|
|
|
|
|
|
__privtrans->pdls[1]->state |= PDL_HDRCPY; |
30620
|
0
|
0
|
|
|
|
|
if ( __privtrans->pdls[2]->hdrsv != hdrp ){ |
30621
|
0
|
0
|
|
|
|
|
if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef) |
|
|
0
|
|
|
|
|
|
30622
|
0
|
|
|
|
|
|
(void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv ); |
30623
|
0
|
0
|
|
|
|
|
if( hdr_copy != &PL_sv_undef ) |
30624
|
0
|
|
|
|
|
|
(void)SvREFCNT_inc(hdr_copy); |
30625
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->hdrsv = hdr_copy; |
30626
|
|
|
|
|
|
|
} |
30627
|
0
|
0
|
|
|
|
|
if(propagate_hdrcpy) |
30628
|
0
|
|
|
|
|
|
__privtrans->pdls[2]->state |= PDL_HDRCPY; |
30629
|
|
|
|
|
|
|
|
30630
|
0
|
0
|
|
|
|
|
if(hdr_copy != &PL_sv_undef) |
30631
|
0
|
|
|
|
|
|
SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again") |
30632
|
|
|
|
|
|
|
} PDL_COMMENT("end of if(hdrp) block") |
30633
|
|
|
|
|
|
|
} PDL_COMMENT("end of conv. block") |
30634
|
0
|
0
|
|
|
|
|
if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
30635
|
0
|
|
|
|
|
|
__privtrans->__inc_part_n = 0; else |
30636
|
0
|
0
|
|
|
|
|
__privtrans->__inc_part_n = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30637
|
0
|
|
|
|
|
|
__privtrans->__inc_cpart_n = 0; else |
30638
|
0
|
0
|
|
|
|
|
__privtrans->__inc_cpart_n = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1) |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
30639
|
0
|
|
|
|
|
|
__privtrans->__inc_ptmp_k = 0; else |
30640
|
0
|
0
|
|
|
|
|
__privtrans->__inc_ptmp_k = PDL_REPRINC(__privtrans->pdls[2],0); __privtrans->__ddone = 1; |
30641
|
|
|
|
|
|
|
} |
30642
|
0
|
|
|
|
|
|
} |
30643
|
|
|
|
|
|
|
|
30644
|
|
|
|
|
|
|
|
30645
|
0
|
|
|
|
|
|
pdl_trans * pdl_checkpartitions_copy(pdl_trans *__tr ) { |
30646
|
|
|
|
|
|
|
int __dim; |
30647
|
0
|
|
|
|
|
|
pdl_checkpartitions_struct *__privtrans = (pdl_checkpartitions_struct *) __tr; |
30648
|
|
|
|
|
|
|
|
30649
|
|
|
|
|
|
|
{ |
30650
|
0
|
|
|
|
|
|
pdl_checkpartitions_struct *__copy = malloc(sizeof(pdl_checkpartitions_struct)); |
30651
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy); |
30652
|
0
|
|
|
|
|
|
__copy->has_badvalue = __privtrans->has_badvalue; |
30653
|
0
|
|
|
|
|
|
__copy->badvalue = __privtrans->badvalue; |
30654
|
0
|
|
|
|
|
|
__copy->flags = __privtrans->flags; |
30655
|
0
|
|
|
|
|
|
__copy->vtable = __privtrans->vtable; |
30656
|
0
|
|
|
|
|
|
__copy->__datatype = __privtrans->__datatype; |
30657
|
0
|
|
|
|
|
|
__copy->freeproc = NULL; |
30658
|
0
|
|
|
|
|
|
__copy->__ddone = __privtrans->__ddone; |
30659
|
|
|
|
|
|
|
{int i; |
30660
|
0
|
0
|
|
|
|
|
for(i=0; i<__copy->vtable->npdls; i++) |
30661
|
0
|
|
|
|
|
|
__copy->pdls[i] = __privtrans->pdls[i]; |
30662
|
|
|
|
|
|
|
} |
30663
|
0
|
|
|
|
|
|
(__copy->ksize) = (__privtrans->ksize);; |
30664
|
0
|
0
|
|
|
|
|
if(__copy->__ddone) { |
30665
|
0
|
|
|
|
|
|
PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_part_n=__copy->__inc_part_n;__privtrans->__inc_cpart_n=__copy->__inc_cpart_n;__privtrans->__inc_ptmp_k=__copy->__inc_ptmp_k;__copy->__k_size=__privtrans->__k_size;__copy->__n_size=__privtrans->__n_size; |
30666
|
|
|
|
|
|
|
} |
30667
|
0
|
|
|
|
|
|
return (pdl_trans*)__copy; |
30668
|
|
|
|
|
|
|
} |
30669
|
|
|
|
|
|
|
} |
30670
|
|
|
|
|
|
|
|
30671
|
|
|
|
|
|
|
|
30672
|
0
|
|
|
|
|
|
void pdl_checkpartitions_readdata(pdl_trans *__tr ) { |
30673
|
|
|
|
|
|
|
int __dim; |
30674
|
0
|
|
|
|
|
|
pdl_checkpartitions_struct *__privtrans = (pdl_checkpartitions_struct *) __tr; |
30675
|
|
|
|
|
|
|
|
30676
|
|
|
|
|
|
|
{ |
30677
|
0
|
|
|
|
|
|
{register PDL_Indx __k_size = __privtrans->__k_size; |
30678
|
0
|
|
|
|
|
|
register PDL_Indx __n_size = __privtrans->__n_size; |
30679
|
|
|
|
|
|
|
PDL_COMMENT("Start generic loop") |
30680
|
|
|
|
|
|
|
|
30681
|
0
|
|
|
|
|
|
switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1; |
30682
|
0
|
|
|
|
|
|
} break; case PDL_B: { |
30683
|
0
|
0
|
|
|
|
|
PDL_Byte * part_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30684
|
0
|
|
|
|
|
|
PDL_Byte * part_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data)); |
30685
|
|
|
|
|
|
|
|
30686
|
0
|
0
|
|
|
|
|
PDL_Byte * cpart_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30687
|
0
|
|
|
|
|
|
PDL_Byte * cpart_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data)); |
30688
|
|
|
|
|
|
|
|
30689
|
0
|
0
|
|
|
|
|
PDL_Byte * ptmp_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30690
|
0
|
|
|
|
|
|
PDL_Byte * ptmp_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data)); |
30691
|
|
|
|
|
|
|
|
30692
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30693
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30694
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30695
|
|
|
|
|
|
|
|
30696
|
|
|
|
|
|
|
|
30697
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30698
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30699
|
0
|
|
|
|
|
|
barf("checkpartitions(): number of partitions \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30700
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30701
|
|
|
|
|
|
|
} |
30702
|
|
|
|
|
|
|
|
30703
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30704
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30705
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30706
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30707
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30708
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30709
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30710
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30711
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30712
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30713
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30714
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30715
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30716
|
0
|
|
|
|
|
|
part_datap += __offsp[0]; |
30717
|
0
|
|
|
|
|
|
cpart_datap += __offsp[1]; |
30718
|
0
|
|
|
|
|
|
ptmp_datap += __offsp[2]; |
30719
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30720
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30721
|
0
|
|
|
|
|
|
__tind2++ |
30722
|
0
|
|
|
|
|
|
,part_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30723
|
0
|
|
|
|
|
|
,cpart_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30724
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30725
|
|
|
|
|
|
|
) |
30726
|
|
|
|
|
|
|
{ |
30727
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30728
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30729
|
0
|
|
|
|
|
|
__tind1++ |
30730
|
0
|
|
|
|
|
|
,part_datap += __tinc0_0 |
30731
|
0
|
|
|
|
|
|
,cpart_datap += __tinc0_1 |
30732
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc0_2 |
30733
|
|
|
|
|
|
|
) |
30734
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30735
|
|
|
|
|
|
|
int ni, ki, kj; |
30736
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30737
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
30738
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30739
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
30740
|
0
|
0
|
|
|
|
|
ki = (part_datap)[0+(__inc_part_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
30741
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = ki; |
30742
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30743
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
30744
|
0
|
|
|
|
|
|
ni = 0; |
30745
|
0
|
0
|
|
|
|
|
for (ki=0; ki < __privtrans->__k_size; ki++) { |
30746
|
0
|
0
|
|
|
|
|
if (!(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
30747
|
0
|
|
|
|
|
|
for (; 1; ni = (ni+1)%__privtrans->__n_size) { |
30748
|
0
|
0
|
|
|
|
|
kj = (cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ; |
30749
|
0
|
0
|
|
|
|
|
if ((ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") > 1) break; |
|
|
0
|
|
|
|
|
|
30750
|
0
|
|
|
|
|
|
} |
30751
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") = ki; |
30752
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30753
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") -= 1; |
30754
|
|
|
|
|
|
|
} |
30755
|
|
|
|
|
|
|
} |
30756
|
|
|
|
|
|
|
|
30757
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30758
|
|
|
|
|
|
|
} |
30759
|
|
|
|
|
|
|
} |
30760
|
0
|
|
|
|
|
|
part_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30761
|
0
|
|
|
|
|
|
cpart_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30762
|
0
|
|
|
|
|
|
ptmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30763
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30764
|
|
|
|
|
|
|
|
30765
|
0
|
|
|
|
|
|
} } break; case PDL_S: { |
30766
|
0
|
0
|
|
|
|
|
PDL_Short * part_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30767
|
0
|
|
|
|
|
|
PDL_Short * part_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data)); |
30768
|
|
|
|
|
|
|
|
30769
|
0
|
0
|
|
|
|
|
PDL_Short * cpart_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30770
|
0
|
|
|
|
|
|
PDL_Short * cpart_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data)); |
30771
|
|
|
|
|
|
|
|
30772
|
0
|
0
|
|
|
|
|
PDL_Short * ptmp_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30773
|
0
|
|
|
|
|
|
PDL_Short * ptmp_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data)); |
30774
|
|
|
|
|
|
|
|
30775
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30776
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30777
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30778
|
|
|
|
|
|
|
|
30779
|
|
|
|
|
|
|
|
30780
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30781
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30782
|
0
|
|
|
|
|
|
barf("checkpartitions(): number of partitions \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30783
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30784
|
|
|
|
|
|
|
} |
30785
|
|
|
|
|
|
|
|
30786
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30787
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30788
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30789
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30790
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30791
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30792
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30793
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30794
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30795
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30796
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30797
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30798
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30799
|
0
|
|
|
|
|
|
part_datap += __offsp[0]; |
30800
|
0
|
|
|
|
|
|
cpart_datap += __offsp[1]; |
30801
|
0
|
|
|
|
|
|
ptmp_datap += __offsp[2]; |
30802
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30803
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30804
|
0
|
|
|
|
|
|
__tind2++ |
30805
|
0
|
|
|
|
|
|
,part_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30806
|
0
|
|
|
|
|
|
,cpart_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30807
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30808
|
|
|
|
|
|
|
) |
30809
|
|
|
|
|
|
|
{ |
30810
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30811
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30812
|
0
|
|
|
|
|
|
__tind1++ |
30813
|
0
|
|
|
|
|
|
,part_datap += __tinc0_0 |
30814
|
0
|
|
|
|
|
|
,cpart_datap += __tinc0_1 |
30815
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc0_2 |
30816
|
|
|
|
|
|
|
) |
30817
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30818
|
|
|
|
|
|
|
int ni, ki, kj; |
30819
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30820
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
30821
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30822
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
30823
|
0
|
0
|
|
|
|
|
ki = (part_datap)[0+(__inc_part_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
30824
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = ki; |
30825
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30826
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
30827
|
0
|
|
|
|
|
|
ni = 0; |
30828
|
0
|
0
|
|
|
|
|
for (ki=0; ki < __privtrans->__k_size; ki++) { |
30829
|
0
|
0
|
|
|
|
|
if (!(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
30830
|
0
|
|
|
|
|
|
for (; 1; ni = (ni+1)%__privtrans->__n_size) { |
30831
|
0
|
0
|
|
|
|
|
kj = (cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ; |
30832
|
0
|
0
|
|
|
|
|
if ((ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") > 1) break; |
|
|
0
|
|
|
|
|
|
30833
|
0
|
|
|
|
|
|
} |
30834
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") = ki; |
30835
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30836
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") -= 1; |
30837
|
|
|
|
|
|
|
} |
30838
|
|
|
|
|
|
|
} |
30839
|
|
|
|
|
|
|
|
30840
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30841
|
|
|
|
|
|
|
} |
30842
|
|
|
|
|
|
|
} |
30843
|
0
|
|
|
|
|
|
part_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30844
|
0
|
|
|
|
|
|
cpart_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30845
|
0
|
|
|
|
|
|
ptmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30846
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30847
|
|
|
|
|
|
|
|
30848
|
0
|
|
|
|
|
|
} } break; case PDL_US: { |
30849
|
0
|
0
|
|
|
|
|
PDL_Ushort * part_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30850
|
0
|
|
|
|
|
|
PDL_Ushort * part_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data)); |
30851
|
|
|
|
|
|
|
|
30852
|
0
|
0
|
|
|
|
|
PDL_Ushort * cpart_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30853
|
0
|
|
|
|
|
|
PDL_Ushort * cpart_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data)); |
30854
|
|
|
|
|
|
|
|
30855
|
0
|
0
|
|
|
|
|
PDL_Ushort * ptmp_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30856
|
0
|
|
|
|
|
|
PDL_Ushort * ptmp_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data)); |
30857
|
|
|
|
|
|
|
|
30858
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30859
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30860
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30861
|
|
|
|
|
|
|
|
30862
|
|
|
|
|
|
|
|
30863
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30864
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30865
|
0
|
|
|
|
|
|
barf("checkpartitions(): number of partitions \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30866
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30867
|
|
|
|
|
|
|
} |
30868
|
|
|
|
|
|
|
|
30869
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30870
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30871
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30872
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30873
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30874
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30875
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30876
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30877
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30878
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30879
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30880
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30881
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30882
|
0
|
|
|
|
|
|
part_datap += __offsp[0]; |
30883
|
0
|
|
|
|
|
|
cpart_datap += __offsp[1]; |
30884
|
0
|
|
|
|
|
|
ptmp_datap += __offsp[2]; |
30885
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30886
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30887
|
0
|
|
|
|
|
|
__tind2++ |
30888
|
0
|
|
|
|
|
|
,part_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30889
|
0
|
|
|
|
|
|
,cpart_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30890
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30891
|
|
|
|
|
|
|
) |
30892
|
|
|
|
|
|
|
{ |
30893
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30894
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30895
|
0
|
|
|
|
|
|
__tind1++ |
30896
|
0
|
|
|
|
|
|
,part_datap += __tinc0_0 |
30897
|
0
|
|
|
|
|
|
,cpart_datap += __tinc0_1 |
30898
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc0_2 |
30899
|
|
|
|
|
|
|
) |
30900
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30901
|
|
|
|
|
|
|
int ni, ki, kj; |
30902
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30903
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
30904
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30905
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
30906
|
0
|
0
|
|
|
|
|
ki = (part_datap)[0+(__inc_part_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
30907
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = ki; |
30908
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30909
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
30910
|
0
|
|
|
|
|
|
ni = 0; |
30911
|
0
|
0
|
|
|
|
|
for (ki=0; ki < __privtrans->__k_size; ki++) { |
30912
|
0
|
0
|
|
|
|
|
if (!(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
30913
|
0
|
|
|
|
|
|
for (; 1; ni = (ni+1)%__privtrans->__n_size) { |
30914
|
0
|
0
|
|
|
|
|
kj = (cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ; |
30915
|
0
|
0
|
|
|
|
|
if ((ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") > 1) break; |
|
|
0
|
|
|
|
|
|
30916
|
0
|
|
|
|
|
|
} |
30917
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") = ki; |
30918
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30919
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") -= 1; |
30920
|
|
|
|
|
|
|
} |
30921
|
|
|
|
|
|
|
} |
30922
|
|
|
|
|
|
|
|
30923
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
30924
|
|
|
|
|
|
|
} |
30925
|
|
|
|
|
|
|
} |
30926
|
0
|
|
|
|
|
|
part_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
30927
|
0
|
|
|
|
|
|
cpart_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
30928
|
0
|
|
|
|
|
|
ptmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
30929
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
30930
|
|
|
|
|
|
|
|
30931
|
0
|
|
|
|
|
|
} } break; case PDL_L: { |
30932
|
0
|
0
|
|
|
|
|
PDL_Long * part_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0])))); |
|
|
0
|
|
|
|
|
|
30933
|
0
|
|
|
|
|
|
PDL_Long * part_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data)); |
30934
|
|
|
|
|
|
|
|
30935
|
0
|
0
|
|
|
|
|
PDL_Long * cpart_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1])))); |
|
|
0
|
|
|
|
|
|
30936
|
0
|
|
|
|
|
|
PDL_Long * cpart_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data)); |
30937
|
|
|
|
|
|
|
|
30938
|
0
|
0
|
|
|
|
|
PDL_Long * ptmp_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2])))); |
|
|
0
|
|
|
|
|
|
30939
|
0
|
|
|
|
|
|
PDL_Long * ptmp_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data)); |
30940
|
|
|
|
|
|
|
|
30941
|
0
|
|
|
|
|
|
{register PDL_Indx __inc_cpart_n = __privtrans->__inc_cpart_n; |
30942
|
0
|
|
|
|
|
|
register PDL_Indx __inc_part_n = __privtrans->__inc_part_n; |
30943
|
0
|
|
|
|
|
|
register PDL_Indx __inc_ptmp_k = __privtrans->__inc_ptmp_k; |
30944
|
|
|
|
|
|
|
|
30945
|
|
|
|
|
|
|
|
30946
|
|
|
|
|
|
|
/*-- sanity check --*/ |
30947
|
0
|
0
|
|
|
|
|
if (__privtrans->__k_size > __privtrans->__n_size) { |
30948
|
0
|
|
|
|
|
|
barf("checkpartitions(): number of partitions \"k\" (=%d) must be <= number of objects \"n\" (=%d)!\n", |
30949
|
|
|
|
|
|
|
__privtrans->__k_size, __privtrans->__n_size); |
30950
|
|
|
|
|
|
|
} |
30951
|
|
|
|
|
|
|
|
30952
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPBEGIN") |
30953
|
0
|
0
|
|
|
|
|
if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return; |
30954
|
0
|
|
|
|
|
|
do { register PDL_Indx __tind1=0,__tind2=0; |
30955
|
0
|
|
|
|
|
|
register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls; |
30956
|
0
|
|
|
|
|
|
register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1]; |
30957
|
0
|
|
|
|
|
|
register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0]; |
30958
|
0
|
|
|
|
|
|
register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread); |
30959
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0]; |
30960
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1]; |
30961
|
0
|
|
|
|
|
|
register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2]; |
30962
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0]; |
30963
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1]; |
30964
|
0
|
|
|
|
|
|
register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2]; |
30965
|
0
|
|
|
|
|
|
part_datap += __offsp[0]; |
30966
|
0
|
|
|
|
|
|
cpart_datap += __offsp[1]; |
30967
|
0
|
|
|
|
|
|
ptmp_datap += __offsp[2]; |
30968
|
0
|
0
|
|
|
|
|
for( __tind2 = 0 ; |
30969
|
|
|
|
|
|
|
__tind2 < __tdims1 ; |
30970
|
0
|
|
|
|
|
|
__tind2++ |
30971
|
0
|
|
|
|
|
|
,part_datap += __tinc1_0 - __tinc0_0 * __tdims0 |
30972
|
0
|
|
|
|
|
|
,cpart_datap += __tinc1_1 - __tinc0_1 * __tdims0 |
30973
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc1_2 - __tinc0_2 * __tdims0 |
30974
|
|
|
|
|
|
|
) |
30975
|
|
|
|
|
|
|
{ |
30976
|
0
|
0
|
|
|
|
|
for( __tind1 = 0 ; |
30977
|
|
|
|
|
|
|
__tind1 < __tdims0 ; |
30978
|
0
|
|
|
|
|
|
__tind1++ |
30979
|
0
|
|
|
|
|
|
,part_datap += __tinc0_0 |
30980
|
0
|
|
|
|
|
|
,cpart_datap += __tinc0_1 |
30981
|
0
|
|
|
|
|
|
,ptmp_datap += __tinc0_2 |
30982
|
|
|
|
|
|
|
) |
30983
|
|
|
|
|
|
|
{ PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal.") |
30984
|
|
|
|
|
|
|
int ni, ki, kj; |
30985
|
|
|
|
|
|
|
{PDL_COMMENT("Open k") register PDL_Indx k; |
30986
|
0
|
0
|
|
|
|
|
for(k=0; k<(__k_size); k++) { (ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, k))] PDL_COMMENT("ACCESS()") = 0; }} PDL_COMMENT("Close k") |
|
|
0
|
|
|
|
|
|
30987
|
|
|
|
|
|
|
{PDL_COMMENT("Open n") register PDL_Indx n; |
30988
|
0
|
0
|
|
|
|
|
for(n=0; n<(__n_size); n++) { |
30989
|
0
|
0
|
|
|
|
|
ki = (part_datap)[0+(__inc_part_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; |
30990
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") = ki; |
30991
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
30992
|
|
|
|
|
|
|
}} PDL_COMMENT("Close n") |
30993
|
0
|
|
|
|
|
|
ni = 0; |
30994
|
0
|
0
|
|
|
|
|
for (ki=0; ki < __privtrans->__k_size; ki++) { |
30995
|
0
|
0
|
|
|
|
|
if (!(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") ) { |
|
|
0
|
|
|
|
|
|
30996
|
0
|
|
|
|
|
|
for (; 1; ni = (ni+1)%__privtrans->__n_size) { |
30997
|
0
|
0
|
|
|
|
|
kj = (cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ; |
30998
|
0
|
0
|
|
|
|
|
if ((ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") > 1) break; |
|
|
0
|
|
|
|
|
|
30999
|
0
|
|
|
|
|
|
} |
31000
|
0
|
0
|
|
|
|
|
(cpart_datap)[0+(__inc_cpart_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") = ki; |
31001
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, ki))] PDL_COMMENT("ACCESS()") += 1; |
31002
|
0
|
0
|
|
|
|
|
(ptmp_datap)[0+(__inc_ptmp_k*PP_INDTERM(__privtrans->__k_size, kj))] PDL_COMMENT("ACCESS()") -= 1; |
31003
|
|
|
|
|
|
|
} |
31004
|
|
|
|
|
|
|
} |
31005
|
|
|
|
|
|
|
|
31006
|
|
|
|
|
|
|
PDL_COMMENT("THREADLOOPEND") |
31007
|
|
|
|
|
|
|
} |
31008
|
|
|
|
|
|
|
} |
31009
|
0
|
|
|
|
|
|
part_datap -= __tinc1_0 * __tdims1 + __offsp[0]; |
31010
|
0
|
|
|
|
|
|
cpart_datap -= __tinc1_1 * __tdims1 + __offsp[1]; |
31011
|
0
|
|
|
|
|
|
ptmp_datap -= __tinc1_2 * __tdims1 + __offsp[2]; |
31012
|
0
|
0
|
|
|
|
|
} while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); |
31013
|
|
|
|
|
|
|
|
31014
|
0
|
|
|
|
|
|
} break;} |
31015
|
0
|
|
|
|
|
|
default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");} |
31016
|
|
|
|
|
|
|
} |
31017
|
|
|
|
|
|
|
} |
31018
|
|
|
|
|
|
|
} |
31019
|
|
|
|
|
|
|
|
31020
|
|
|
|
|
|
|
|
31021
|
|
|
|
|
|
|
|
31022
|
|
|
|
|
|
|
|
31023
|
0
|
|
|
|
|
|
void pdl_checkpartitions_free(pdl_trans *__tr ) { |
31024
|
|
|
|
|
|
|
int __dim; |
31025
|
0
|
|
|
|
|
|
pdl_checkpartitions_struct *__privtrans = (pdl_checkpartitions_struct *) __tr; |
31026
|
|
|
|
|
|
|
|
31027
|
|
|
|
|
|
|
{ |
31028
|
|
|
|
|
|
|
|
31029
|
0
|
|
|
|
|
|
PDL_TR_CLRMAGIC(__privtrans); |
31030
|
|
|
|
|
|
|
; |
31031
|
0
|
0
|
|
|
|
|
if(__privtrans->__ddone) { |
31032
|
0
|
|
|
|
|
|
PDL->freethreadloop(&(__privtrans->__pdlthread)); |
31033
|
|
|
|
|
|
|
;;;;;; |
31034
|
|
|
|
|
|
|
} |
31035
|
|
|
|
|
|
|
|
31036
|
|
|
|
|
|
|
} |
31037
|
0
|
|
|
|
|
|
} |
31038
|
|
|
|
|
|
|
|
31039
|
|
|
|
|
|
|
|
31040
|
|
|
|
|
|
|
|
31041
|
|
|
|
|
|
|
|
31042
|
|
|
|
|
|
|
static char pdl_checkpartitions_vtable_flags[] = |
31043
|
|
|
|
|
|
|
{ PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK}; |
31044
|
|
|
|
|
|
|
pdl_transvtable pdl_checkpartitions_vtable = { |
31045
|
|
|
|
|
|
|
0,0, 1, 3, pdl_checkpartitions_vtable_flags, |
31046
|
|
|
|
|
|
|
pdl_checkpartitions_redodims, pdl_checkpartitions_readdata, NULL, |
31047
|
|
|
|
|
|
|
pdl_checkpartitions_free,NULL,NULL,pdl_checkpartitions_copy, |
31048
|
|
|
|
|
|
|
sizeof(pdl_checkpartitions_struct),"pdl_checkpartitions_vtable" |
31049
|
|
|
|
|
|
|
}; |
31050
|
|
|
|
|
|
|
|
31051
|
|
|
|
|
|
|
|
31052
|
|
|
|
|
|
|
|
31053
|
|
|
|
|
|
|
MODULE = PDL::Cluster PACKAGE = PDL::Cluster |
31054
|
|
|
|
|
|
|
|
31055
|
|
|
|
|
|
|
PROTOTYPES: ENABLE |
31056
|
|
|
|
|
|
|
|
31057
|
|
|
|
|
|
|
int |
31058
|
|
|
|
|
|
|
set_debugging(i) |
31059
|
|
|
|
|
|
|
int i; |
31060
|
|
|
|
|
|
|
CODE: |
31061
|
0
|
|
|
|
|
|
RETVAL = __pdl_debugging; |
31062
|
0
|
|
|
|
|
|
__pdl_debugging = i; |
31063
|
|
|
|
|
|
|
OUTPUT: |
31064
|
|
|
|
|
|
|
RETVAL |
31065
|
|
|
|
|
|
|
|
31066
|
|
|
|
|
|
|
int |
31067
|
|
|
|
|
|
|
set_boundscheck(i) |
31068
|
|
|
|
|
|
|
int i; |
31069
|
|
|
|
|
|
|
CODE: |
31070
|
|
|
|
|
|
|
if (! 1) |
31071
|
|
|
|
|
|
|
warn("Bounds checking is disabled for PDL::Cluster"); |
31072
|
0
|
|
|
|
|
|
RETVAL = __pdl_boundscheck; |
31073
|
0
|
|
|
|
|
|
__pdl_boundscheck = i; |
31074
|
|
|
|
|
|
|
OUTPUT: |
31075
|
|
|
|
|
|
|
RETVAL |
31076
|
|
|
|
|
|
|
|
31077
|
|
|
|
|
|
|
|
31078
|
|
|
|
|
|
|
MODULE = PDL::Cluster PACKAGE = PDL |
31079
|
|
|
|
|
|
|
|
31080
|
|
|
|
|
|
|
|
31081
|
|
|
|
|
|
|
MODULE = PDL::Cluster PACKAGE = PDL::Cluster |
31082
|
|
|
|
|
|
|
|
31083
|
|
|
|
|
|
|
|
31084
|
|
|
|
|
|
|
char * |
31085
|
|
|
|
|
|
|
library_version() |
31086
|
|
|
|
|
|
|
CODE: |
31087
|
0
|
|
|
|
|
|
RETVAL = CLUSTERVERSION; |
31088
|
|
|
|
|
|
|
OUTPUT: |
31089
|
|
|
|
|
|
|
RETVAL |
31090
|
|
|
|
|
|
|
|
31091
|
|
|
|
|
|
|
|
31092
|
|
|
|
|
|
|
MODULE = PDL::Cluster PACKAGE = PDL |
31093
|
|
|
|
|
|
|
|
31094
|
|
|
|
|
|
|
|
31095
|
|
|
|
|
|
|
void |
31096
|
|
|
|
|
|
|
cmean(...) |
31097
|
|
|
|
|
|
|
PREINIT: |
31098
|
2
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31099
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31100
|
2
|
|
|
|
|
|
HV *bless_stash = 0; |
31101
|
2
|
|
|
|
|
|
SV *parent = 0; |
31102
|
|
|
|
|
|
|
int nreturn; |
31103
|
|
|
|
|
|
|
SV *b_SV; |
31104
|
|
|
|
|
|
|
pdl *a; |
31105
|
|
|
|
|
|
|
pdl *b; |
31106
|
|
|
|
|
|
|
PPCODE: |
31107
|
|
|
|
|
|
|
{ |
31108
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31109
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31110
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31111
|
2
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31112
|
2
|
|
|
|
|
|
parent = ST(0); |
31113
|
2
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
31114
|
2
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31115
|
2
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
31116
|
|
|
|
|
|
|
} |
31117
|
|
|
|
|
|
|
} |
31118
|
2
|
50
|
|
|
|
|
if (items == 2) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31119
|
0
|
|
|
|
|
|
nreturn = 0; |
31120
|
0
|
|
|
|
|
|
a = PDL->SvPDLV(ST(0)); |
31121
|
0
|
|
|
|
|
|
b = PDL->SvPDLV(ST(1)); |
31122
|
|
|
|
|
|
|
} |
31123
|
2
|
50
|
|
|
|
|
else if (items == 1) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31124
|
2
|
|
|
|
|
|
nreturn = 1; |
31125
|
2
|
|
|
|
|
|
a = PDL->SvPDLV(ST(0)); |
31126
|
2
|
50
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31127
|
2
|
|
|
|
|
|
b_SV = sv_newmortal(); |
31128
|
2
|
|
|
|
|
|
b = PDL->null(); |
31129
|
2
|
|
|
|
|
|
PDL->SetSV_PDL(b_SV,b); |
31130
|
2
|
50
|
|
|
|
|
if (bless_stash) b_SV = sv_bless(b_SV, bless_stash); |
31131
|
|
|
|
|
|
|
} else { |
31132
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31133
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31134
|
0
|
|
|
|
|
|
PUTBACK; |
31135
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31136
|
0
|
|
|
|
|
|
SPAGAIN; |
31137
|
0
|
|
|
|
|
|
b_SV = POPs; |
31138
|
0
|
|
|
|
|
|
PUTBACK; |
31139
|
2
|
|
|
|
|
|
b = PDL->SvPDLV(b_SV); |
31140
|
|
|
|
|
|
|
} |
31141
|
|
|
|
|
|
|
} |
31142
|
|
|
|
|
|
|
else { |
31143
|
0
|
|
|
|
|
|
croak ("Usage: PDL::cmean(a,b) (you may leave temporaries or output variables out of list)"); |
31144
|
|
|
|
|
|
|
} |
31145
|
|
|
|
|
|
|
} |
31146
|
|
|
|
|
|
|
{ |
31147
|
|
|
|
|
|
|
} |
31148
|
|
|
|
|
|
|
{ pdl_cmean_struct *__privtrans; |
31149
|
2
|
|
|
|
|
|
int badflag_cache = 0; |
31150
|
2
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31151
|
2
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31152
|
2
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31153
|
2
|
|
|
|
|
|
__privtrans->flags = 0; |
31154
|
2
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31155
|
2
|
|
|
|
|
|
__privtrans->vtable = &pdl_cmean_vtable; |
31156
|
2
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31157
|
2
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31158
|
2
|
|
|
|
|
|
badflag_cache = ((a->state & PDL_BADVAL) > 0); |
31159
|
2
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31160
|
2
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_D) {} |
31161
|
2
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31162
|
2
|
50
|
|
|
|
|
if(PDL_D != a->datatype) { |
31163
|
0
|
|
|
|
|
|
a = PDL->get_convertedpdl(a,PDL_D); |
31164
|
2
|
50
|
|
|
|
|
}if( (b->state & PDL_NOMYDIMS) && b->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
31165
|
2
|
|
|
|
|
|
b->datatype = PDL_D; |
31166
|
0
|
0
|
|
|
|
|
} else if(PDL_D != b->datatype) { |
31167
|
0
|
|
|
|
|
|
b = PDL->get_convertedpdl(b,PDL_D); |
31168
|
2
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = a; |
31169
|
2
|
|
|
|
|
|
__privtrans->pdls[1] = b; |
31170
|
2
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31171
|
2
|
50
|
|
|
|
|
if (badflag_cache) { |
31172
|
0
|
|
|
|
|
|
b->state |= PDL_BADVAL; |
31173
|
|
|
|
|
|
|
} |
31174
|
2
|
50
|
|
|
|
|
if (nreturn) { |
31175
|
2
|
50
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31176
|
2
|
|
|
|
|
|
ST(0) = b_SV; |
31177
|
2
|
|
|
|
|
|
XSRETURN(nreturn); |
31178
|
|
|
|
|
|
|
} else { |
31179
|
0
|
|
|
|
|
|
XSRETURN(0); |
31180
|
|
|
|
|
|
|
} |
31181
|
|
|
|
|
|
|
} |
31182
|
|
|
|
|
|
|
|
31183
|
|
|
|
|
|
|
void |
31184
|
|
|
|
|
|
|
cmedian(...) |
31185
|
|
|
|
|
|
|
PREINIT: |
31186
|
2
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31187
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31188
|
2
|
|
|
|
|
|
HV *bless_stash = 0; |
31189
|
2
|
|
|
|
|
|
SV *parent = 0; |
31190
|
|
|
|
|
|
|
int nreturn; |
31191
|
|
|
|
|
|
|
SV *b_SV; |
31192
|
|
|
|
|
|
|
pdl *a; |
31193
|
|
|
|
|
|
|
pdl *b; |
31194
|
|
|
|
|
|
|
PPCODE: |
31195
|
|
|
|
|
|
|
{ |
31196
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31197
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31198
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31199
|
2
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31200
|
2
|
|
|
|
|
|
parent = ST(0); |
31201
|
2
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
31202
|
2
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31203
|
2
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
31204
|
|
|
|
|
|
|
} |
31205
|
|
|
|
|
|
|
} |
31206
|
2
|
50
|
|
|
|
|
if (items == 2) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31207
|
0
|
|
|
|
|
|
nreturn = 0; |
31208
|
0
|
|
|
|
|
|
a = PDL->SvPDLV(ST(0)); |
31209
|
0
|
|
|
|
|
|
b = PDL->SvPDLV(ST(1)); |
31210
|
|
|
|
|
|
|
} |
31211
|
2
|
50
|
|
|
|
|
else if (items == 1) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31212
|
2
|
|
|
|
|
|
nreturn = 1; |
31213
|
2
|
|
|
|
|
|
a = PDL->SvPDLV(ST(0)); |
31214
|
2
|
50
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31215
|
2
|
|
|
|
|
|
b_SV = sv_newmortal(); |
31216
|
2
|
|
|
|
|
|
b = PDL->null(); |
31217
|
2
|
|
|
|
|
|
PDL->SetSV_PDL(b_SV,b); |
31218
|
2
|
50
|
|
|
|
|
if (bless_stash) b_SV = sv_bless(b_SV, bless_stash); |
31219
|
|
|
|
|
|
|
} else { |
31220
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31221
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31222
|
0
|
|
|
|
|
|
PUTBACK; |
31223
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31224
|
0
|
|
|
|
|
|
SPAGAIN; |
31225
|
0
|
|
|
|
|
|
b_SV = POPs; |
31226
|
0
|
|
|
|
|
|
PUTBACK; |
31227
|
2
|
|
|
|
|
|
b = PDL->SvPDLV(b_SV); |
31228
|
|
|
|
|
|
|
} |
31229
|
|
|
|
|
|
|
} |
31230
|
|
|
|
|
|
|
else { |
31231
|
0
|
|
|
|
|
|
croak ("Usage: PDL::cmedian(a,b) (you may leave temporaries or output variables out of list)"); |
31232
|
|
|
|
|
|
|
} |
31233
|
|
|
|
|
|
|
} |
31234
|
|
|
|
|
|
|
{ |
31235
|
|
|
|
|
|
|
} |
31236
|
|
|
|
|
|
|
{ pdl_cmedian_struct *__privtrans; |
31237
|
2
|
|
|
|
|
|
int badflag_cache = 0; |
31238
|
2
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31239
|
2
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31240
|
2
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31241
|
2
|
|
|
|
|
|
__privtrans->flags = 0; |
31242
|
2
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31243
|
2
|
|
|
|
|
|
__privtrans->vtable = &pdl_cmedian_vtable; |
31244
|
2
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31245
|
2
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31246
|
2
|
|
|
|
|
|
badflag_cache = ((a->state & PDL_BADVAL) > 0); |
31247
|
2
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31248
|
2
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_D) {} |
31249
|
2
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31250
|
2
|
50
|
|
|
|
|
if(PDL_D != a->datatype) { |
31251
|
0
|
|
|
|
|
|
a = PDL->get_convertedpdl(a,PDL_D); |
31252
|
2
|
50
|
|
|
|
|
}if( (b->state & PDL_NOMYDIMS) && b->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
31253
|
2
|
|
|
|
|
|
b->datatype = PDL_D; |
31254
|
0
|
0
|
|
|
|
|
} else if(PDL_D != b->datatype) { |
31255
|
0
|
|
|
|
|
|
b = PDL->get_convertedpdl(b,PDL_D); |
31256
|
2
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = a; |
31257
|
2
|
|
|
|
|
|
__privtrans->pdls[1] = b; |
31258
|
2
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31259
|
2
|
50
|
|
|
|
|
if (badflag_cache) { |
31260
|
0
|
|
|
|
|
|
b->state |= PDL_BADVAL; |
31261
|
|
|
|
|
|
|
} |
31262
|
2
|
50
|
|
|
|
|
if (nreturn) { |
31263
|
2
|
50
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31264
|
2
|
|
|
|
|
|
ST(0) = b_SV; |
31265
|
2
|
|
|
|
|
|
XSRETURN(nreturn); |
31266
|
|
|
|
|
|
|
} else { |
31267
|
0
|
|
|
|
|
|
XSRETURN(0); |
31268
|
|
|
|
|
|
|
} |
31269
|
|
|
|
|
|
|
} |
31270
|
|
|
|
|
|
|
|
31271
|
|
|
|
|
|
|
void |
31272
|
|
|
|
|
|
|
calculate_weights(...) |
31273
|
|
|
|
|
|
|
PREINIT: |
31274
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31275
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31276
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
31277
|
0
|
|
|
|
|
|
SV *parent = 0; |
31278
|
|
|
|
|
|
|
int nreturn; |
31279
|
|
|
|
|
|
|
SV *oweights_SV; |
31280
|
|
|
|
|
|
|
pdl *data; |
31281
|
|
|
|
|
|
|
pdl *mask; |
31282
|
|
|
|
|
|
|
pdl *weight; |
31283
|
|
|
|
|
|
|
pdl *cutoff; |
31284
|
|
|
|
|
|
|
pdl *exponent; |
31285
|
|
|
|
|
|
|
pdl *oweights; |
31286
|
|
|
|
|
|
|
char *distFlag; |
31287
|
|
|
|
|
|
|
PPCODE: |
31288
|
|
|
|
|
|
|
{ |
31289
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31290
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31291
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31292
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31293
|
0
|
|
|
|
|
|
parent = ST(0); |
31294
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
31295
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31296
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31297
|
|
|
|
|
|
|
} |
31298
|
|
|
|
|
|
|
} |
31299
|
0
|
0
|
|
|
|
|
if (items == 7) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31300
|
0
|
|
|
|
|
|
nreturn = 0; |
31301
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31302
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31303
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
31304
|
0
|
|
|
|
|
|
cutoff = PDL->SvPDLV(ST(3)); |
31305
|
0
|
|
|
|
|
|
exponent = PDL->SvPDLV(ST(4)); |
31306
|
0
|
|
|
|
|
|
oweights = PDL->SvPDLV(ST(5)); |
31307
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(6)) |
31308
|
|
|
|
|
|
|
; |
31309
|
|
|
|
|
|
|
} |
31310
|
0
|
0
|
|
|
|
|
else if (items == 6) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31311
|
0
|
|
|
|
|
|
nreturn = 1; |
31312
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31313
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31314
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
31315
|
0
|
|
|
|
|
|
cutoff = PDL->SvPDLV(ST(3)); |
31316
|
0
|
|
|
|
|
|
exponent = PDL->SvPDLV(ST(4)); |
31317
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(5)) |
31318
|
|
|
|
|
|
|
; |
31319
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31320
|
0
|
|
|
|
|
|
oweights_SV = sv_newmortal(); |
31321
|
0
|
|
|
|
|
|
oweights = PDL->null(); |
31322
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(oweights_SV,oweights); |
31323
|
0
|
0
|
|
|
|
|
if (bless_stash) oweights_SV = sv_bless(oweights_SV, bless_stash); |
31324
|
|
|
|
|
|
|
} else { |
31325
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31326
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31327
|
0
|
|
|
|
|
|
PUTBACK; |
31328
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31329
|
0
|
|
|
|
|
|
SPAGAIN; |
31330
|
0
|
|
|
|
|
|
oweights_SV = POPs; |
31331
|
0
|
|
|
|
|
|
PUTBACK; |
31332
|
0
|
|
|
|
|
|
oweights = PDL->SvPDLV(oweights_SV); |
31333
|
|
|
|
|
|
|
} |
31334
|
|
|
|
|
|
|
} |
31335
|
|
|
|
|
|
|
else { |
31336
|
0
|
|
|
|
|
|
croak ("Usage: PDL::calculate_weights(data,mask,weight,cutoff,exponent,oweights,distFlag) (you may leave temporaries or output variables out of list)"); |
31337
|
|
|
|
|
|
|
} |
31338
|
|
|
|
|
|
|
} |
31339
|
|
|
|
|
|
|
{ |
31340
|
|
|
|
|
|
|
} |
31341
|
|
|
|
|
|
|
{ pdl_calculate_weights_struct *__privtrans; |
31342
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
31343
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31344
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31345
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31346
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
31347
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31348
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_calculate_weights_vtable; |
31349
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31350
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31351
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((cutoff->state & PDL_BADVAL) > 0) || ((exponent->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31352
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31353
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
31354
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
31355
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
31356
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
31357
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
31358
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
31359
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
31360
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
31361
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31362
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
31363
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
31364
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
31365
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
31366
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
31367
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
31368
|
0
|
0
|
|
|
|
|
}if(PDL_D != cutoff->datatype) { |
31369
|
0
|
|
|
|
|
|
cutoff = PDL->get_convertedpdl(cutoff,PDL_D); |
31370
|
0
|
0
|
|
|
|
|
}if(PDL_D != exponent->datatype) { |
31371
|
0
|
|
|
|
|
|
exponent = PDL->get_convertedpdl(exponent,PDL_D); |
31372
|
0
|
0
|
|
|
|
|
}if( (oweights->state & PDL_NOMYDIMS) && oweights->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
31373
|
0
|
|
|
|
|
|
oweights->datatype = PDL_D; |
31374
|
0
|
0
|
|
|
|
|
} else if(PDL_D != oweights->datatype) { |
31375
|
0
|
|
|
|
|
|
oweights = PDL->get_convertedpdl(oweights,PDL_D); |
31376
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
31377
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
31378
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
31379
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = cutoff; |
31380
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = exponent; |
31381
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = oweights; |
31382
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31383
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
31384
|
0
|
|
|
|
|
|
oweights->state |= PDL_BADVAL; |
31385
|
|
|
|
|
|
|
} |
31386
|
0
|
0
|
|
|
|
|
if (nreturn) { |
31387
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31388
|
0
|
|
|
|
|
|
ST(0) = oweights_SV; |
31389
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
31390
|
|
|
|
|
|
|
} else { |
31391
|
0
|
|
|
|
|
|
XSRETURN(0); |
31392
|
|
|
|
|
|
|
} |
31393
|
|
|
|
|
|
|
} |
31394
|
|
|
|
|
|
|
|
31395
|
|
|
|
|
|
|
void |
31396
|
|
|
|
|
|
|
clusterdistance(...) |
31397
|
|
|
|
|
|
|
PREINIT: |
31398
|
6
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31399
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31400
|
6
|
|
|
|
|
|
HV *bless_stash = 0; |
31401
|
6
|
|
|
|
|
|
SV *parent = 0; |
31402
|
|
|
|
|
|
|
int nreturn; |
31403
|
|
|
|
|
|
|
SV *dist_SV; |
31404
|
|
|
|
|
|
|
pdl *data; |
31405
|
|
|
|
|
|
|
pdl *mask; |
31406
|
|
|
|
|
|
|
pdl *weight; |
31407
|
|
|
|
|
|
|
pdl *n1; |
31408
|
|
|
|
|
|
|
pdl *n2; |
31409
|
|
|
|
|
|
|
pdl *index1; |
31410
|
|
|
|
|
|
|
pdl *index2; |
31411
|
|
|
|
|
|
|
pdl *dist; |
31412
|
|
|
|
|
|
|
char *distFlag; |
31413
|
|
|
|
|
|
|
char *methodFlag; |
31414
|
|
|
|
|
|
|
PPCODE: |
31415
|
|
|
|
|
|
|
{ |
31416
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31417
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31418
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31419
|
6
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31420
|
6
|
|
|
|
|
|
parent = ST(0); |
31421
|
6
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
31422
|
6
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31423
|
6
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
31424
|
|
|
|
|
|
|
} |
31425
|
|
|
|
|
|
|
} |
31426
|
6
|
50
|
|
|
|
|
if (items == 10) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31427
|
6
|
|
|
|
|
|
nreturn = 0; |
31428
|
6
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31429
|
6
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31430
|
6
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
31431
|
6
|
|
|
|
|
|
n1 = PDL->SvPDLV(ST(3)); |
31432
|
6
|
|
|
|
|
|
n2 = PDL->SvPDLV(ST(4)); |
31433
|
6
|
|
|
|
|
|
index1 = PDL->SvPDLV(ST(5)); |
31434
|
6
|
|
|
|
|
|
index2 = PDL->SvPDLV(ST(6)); |
31435
|
6
|
|
|
|
|
|
dist = PDL->SvPDLV(ST(7)); |
31436
|
6
|
50
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(8)) |
31437
|
|
|
|
|
|
|
; |
31438
|
6
|
50
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(9)) |
31439
|
|
|
|
|
|
|
; |
31440
|
|
|
|
|
|
|
} |
31441
|
0
|
0
|
|
|
|
|
else if (items == 9) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31442
|
0
|
|
|
|
|
|
nreturn = 1; |
31443
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31444
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31445
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
31446
|
0
|
|
|
|
|
|
n1 = PDL->SvPDLV(ST(3)); |
31447
|
0
|
|
|
|
|
|
n2 = PDL->SvPDLV(ST(4)); |
31448
|
0
|
|
|
|
|
|
index1 = PDL->SvPDLV(ST(5)); |
31449
|
0
|
|
|
|
|
|
index2 = PDL->SvPDLV(ST(6)); |
31450
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(7)) |
31451
|
|
|
|
|
|
|
; |
31452
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(8)) |
31453
|
|
|
|
|
|
|
; |
31454
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31455
|
0
|
|
|
|
|
|
dist_SV = sv_newmortal(); |
31456
|
0
|
|
|
|
|
|
dist = PDL->null(); |
31457
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dist_SV,dist); |
31458
|
0
|
0
|
|
|
|
|
if (bless_stash) dist_SV = sv_bless(dist_SV, bless_stash); |
31459
|
|
|
|
|
|
|
} else { |
31460
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31461
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31462
|
0
|
|
|
|
|
|
PUTBACK; |
31463
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31464
|
0
|
|
|
|
|
|
SPAGAIN; |
31465
|
0
|
|
|
|
|
|
dist_SV = POPs; |
31466
|
0
|
|
|
|
|
|
PUTBACK; |
31467
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(dist_SV); |
31468
|
|
|
|
|
|
|
} |
31469
|
|
|
|
|
|
|
} |
31470
|
|
|
|
|
|
|
else { |
31471
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterdistance(data,mask,weight,n1,n2,index1,index2,dist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
31472
|
|
|
|
|
|
|
} |
31473
|
|
|
|
|
|
|
} |
31474
|
|
|
|
|
|
|
{ |
31475
|
|
|
|
|
|
|
} |
31476
|
|
|
|
|
|
|
{ pdl_clusterdistance_struct *__privtrans; |
31477
|
6
|
|
|
|
|
|
int badflag_cache = 0; |
31478
|
6
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31479
|
6
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31480
|
6
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31481
|
6
|
|
|
|
|
|
__privtrans->flags = 0; |
31482
|
6
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31483
|
6
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterdistance_vtable; |
31484
|
6
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31485
|
6
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31486
|
6
|
50
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((n1->state & PDL_BADVAL) > 0) || ((n2->state & PDL_BADVAL) > 0) || ((index1->state & PDL_BADVAL) > 0) || ((index2->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
31487
|
6
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31488
|
6
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
31489
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
31490
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
31491
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
31492
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
31493
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
31494
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
31495
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
31496
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31497
|
6
|
50
|
|
|
|
|
if(PDL_D != data->datatype) { |
31498
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
31499
|
6
|
50
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
31500
|
6
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
31501
|
6
|
50
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
31502
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
31503
|
6
|
50
|
|
|
|
|
}if(PDL_L != n1->datatype) { |
31504
|
6
|
|
|
|
|
|
n1 = PDL->get_convertedpdl(n1,PDL_L); |
31505
|
6
|
50
|
|
|
|
|
}if(PDL_L != n2->datatype) { |
31506
|
6
|
|
|
|
|
|
n2 = PDL->get_convertedpdl(n2,PDL_L); |
31507
|
6
|
50
|
|
|
|
|
}if(PDL_L != index1->datatype) { |
31508
|
6
|
|
|
|
|
|
index1 = PDL->get_convertedpdl(index1,PDL_L); |
31509
|
6
|
50
|
|
|
|
|
}if(PDL_L != index2->datatype) { |
31510
|
6
|
|
|
|
|
|
index2 = PDL->get_convertedpdl(index2,PDL_L); |
31511
|
6
|
50
|
|
|
|
|
}if( (dist->state & PDL_NOMYDIMS) && dist->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
31512
|
6
|
|
|
|
|
|
dist->datatype = PDL_D; |
31513
|
0
|
0
|
|
|
|
|
} else if(PDL_D != dist->datatype) { |
31514
|
0
|
|
|
|
|
|
dist = PDL->get_convertedpdl(dist,PDL_D); |
31515
|
6
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
31516
|
6
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
31517
|
6
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
31518
|
6
|
|
|
|
|
|
__privtrans->pdls[3] = n1; |
31519
|
6
|
|
|
|
|
|
__privtrans->pdls[4] = n2; |
31520
|
6
|
|
|
|
|
|
__privtrans->pdls[5] = index1; |
31521
|
6
|
|
|
|
|
|
__privtrans->pdls[6] = index2; |
31522
|
6
|
|
|
|
|
|
__privtrans->pdls[7] = dist; |
31523
|
6
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31524
|
6
|
50
|
|
|
|
|
if (badflag_cache) { |
31525
|
0
|
|
|
|
|
|
dist->state |= PDL_BADVAL; |
31526
|
|
|
|
|
|
|
} |
31527
|
6
|
50
|
|
|
|
|
if (nreturn) { |
31528
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31529
|
0
|
|
|
|
|
|
ST(0) = dist_SV; |
31530
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
31531
|
|
|
|
|
|
|
} else { |
31532
|
6
|
|
|
|
|
|
XSRETURN(0); |
31533
|
|
|
|
|
|
|
} |
31534
|
|
|
|
|
|
|
} |
31535
|
|
|
|
|
|
|
|
31536
|
|
|
|
|
|
|
void |
31537
|
|
|
|
|
|
|
distancematrix(...) |
31538
|
|
|
|
|
|
|
PREINIT: |
31539
|
1
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31540
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31541
|
1
|
|
|
|
|
|
HV *bless_stash = 0; |
31542
|
1
|
|
|
|
|
|
SV *parent = 0; |
31543
|
|
|
|
|
|
|
int nreturn; |
31544
|
|
|
|
|
|
|
SV *dists_SV; |
31545
|
|
|
|
|
|
|
pdl *data; |
31546
|
|
|
|
|
|
|
pdl *mask; |
31547
|
|
|
|
|
|
|
pdl *weight; |
31548
|
|
|
|
|
|
|
pdl *dists; |
31549
|
|
|
|
|
|
|
char *distFlag; |
31550
|
|
|
|
|
|
|
PPCODE: |
31551
|
|
|
|
|
|
|
{ |
31552
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31553
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31554
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31555
|
1
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31556
|
1
|
|
|
|
|
|
parent = ST(0); |
31557
|
1
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
31558
|
1
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31559
|
1
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
31560
|
|
|
|
|
|
|
} |
31561
|
|
|
|
|
|
|
} |
31562
|
1
|
50
|
|
|
|
|
if (items == 5) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31563
|
1
|
|
|
|
|
|
nreturn = 0; |
31564
|
1
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31565
|
1
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31566
|
1
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
31567
|
1
|
|
|
|
|
|
dists = PDL->SvPDLV(ST(3)); |
31568
|
1
|
50
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(4)) |
31569
|
|
|
|
|
|
|
; |
31570
|
|
|
|
|
|
|
} |
31571
|
0
|
0
|
|
|
|
|
else if (items == 4) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31572
|
0
|
|
|
|
|
|
nreturn = 1; |
31573
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31574
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31575
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
31576
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(3)) |
31577
|
|
|
|
|
|
|
; |
31578
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31579
|
0
|
|
|
|
|
|
dists_SV = sv_newmortal(); |
31580
|
0
|
|
|
|
|
|
dists = PDL->null(); |
31581
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dists_SV,dists); |
31582
|
0
|
0
|
|
|
|
|
if (bless_stash) dists_SV = sv_bless(dists_SV, bless_stash); |
31583
|
|
|
|
|
|
|
} else { |
31584
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31585
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31586
|
0
|
|
|
|
|
|
PUTBACK; |
31587
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31588
|
0
|
|
|
|
|
|
SPAGAIN; |
31589
|
0
|
|
|
|
|
|
dists_SV = POPs; |
31590
|
0
|
|
|
|
|
|
PUTBACK; |
31591
|
0
|
|
|
|
|
|
dists = PDL->SvPDLV(dists_SV); |
31592
|
|
|
|
|
|
|
} |
31593
|
|
|
|
|
|
|
} |
31594
|
|
|
|
|
|
|
else { |
31595
|
0
|
|
|
|
|
|
croak ("Usage: PDL::distancematrix(data,mask,weight,dists,distFlag) (you may leave temporaries or output variables out of list)"); |
31596
|
|
|
|
|
|
|
} |
31597
|
|
|
|
|
|
|
} |
31598
|
|
|
|
|
|
|
{ |
31599
|
|
|
|
|
|
|
} |
31600
|
|
|
|
|
|
|
{ pdl_distancematrix_struct *__privtrans; |
31601
|
1
|
|
|
|
|
|
int badflag_cache = 0; |
31602
|
1
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31603
|
1
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31604
|
1
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31605
|
1
|
|
|
|
|
|
__privtrans->flags = 0; |
31606
|
1
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31607
|
1
|
|
|
|
|
|
__privtrans->vtable = &pdl_distancematrix_vtable; |
31608
|
1
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31609
|
1
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31610
|
1
|
50
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
31611
|
1
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31612
|
1
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
31613
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
31614
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
31615
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
31616
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
31617
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
31618
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
31619
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
31620
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31621
|
1
|
50
|
|
|
|
|
if(PDL_D != data->datatype) { |
31622
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
31623
|
1
|
50
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
31624
|
1
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
31625
|
1
|
50
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
31626
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
31627
|
1
|
50
|
|
|
|
|
}if( (dists->state & PDL_NOMYDIMS) && dists->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
31628
|
1
|
|
|
|
|
|
dists->datatype = PDL_D; |
31629
|
0
|
0
|
|
|
|
|
} else if(PDL_D != dists->datatype) { |
31630
|
0
|
|
|
|
|
|
dists = PDL->get_convertedpdl(dists,PDL_D); |
31631
|
1
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
31632
|
1
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
31633
|
1
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
31634
|
1
|
|
|
|
|
|
__privtrans->pdls[3] = dists; |
31635
|
1
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31636
|
1
|
50
|
|
|
|
|
if (badflag_cache) { |
31637
|
0
|
|
|
|
|
|
dists->state |= PDL_BADVAL; |
31638
|
|
|
|
|
|
|
} |
31639
|
1
|
50
|
|
|
|
|
if (nreturn) { |
31640
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31641
|
0
|
|
|
|
|
|
ST(0) = dists_SV; |
31642
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
31643
|
|
|
|
|
|
|
} else { |
31644
|
1
|
|
|
|
|
|
XSRETURN(0); |
31645
|
|
|
|
|
|
|
} |
31646
|
|
|
|
|
|
|
} |
31647
|
|
|
|
|
|
|
|
31648
|
|
|
|
|
|
|
void |
31649
|
|
|
|
|
|
|
getclustercentroids(...) |
31650
|
|
|
|
|
|
|
PREINIT: |
31651
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31652
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31653
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
31654
|
0
|
|
|
|
|
|
SV *parent = 0; |
31655
|
|
|
|
|
|
|
int nreturn; |
31656
|
|
|
|
|
|
|
SV *cdata_SV; |
31657
|
|
|
|
|
|
|
SV *cmask_SV; |
31658
|
|
|
|
|
|
|
pdl *data; |
31659
|
|
|
|
|
|
|
pdl *mask; |
31660
|
|
|
|
|
|
|
pdl *clusterids; |
31661
|
|
|
|
|
|
|
pdl *cdata; |
31662
|
|
|
|
|
|
|
pdl *cmask; |
31663
|
|
|
|
|
|
|
char *ctrMethodFlag; |
31664
|
|
|
|
|
|
|
PPCODE: |
31665
|
|
|
|
|
|
|
{ |
31666
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31667
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31668
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31669
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31670
|
0
|
|
|
|
|
|
parent = ST(0); |
31671
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
31672
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31673
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31674
|
|
|
|
|
|
|
} |
31675
|
|
|
|
|
|
|
} |
31676
|
0
|
0
|
|
|
|
|
if (items == 6) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31677
|
0
|
|
|
|
|
|
nreturn = 0; |
31678
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31679
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31680
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(2)); |
31681
|
0
|
|
|
|
|
|
cdata = PDL->SvPDLV(ST(3)); |
31682
|
0
|
|
|
|
|
|
cmask = PDL->SvPDLV(ST(4)); |
31683
|
0
|
0
|
|
|
|
|
ctrMethodFlag = (char *)SvPV_nolen(ST(5)) |
31684
|
|
|
|
|
|
|
; |
31685
|
|
|
|
|
|
|
} |
31686
|
0
|
0
|
|
|
|
|
else if (items == 4) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31687
|
0
|
|
|
|
|
|
nreturn = 2; |
31688
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
31689
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
31690
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(2)); |
31691
|
0
|
0
|
|
|
|
|
ctrMethodFlag = (char *)SvPV_nolen(ST(3)) |
31692
|
|
|
|
|
|
|
; |
31693
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31694
|
0
|
|
|
|
|
|
cdata_SV = sv_newmortal(); |
31695
|
0
|
|
|
|
|
|
cdata = PDL->null(); |
31696
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cdata_SV,cdata); |
31697
|
0
|
0
|
|
|
|
|
if (bless_stash) cdata_SV = sv_bless(cdata_SV, bless_stash); |
31698
|
|
|
|
|
|
|
} else { |
31699
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31700
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31701
|
0
|
|
|
|
|
|
PUTBACK; |
31702
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31703
|
0
|
|
|
|
|
|
SPAGAIN; |
31704
|
0
|
|
|
|
|
|
cdata_SV = POPs; |
31705
|
0
|
|
|
|
|
|
PUTBACK; |
31706
|
0
|
|
|
|
|
|
cdata = PDL->SvPDLV(cdata_SV); |
31707
|
|
|
|
|
|
|
} |
31708
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31709
|
0
|
|
|
|
|
|
cmask_SV = sv_newmortal(); |
31710
|
0
|
|
|
|
|
|
cmask = PDL->null(); |
31711
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cmask_SV,cmask); |
31712
|
0
|
0
|
|
|
|
|
if (bless_stash) cmask_SV = sv_bless(cmask_SV, bless_stash); |
31713
|
|
|
|
|
|
|
} else { |
31714
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31715
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31716
|
0
|
|
|
|
|
|
PUTBACK; |
31717
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31718
|
0
|
|
|
|
|
|
SPAGAIN; |
31719
|
0
|
|
|
|
|
|
cmask_SV = POPs; |
31720
|
0
|
|
|
|
|
|
PUTBACK; |
31721
|
0
|
|
|
|
|
|
cmask = PDL->SvPDLV(cmask_SV); |
31722
|
|
|
|
|
|
|
} |
31723
|
|
|
|
|
|
|
} |
31724
|
|
|
|
|
|
|
else { |
31725
|
0
|
|
|
|
|
|
croak ("Usage: PDL::getclustercentroids(data,mask,clusterids,cdata,cmask,ctrMethodFlag) (you may leave temporaries or output variables out of list)"); |
31726
|
|
|
|
|
|
|
} |
31727
|
|
|
|
|
|
|
} |
31728
|
|
|
|
|
|
|
{ |
31729
|
|
|
|
|
|
|
} |
31730
|
|
|
|
|
|
|
{ pdl_getclustercentroids_struct *__privtrans; |
31731
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
31732
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31733
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31734
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31735
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
31736
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31737
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_getclustercentroids_vtable; |
31738
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31739
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31740
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((clusterids->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31741
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31742
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
31743
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
31744
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
31745
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
31746
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
31747
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
31748
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
31749
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
31750
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31751
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
31752
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
31753
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
31754
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
31755
|
0
|
0
|
|
|
|
|
}if(PDL_L != clusterids->datatype) { |
31756
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
31757
|
0
|
0
|
|
|
|
|
}if( (cdata->state & PDL_NOMYDIMS) && cdata->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
31758
|
0
|
|
|
|
|
|
cdata->datatype = PDL_D; |
31759
|
0
|
0
|
|
|
|
|
} else if(PDL_D != cdata->datatype) { |
31760
|
0
|
|
|
|
|
|
cdata = PDL->get_convertedpdl(cdata,PDL_D); |
31761
|
0
|
0
|
|
|
|
|
}if( (cmask->state & PDL_NOMYDIMS) && cmask->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
31762
|
0
|
|
|
|
|
|
cmask->datatype = PDL_L; |
31763
|
0
|
0
|
|
|
|
|
} else if(PDL_L != cmask->datatype) { |
31764
|
0
|
|
|
|
|
|
cmask = PDL->get_convertedpdl(cmask,PDL_L); |
31765
|
0
|
|
|
|
|
|
}{(__privtrans->ctrMethodFlag) = malloc(strlen(ctrMethodFlag)+1); strcpy(__privtrans->ctrMethodFlag,ctrMethodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
31766
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
31767
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = clusterids; |
31768
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = cdata; |
31769
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = cmask; |
31770
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31771
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
31772
|
0
|
|
|
|
|
|
cdata->state |= PDL_BADVAL; |
31773
|
0
|
|
|
|
|
|
cmask->state |= PDL_BADVAL; |
31774
|
|
|
|
|
|
|
} |
31775
|
0
|
0
|
|
|
|
|
if (nreturn) { |
31776
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31777
|
0
|
|
|
|
|
|
ST(0) = cdata_SV; |
31778
|
0
|
|
|
|
|
|
ST(1) = cmask_SV; |
31779
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
31780
|
|
|
|
|
|
|
} else { |
31781
|
0
|
|
|
|
|
|
XSRETURN(0); |
31782
|
|
|
|
|
|
|
} |
31783
|
|
|
|
|
|
|
} |
31784
|
|
|
|
|
|
|
|
31785
|
|
|
|
|
|
|
void |
31786
|
|
|
|
|
|
|
getclustermedoids(...) |
31787
|
|
|
|
|
|
|
PREINIT: |
31788
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31789
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31790
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
31791
|
0
|
|
|
|
|
|
SV *parent = 0; |
31792
|
|
|
|
|
|
|
int nreturn; |
31793
|
|
|
|
|
|
|
SV *centroids_SV; |
31794
|
|
|
|
|
|
|
SV *errors_SV; |
31795
|
|
|
|
|
|
|
pdl *distance; |
31796
|
|
|
|
|
|
|
pdl *clusterids; |
31797
|
|
|
|
|
|
|
pdl *centroids; |
31798
|
|
|
|
|
|
|
pdl *errors; |
31799
|
|
|
|
|
|
|
PPCODE: |
31800
|
|
|
|
|
|
|
{ |
31801
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31802
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31803
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31804
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31805
|
0
|
|
|
|
|
|
parent = ST(0); |
31806
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
31807
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31808
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31809
|
|
|
|
|
|
|
} |
31810
|
|
|
|
|
|
|
} |
31811
|
0
|
0
|
|
|
|
|
if (items == 4) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31812
|
0
|
|
|
|
|
|
nreturn = 0; |
31813
|
0
|
|
|
|
|
|
distance = PDL->SvPDLV(ST(0)); |
31814
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(1)); |
31815
|
0
|
|
|
|
|
|
centroids = PDL->SvPDLV(ST(2)); |
31816
|
0
|
|
|
|
|
|
errors = PDL->SvPDLV(ST(3)); |
31817
|
|
|
|
|
|
|
} |
31818
|
0
|
0
|
|
|
|
|
else if (items == 2) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31819
|
0
|
|
|
|
|
|
nreturn = 2; |
31820
|
0
|
|
|
|
|
|
distance = PDL->SvPDLV(ST(0)); |
31821
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(1)); |
31822
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31823
|
0
|
|
|
|
|
|
centroids_SV = sv_newmortal(); |
31824
|
0
|
|
|
|
|
|
centroids = PDL->null(); |
31825
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(centroids_SV,centroids); |
31826
|
0
|
0
|
|
|
|
|
if (bless_stash) centroids_SV = sv_bless(centroids_SV, bless_stash); |
31827
|
|
|
|
|
|
|
} else { |
31828
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31829
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31830
|
0
|
|
|
|
|
|
PUTBACK; |
31831
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31832
|
0
|
|
|
|
|
|
SPAGAIN; |
31833
|
0
|
|
|
|
|
|
centroids_SV = POPs; |
31834
|
0
|
|
|
|
|
|
PUTBACK; |
31835
|
0
|
|
|
|
|
|
centroids = PDL->SvPDLV(centroids_SV); |
31836
|
|
|
|
|
|
|
} |
31837
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31838
|
0
|
|
|
|
|
|
errors_SV = sv_newmortal(); |
31839
|
0
|
|
|
|
|
|
errors = PDL->null(); |
31840
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(errors_SV,errors); |
31841
|
0
|
0
|
|
|
|
|
if (bless_stash) errors_SV = sv_bless(errors_SV, bless_stash); |
31842
|
|
|
|
|
|
|
} else { |
31843
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31844
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31845
|
0
|
|
|
|
|
|
PUTBACK; |
31846
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31847
|
0
|
|
|
|
|
|
SPAGAIN; |
31848
|
0
|
|
|
|
|
|
errors_SV = POPs; |
31849
|
0
|
|
|
|
|
|
PUTBACK; |
31850
|
0
|
|
|
|
|
|
errors = PDL->SvPDLV(errors_SV); |
31851
|
|
|
|
|
|
|
} |
31852
|
|
|
|
|
|
|
} |
31853
|
|
|
|
|
|
|
else { |
31854
|
0
|
|
|
|
|
|
croak ("Usage: PDL::getclustermedoids(distance,clusterids,centroids,errors) (you may leave temporaries or output variables out of list)"); |
31855
|
|
|
|
|
|
|
} |
31856
|
|
|
|
|
|
|
} |
31857
|
|
|
|
|
|
|
{ |
31858
|
|
|
|
|
|
|
} |
31859
|
|
|
|
|
|
|
{ pdl_getclustermedoids_struct *__privtrans; |
31860
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
31861
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
31862
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
31863
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
31864
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
31865
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
31866
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_getclustermedoids_vtable; |
31867
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
31868
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
31869
|
0
|
0
|
|
|
|
|
badflag_cache = ((distance->state & PDL_BADVAL) > 0) || ((clusterids->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
31870
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
31871
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
31872
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
31873
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
31874
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
31875
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
31876
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
31877
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
31878
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
31879
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
31880
|
0
|
0
|
|
|
|
|
if(PDL_D != distance->datatype) { |
31881
|
0
|
|
|
|
|
|
distance = PDL->get_convertedpdl(distance,PDL_D); |
31882
|
0
|
0
|
|
|
|
|
}if(PDL_L != clusterids->datatype) { |
31883
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
31884
|
0
|
0
|
|
|
|
|
}if( (centroids->state & PDL_NOMYDIMS) && centroids->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
31885
|
0
|
|
|
|
|
|
centroids->datatype = PDL_L; |
31886
|
0
|
0
|
|
|
|
|
} else if(PDL_L != centroids->datatype) { |
31887
|
0
|
|
|
|
|
|
centroids = PDL->get_convertedpdl(centroids,PDL_L); |
31888
|
0
|
0
|
|
|
|
|
}if( (errors->state & PDL_NOMYDIMS) && errors->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
31889
|
0
|
|
|
|
|
|
errors->datatype = PDL_D; |
31890
|
0
|
0
|
|
|
|
|
} else if(PDL_D != errors->datatype) { |
31891
|
0
|
|
|
|
|
|
errors = PDL->get_convertedpdl(errors,PDL_D); |
31892
|
0
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = distance; |
31893
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = clusterids; |
31894
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = centroids; |
31895
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = errors; |
31896
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
31897
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
31898
|
0
|
|
|
|
|
|
centroids->state |= PDL_BADVAL; |
31899
|
0
|
|
|
|
|
|
errors->state |= PDL_BADVAL; |
31900
|
|
|
|
|
|
|
} |
31901
|
0
|
0
|
|
|
|
|
if (nreturn) { |
31902
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31903
|
0
|
|
|
|
|
|
ST(0) = centroids_SV; |
31904
|
0
|
|
|
|
|
|
ST(1) = errors_SV; |
31905
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
31906
|
|
|
|
|
|
|
} else { |
31907
|
0
|
|
|
|
|
|
XSRETURN(0); |
31908
|
|
|
|
|
|
|
} |
31909
|
|
|
|
|
|
|
} |
31910
|
|
|
|
|
|
|
|
31911
|
|
|
|
|
|
|
void |
31912
|
|
|
|
|
|
|
kcluster(...) |
31913
|
|
|
|
|
|
|
PREINIT: |
31914
|
3
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
31915
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
31916
|
3
|
|
|
|
|
|
HV *bless_stash = 0; |
31917
|
3
|
|
|
|
|
|
SV *parent = 0; |
31918
|
|
|
|
|
|
|
int nreturn; |
31919
|
|
|
|
|
|
|
SV *clusterids_SV; |
31920
|
|
|
|
|
|
|
SV *error_SV; |
31921
|
|
|
|
|
|
|
SV *nfound_SV; |
31922
|
|
|
|
|
|
|
pdl *nclusters; |
31923
|
|
|
|
|
|
|
pdl *data; |
31924
|
|
|
|
|
|
|
pdl *mask; |
31925
|
|
|
|
|
|
|
pdl *weight; |
31926
|
|
|
|
|
|
|
pdl *npass; |
31927
|
|
|
|
|
|
|
pdl *clusterids; |
31928
|
|
|
|
|
|
|
pdl *error; |
31929
|
|
|
|
|
|
|
pdl *nfound; |
31930
|
|
|
|
|
|
|
char *distFlag; |
31931
|
|
|
|
|
|
|
char *ctrMethodFlag; |
31932
|
|
|
|
|
|
|
PPCODE: |
31933
|
|
|
|
|
|
|
{ |
31934
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
31935
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
31936
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
31937
|
3
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31938
|
0
|
|
|
|
|
|
parent = ST(0); |
31939
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
31940
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
31941
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
31942
|
|
|
|
|
|
|
} |
31943
|
|
|
|
|
|
|
} |
31944
|
3
|
50
|
|
|
|
|
if (items == 10) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
31945
|
3
|
|
|
|
|
|
nreturn = 0; |
31946
|
3
|
|
|
|
|
|
nclusters = PDL->SvPDLV(ST(0)); |
31947
|
3
|
|
|
|
|
|
data = PDL->SvPDLV(ST(1)); |
31948
|
3
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(2)); |
31949
|
3
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(3)); |
31950
|
3
|
|
|
|
|
|
npass = PDL->SvPDLV(ST(4)); |
31951
|
3
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(5)); |
31952
|
3
|
|
|
|
|
|
error = PDL->SvPDLV(ST(6)); |
31953
|
3
|
|
|
|
|
|
nfound = PDL->SvPDLV(ST(7)); |
31954
|
3
|
50
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(8)) |
31955
|
|
|
|
|
|
|
; |
31956
|
3
|
50
|
|
|
|
|
ctrMethodFlag = (char *)SvPV_nolen(ST(9)) |
31957
|
|
|
|
|
|
|
; |
31958
|
|
|
|
|
|
|
} |
31959
|
0
|
0
|
|
|
|
|
else if (items == 7) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
31960
|
0
|
|
|
|
|
|
nreturn = 3; |
31961
|
0
|
|
|
|
|
|
nclusters = PDL->SvPDLV(ST(0)); |
31962
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(1)); |
31963
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(2)); |
31964
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(3)); |
31965
|
0
|
|
|
|
|
|
npass = PDL->SvPDLV(ST(4)); |
31966
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(5)) |
31967
|
|
|
|
|
|
|
; |
31968
|
0
|
0
|
|
|
|
|
ctrMethodFlag = (char *)SvPV_nolen(ST(6)) |
31969
|
|
|
|
|
|
|
; |
31970
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31971
|
0
|
|
|
|
|
|
clusterids_SV = sv_newmortal(); |
31972
|
0
|
|
|
|
|
|
clusterids = PDL->null(); |
31973
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clusterids_SV,clusterids); |
31974
|
0
|
0
|
|
|
|
|
if (bless_stash) clusterids_SV = sv_bless(clusterids_SV, bless_stash); |
31975
|
|
|
|
|
|
|
} else { |
31976
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31977
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31978
|
0
|
|
|
|
|
|
PUTBACK; |
31979
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31980
|
0
|
|
|
|
|
|
SPAGAIN; |
31981
|
0
|
|
|
|
|
|
clusterids_SV = POPs; |
31982
|
0
|
|
|
|
|
|
PUTBACK; |
31983
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(clusterids_SV); |
31984
|
|
|
|
|
|
|
} |
31985
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
31986
|
0
|
|
|
|
|
|
error_SV = sv_newmortal(); |
31987
|
0
|
|
|
|
|
|
error = PDL->null(); |
31988
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(error_SV,error); |
31989
|
0
|
0
|
|
|
|
|
if (bless_stash) error_SV = sv_bless(error_SV, bless_stash); |
31990
|
|
|
|
|
|
|
} else { |
31991
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
31992
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
31993
|
0
|
|
|
|
|
|
PUTBACK; |
31994
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
31995
|
0
|
|
|
|
|
|
SPAGAIN; |
31996
|
0
|
|
|
|
|
|
error_SV = POPs; |
31997
|
0
|
|
|
|
|
|
PUTBACK; |
31998
|
0
|
|
|
|
|
|
error = PDL->SvPDLV(error_SV); |
31999
|
|
|
|
|
|
|
} |
32000
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32001
|
0
|
|
|
|
|
|
nfound_SV = sv_newmortal(); |
32002
|
0
|
|
|
|
|
|
nfound = PDL->null(); |
32003
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(nfound_SV,nfound); |
32004
|
0
|
0
|
|
|
|
|
if (bless_stash) nfound_SV = sv_bless(nfound_SV, bless_stash); |
32005
|
|
|
|
|
|
|
} else { |
32006
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32007
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32008
|
0
|
|
|
|
|
|
PUTBACK; |
32009
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32010
|
0
|
|
|
|
|
|
SPAGAIN; |
32011
|
0
|
|
|
|
|
|
nfound_SV = POPs; |
32012
|
0
|
|
|
|
|
|
PUTBACK; |
32013
|
0
|
|
|
|
|
|
nfound = PDL->SvPDLV(nfound_SV); |
32014
|
|
|
|
|
|
|
} |
32015
|
|
|
|
|
|
|
} |
32016
|
|
|
|
|
|
|
else { |
32017
|
0
|
|
|
|
|
|
croak ("Usage: PDL::kcluster(nclusters,data,mask,weight,npass,clusterids,error,nfound,distFlag,ctrMethodFlag) (you may leave temporaries or output variables out of list)"); |
32018
|
|
|
|
|
|
|
} |
32019
|
|
|
|
|
|
|
} |
32020
|
|
|
|
|
|
|
{ |
32021
|
|
|
|
|
|
|
} |
32022
|
|
|
|
|
|
|
{ pdl_kcluster_struct *__privtrans; |
32023
|
3
|
|
|
|
|
|
int badflag_cache = 0; |
32024
|
3
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32025
|
3
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32026
|
3
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32027
|
3
|
|
|
|
|
|
__privtrans->flags = 0; |
32028
|
3
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32029
|
3
|
|
|
|
|
|
__privtrans->vtable = &pdl_kcluster_vtable; |
32030
|
3
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32031
|
3
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32032
|
3
|
50
|
|
|
|
|
badflag_cache = ((nclusters->state & PDL_BADVAL) > 0) || ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((npass->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
32033
|
3
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32034
|
3
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32035
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32036
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32037
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32038
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32039
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32040
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32041
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32042
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32043
|
3
|
50
|
|
|
|
|
if(PDL_L != nclusters->datatype) { |
32044
|
3
|
|
|
|
|
|
nclusters = PDL->get_convertedpdl(nclusters,PDL_L); |
32045
|
3
|
50
|
|
|
|
|
}if(PDL_D != data->datatype) { |
32046
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
32047
|
3
|
50
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
32048
|
3
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
32049
|
3
|
50
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
32050
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
32051
|
3
|
50
|
|
|
|
|
}if(PDL_L != npass->datatype) { |
32052
|
3
|
|
|
|
|
|
npass = PDL->get_convertedpdl(npass,PDL_L); |
32053
|
3
|
100
|
|
|
|
|
}if( (clusterids->state & PDL_NOMYDIMS) && clusterids->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
32054
|
2
|
|
|
|
|
|
clusterids->datatype = PDL_L; |
32055
|
1
|
50
|
|
|
|
|
} else if(PDL_L != clusterids->datatype) { |
32056
|
1
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
32057
|
3
|
50
|
|
|
|
|
}if( (error->state & PDL_NOMYDIMS) && error->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
32058
|
3
|
|
|
|
|
|
error->datatype = PDL_D; |
32059
|
0
|
0
|
|
|
|
|
} else if(PDL_D != error->datatype) { |
32060
|
0
|
|
|
|
|
|
error = PDL->get_convertedpdl(error,PDL_D); |
32061
|
3
|
50
|
|
|
|
|
}if( (nfound->state & PDL_NOMYDIMS) && nfound->trans == NULL ) { |
|
|
50
|
|
|
|
|
|
32062
|
3
|
|
|
|
|
|
nfound->datatype = PDL_L; |
32063
|
0
|
0
|
|
|
|
|
} else if(PDL_L != nfound->datatype) { |
32064
|
0
|
|
|
|
|
|
nfound = PDL->get_convertedpdl(nfound,PDL_L); |
32065
|
3
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->ctrMethodFlag) = malloc(strlen(ctrMethodFlag)+1); strcpy(__privtrans->ctrMethodFlag,ctrMethodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = nclusters; |
32066
|
3
|
|
|
|
|
|
__privtrans->pdls[1] = data; |
32067
|
3
|
|
|
|
|
|
__privtrans->pdls[2] = mask; |
32068
|
3
|
|
|
|
|
|
__privtrans->pdls[3] = weight; |
32069
|
3
|
|
|
|
|
|
__privtrans->pdls[4] = npass; |
32070
|
3
|
|
|
|
|
|
__privtrans->pdls[5] = clusterids; |
32071
|
3
|
|
|
|
|
|
__privtrans->pdls[6] = error; |
32072
|
3
|
|
|
|
|
|
__privtrans->pdls[7] = nfound; |
32073
|
3
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32074
|
3
|
50
|
|
|
|
|
if (badflag_cache) { |
32075
|
0
|
|
|
|
|
|
clusterids->state |= PDL_BADVAL; |
32076
|
0
|
|
|
|
|
|
error->state |= PDL_BADVAL; |
32077
|
0
|
|
|
|
|
|
nfound->state |= PDL_BADVAL; |
32078
|
|
|
|
|
|
|
} |
32079
|
3
|
50
|
|
|
|
|
if (nreturn) { |
32080
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32081
|
0
|
|
|
|
|
|
ST(0) = clusterids_SV; |
32082
|
0
|
|
|
|
|
|
ST(1) = error_SV; |
32083
|
0
|
|
|
|
|
|
ST(2) = nfound_SV; |
32084
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32085
|
|
|
|
|
|
|
} else { |
32086
|
3
|
|
|
|
|
|
XSRETURN(0); |
32087
|
|
|
|
|
|
|
} |
32088
|
|
|
|
|
|
|
} |
32089
|
|
|
|
|
|
|
|
32090
|
|
|
|
|
|
|
void |
32091
|
|
|
|
|
|
|
kmedoids(...) |
32092
|
|
|
|
|
|
|
PREINIT: |
32093
|
2
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32094
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32095
|
2
|
|
|
|
|
|
HV *bless_stash = 0; |
32096
|
2
|
|
|
|
|
|
SV *parent = 0; |
32097
|
|
|
|
|
|
|
int nreturn; |
32098
|
|
|
|
|
|
|
SV *clusterids_SV; |
32099
|
|
|
|
|
|
|
SV *error_SV; |
32100
|
|
|
|
|
|
|
SV *nfound_SV; |
32101
|
|
|
|
|
|
|
pdl *nclusters; |
32102
|
|
|
|
|
|
|
pdl *distance; |
32103
|
|
|
|
|
|
|
pdl *npass; |
32104
|
|
|
|
|
|
|
pdl *clusterids; |
32105
|
|
|
|
|
|
|
pdl *error; |
32106
|
|
|
|
|
|
|
pdl *nfound; |
32107
|
|
|
|
|
|
|
PPCODE: |
32108
|
|
|
|
|
|
|
{ |
32109
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32110
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32111
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32112
|
2
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32113
|
0
|
|
|
|
|
|
parent = ST(0); |
32114
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
32115
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32116
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32117
|
|
|
|
|
|
|
} |
32118
|
|
|
|
|
|
|
} |
32119
|
2
|
50
|
|
|
|
|
if (items == 6) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32120
|
2
|
|
|
|
|
|
nreturn = 0; |
32121
|
2
|
|
|
|
|
|
nclusters = PDL->SvPDLV(ST(0)); |
32122
|
2
|
|
|
|
|
|
distance = PDL->SvPDLV(ST(1)); |
32123
|
2
|
|
|
|
|
|
npass = PDL->SvPDLV(ST(2)); |
32124
|
2
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(3)); |
32125
|
2
|
|
|
|
|
|
error = PDL->SvPDLV(ST(4)); |
32126
|
2
|
|
|
|
|
|
nfound = PDL->SvPDLV(ST(5)); |
32127
|
|
|
|
|
|
|
} |
32128
|
0
|
0
|
|
|
|
|
else if (items == 3) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32129
|
0
|
|
|
|
|
|
nreturn = 3; |
32130
|
0
|
|
|
|
|
|
nclusters = PDL->SvPDLV(ST(0)); |
32131
|
0
|
|
|
|
|
|
distance = PDL->SvPDLV(ST(1)); |
32132
|
0
|
|
|
|
|
|
npass = PDL->SvPDLV(ST(2)); |
32133
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32134
|
0
|
|
|
|
|
|
clusterids_SV = sv_newmortal(); |
32135
|
0
|
|
|
|
|
|
clusterids = PDL->null(); |
32136
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clusterids_SV,clusterids); |
32137
|
0
|
0
|
|
|
|
|
if (bless_stash) clusterids_SV = sv_bless(clusterids_SV, bless_stash); |
32138
|
|
|
|
|
|
|
} else { |
32139
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32140
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32141
|
0
|
|
|
|
|
|
PUTBACK; |
32142
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32143
|
0
|
|
|
|
|
|
SPAGAIN; |
32144
|
0
|
|
|
|
|
|
clusterids_SV = POPs; |
32145
|
0
|
|
|
|
|
|
PUTBACK; |
32146
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(clusterids_SV); |
32147
|
|
|
|
|
|
|
} |
32148
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32149
|
0
|
|
|
|
|
|
error_SV = sv_newmortal(); |
32150
|
0
|
|
|
|
|
|
error = PDL->null(); |
32151
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(error_SV,error); |
32152
|
0
|
0
|
|
|
|
|
if (bless_stash) error_SV = sv_bless(error_SV, bless_stash); |
32153
|
|
|
|
|
|
|
} else { |
32154
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32155
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32156
|
0
|
|
|
|
|
|
PUTBACK; |
32157
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32158
|
0
|
|
|
|
|
|
SPAGAIN; |
32159
|
0
|
|
|
|
|
|
error_SV = POPs; |
32160
|
0
|
|
|
|
|
|
PUTBACK; |
32161
|
0
|
|
|
|
|
|
error = PDL->SvPDLV(error_SV); |
32162
|
|
|
|
|
|
|
} |
32163
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32164
|
0
|
|
|
|
|
|
nfound_SV = sv_newmortal(); |
32165
|
0
|
|
|
|
|
|
nfound = PDL->null(); |
32166
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(nfound_SV,nfound); |
32167
|
0
|
0
|
|
|
|
|
if (bless_stash) nfound_SV = sv_bless(nfound_SV, bless_stash); |
32168
|
|
|
|
|
|
|
} else { |
32169
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32170
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32171
|
0
|
|
|
|
|
|
PUTBACK; |
32172
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32173
|
0
|
|
|
|
|
|
SPAGAIN; |
32174
|
0
|
|
|
|
|
|
nfound_SV = POPs; |
32175
|
0
|
|
|
|
|
|
PUTBACK; |
32176
|
0
|
|
|
|
|
|
nfound = PDL->SvPDLV(nfound_SV); |
32177
|
|
|
|
|
|
|
} |
32178
|
|
|
|
|
|
|
} |
32179
|
|
|
|
|
|
|
else { |
32180
|
0
|
|
|
|
|
|
croak ("Usage: PDL::kmedoids(nclusters,distance,npass,clusterids,error,nfound) (you may leave temporaries or output variables out of list)"); |
32181
|
|
|
|
|
|
|
} |
32182
|
|
|
|
|
|
|
} |
32183
|
|
|
|
|
|
|
{ |
32184
|
|
|
|
|
|
|
} |
32185
|
|
|
|
|
|
|
{ pdl_kmedoids_struct *__privtrans; |
32186
|
2
|
|
|
|
|
|
int badflag_cache = 0; |
32187
|
2
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32188
|
2
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32189
|
2
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32190
|
2
|
|
|
|
|
|
__privtrans->flags = 0; |
32191
|
2
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32192
|
2
|
|
|
|
|
|
__privtrans->vtable = &pdl_kmedoids_vtable; |
32193
|
2
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32194
|
2
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32195
|
2
|
50
|
|
|
|
|
badflag_cache = ((nclusters->state & PDL_BADVAL) > 0) || ((distance->state & PDL_BADVAL) > 0) || ((npass->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
32196
|
2
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32197
|
2
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32198
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32199
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32200
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32201
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32202
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32203
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32204
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32205
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32206
|
2
|
50
|
|
|
|
|
if(PDL_L != nclusters->datatype) { |
32207
|
2
|
|
|
|
|
|
nclusters = PDL->get_convertedpdl(nclusters,PDL_L); |
32208
|
2
|
50
|
|
|
|
|
}if(PDL_D != distance->datatype) { |
32209
|
0
|
|
|
|
|
|
distance = PDL->get_convertedpdl(distance,PDL_D); |
32210
|
2
|
50
|
|
|
|
|
}if(PDL_L != npass->datatype) { |
32211
|
2
|
|
|
|
|
|
npass = PDL->get_convertedpdl(npass,PDL_L); |
32212
|
2
|
50
|
|
|
|
|
}if( (clusterids->state & PDL_NOMYDIMS) && clusterids->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32213
|
0
|
|
|
|
|
|
clusterids->datatype = PDL_L; |
32214
|
2
|
50
|
|
|
|
|
} else if(PDL_L != clusterids->datatype) { |
32215
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
32216
|
2
|
50
|
|
|
|
|
}if( (error->state & PDL_NOMYDIMS) && error->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32217
|
0
|
|
|
|
|
|
error->datatype = PDL_D; |
32218
|
2
|
50
|
|
|
|
|
} else if(PDL_D != error->datatype) { |
32219
|
0
|
|
|
|
|
|
error = PDL->get_convertedpdl(error,PDL_D); |
32220
|
2
|
50
|
|
|
|
|
}if( (nfound->state & PDL_NOMYDIMS) && nfound->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32221
|
0
|
|
|
|
|
|
nfound->datatype = PDL_L; |
32222
|
2
|
50
|
|
|
|
|
} else if(PDL_L != nfound->datatype) { |
32223
|
2
|
|
|
|
|
|
nfound = PDL->get_convertedpdl(nfound,PDL_L); |
32224
|
2
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = nclusters; |
32225
|
2
|
|
|
|
|
|
__privtrans->pdls[1] = distance; |
32226
|
2
|
|
|
|
|
|
__privtrans->pdls[2] = npass; |
32227
|
2
|
|
|
|
|
|
__privtrans->pdls[3] = clusterids; |
32228
|
2
|
|
|
|
|
|
__privtrans->pdls[4] = error; |
32229
|
2
|
|
|
|
|
|
__privtrans->pdls[5] = nfound; |
32230
|
2
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32231
|
2
|
50
|
|
|
|
|
if (badflag_cache) { |
32232
|
0
|
|
|
|
|
|
clusterids->state |= PDL_BADVAL; |
32233
|
0
|
|
|
|
|
|
error->state |= PDL_BADVAL; |
32234
|
0
|
|
|
|
|
|
nfound->state |= PDL_BADVAL; |
32235
|
|
|
|
|
|
|
} |
32236
|
2
|
50
|
|
|
|
|
if (nreturn) { |
32237
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32238
|
0
|
|
|
|
|
|
ST(0) = clusterids_SV; |
32239
|
0
|
|
|
|
|
|
ST(1) = error_SV; |
32240
|
0
|
|
|
|
|
|
ST(2) = nfound_SV; |
32241
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32242
|
|
|
|
|
|
|
} else { |
32243
|
2
|
|
|
|
|
|
XSRETURN(0); |
32244
|
|
|
|
|
|
|
} |
32245
|
|
|
|
|
|
|
} |
32246
|
|
|
|
|
|
|
|
32247
|
|
|
|
|
|
|
void |
32248
|
|
|
|
|
|
|
treecluster(...) |
32249
|
|
|
|
|
|
|
PREINIT: |
32250
|
8
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32251
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32252
|
8
|
|
|
|
|
|
HV *bless_stash = 0; |
32253
|
8
|
|
|
|
|
|
SV *parent = 0; |
32254
|
|
|
|
|
|
|
int nreturn; |
32255
|
|
|
|
|
|
|
SV *tree_SV; |
32256
|
|
|
|
|
|
|
SV *lnkdist_SV; |
32257
|
|
|
|
|
|
|
pdl *data; |
32258
|
|
|
|
|
|
|
pdl *mask; |
32259
|
|
|
|
|
|
|
pdl *weight; |
32260
|
|
|
|
|
|
|
pdl *tree; |
32261
|
|
|
|
|
|
|
pdl *lnkdist; |
32262
|
|
|
|
|
|
|
char *distFlag; |
32263
|
|
|
|
|
|
|
char *methodFlag; |
32264
|
|
|
|
|
|
|
PPCODE: |
32265
|
|
|
|
|
|
|
{ |
32266
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32267
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32268
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32269
|
8
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32270
|
8
|
|
|
|
|
|
parent = ST(0); |
32271
|
8
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
32272
|
8
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32273
|
8
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
32274
|
|
|
|
|
|
|
} |
32275
|
|
|
|
|
|
|
} |
32276
|
8
|
50
|
|
|
|
|
if (items == 7) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32277
|
8
|
|
|
|
|
|
nreturn = 0; |
32278
|
8
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32279
|
8
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32280
|
8
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32281
|
8
|
|
|
|
|
|
tree = PDL->SvPDLV(ST(3)); |
32282
|
8
|
|
|
|
|
|
lnkdist = PDL->SvPDLV(ST(4)); |
32283
|
8
|
50
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(5)) |
32284
|
|
|
|
|
|
|
; |
32285
|
8
|
50
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(6)) |
32286
|
|
|
|
|
|
|
; |
32287
|
|
|
|
|
|
|
} |
32288
|
0
|
0
|
|
|
|
|
else if (items == 5) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32289
|
0
|
|
|
|
|
|
nreturn = 2; |
32290
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32291
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32292
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32293
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(3)) |
32294
|
|
|
|
|
|
|
; |
32295
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(4)) |
32296
|
|
|
|
|
|
|
; |
32297
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32298
|
0
|
|
|
|
|
|
tree_SV = sv_newmortal(); |
32299
|
0
|
|
|
|
|
|
tree = PDL->null(); |
32300
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(tree_SV,tree); |
32301
|
0
|
0
|
|
|
|
|
if (bless_stash) tree_SV = sv_bless(tree_SV, bless_stash); |
32302
|
|
|
|
|
|
|
} else { |
32303
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32304
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32305
|
0
|
|
|
|
|
|
PUTBACK; |
32306
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32307
|
0
|
|
|
|
|
|
SPAGAIN; |
32308
|
0
|
|
|
|
|
|
tree_SV = POPs; |
32309
|
0
|
|
|
|
|
|
PUTBACK; |
32310
|
0
|
|
|
|
|
|
tree = PDL->SvPDLV(tree_SV); |
32311
|
|
|
|
|
|
|
} |
32312
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32313
|
0
|
|
|
|
|
|
lnkdist_SV = sv_newmortal(); |
32314
|
0
|
|
|
|
|
|
lnkdist = PDL->null(); |
32315
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(lnkdist_SV,lnkdist); |
32316
|
0
|
0
|
|
|
|
|
if (bless_stash) lnkdist_SV = sv_bless(lnkdist_SV, bless_stash); |
32317
|
|
|
|
|
|
|
} else { |
32318
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32319
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32320
|
0
|
|
|
|
|
|
PUTBACK; |
32321
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32322
|
0
|
|
|
|
|
|
SPAGAIN; |
32323
|
0
|
|
|
|
|
|
lnkdist_SV = POPs; |
32324
|
0
|
|
|
|
|
|
PUTBACK; |
32325
|
0
|
|
|
|
|
|
lnkdist = PDL->SvPDLV(lnkdist_SV); |
32326
|
|
|
|
|
|
|
} |
32327
|
|
|
|
|
|
|
} |
32328
|
|
|
|
|
|
|
else { |
32329
|
0
|
|
|
|
|
|
croak ("Usage: PDL::treecluster(data,mask,weight,tree,lnkdist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
32330
|
|
|
|
|
|
|
} |
32331
|
|
|
|
|
|
|
} |
32332
|
|
|
|
|
|
|
{ |
32333
|
|
|
|
|
|
|
} |
32334
|
|
|
|
|
|
|
{ pdl_treecluster_struct *__privtrans; |
32335
|
8
|
|
|
|
|
|
int badflag_cache = 0; |
32336
|
8
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32337
|
8
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32338
|
8
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32339
|
8
|
|
|
|
|
|
__privtrans->flags = 0; |
32340
|
8
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32341
|
8
|
|
|
|
|
|
__privtrans->vtable = &pdl_treecluster_vtable; |
32342
|
8
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32343
|
8
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32344
|
8
|
50
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
32345
|
8
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32346
|
8
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32347
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32348
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32349
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32350
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32351
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32352
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32353
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32354
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32355
|
8
|
50
|
|
|
|
|
if(PDL_D != data->datatype) { |
32356
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
32357
|
8
|
50
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
32358
|
8
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
32359
|
8
|
50
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
32360
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
32361
|
8
|
50
|
|
|
|
|
}if( (tree->state & PDL_NOMYDIMS) && tree->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32362
|
0
|
|
|
|
|
|
tree->datatype = PDL_L; |
32363
|
8
|
50
|
|
|
|
|
} else if(PDL_L != tree->datatype) { |
32364
|
0
|
|
|
|
|
|
tree = PDL->get_convertedpdl(tree,PDL_L); |
32365
|
8
|
50
|
|
|
|
|
}if( (lnkdist->state & PDL_NOMYDIMS) && lnkdist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32366
|
0
|
|
|
|
|
|
lnkdist->datatype = PDL_D; |
32367
|
8
|
50
|
|
|
|
|
} else if(PDL_D != lnkdist->datatype) { |
32368
|
0
|
|
|
|
|
|
lnkdist = PDL->get_convertedpdl(lnkdist,PDL_D); |
32369
|
8
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
32370
|
8
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
32371
|
8
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
32372
|
8
|
|
|
|
|
|
__privtrans->pdls[3] = tree; |
32373
|
8
|
|
|
|
|
|
__privtrans->pdls[4] = lnkdist; |
32374
|
8
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32375
|
8
|
50
|
|
|
|
|
if (badflag_cache) { |
32376
|
0
|
|
|
|
|
|
tree->state |= PDL_BADVAL; |
32377
|
0
|
|
|
|
|
|
lnkdist->state |= PDL_BADVAL; |
32378
|
|
|
|
|
|
|
} |
32379
|
8
|
50
|
|
|
|
|
if (nreturn) { |
32380
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32381
|
0
|
|
|
|
|
|
ST(0) = tree_SV; |
32382
|
0
|
|
|
|
|
|
ST(1) = lnkdist_SV; |
32383
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32384
|
|
|
|
|
|
|
} else { |
32385
|
8
|
|
|
|
|
|
XSRETURN(0); |
32386
|
|
|
|
|
|
|
} |
32387
|
|
|
|
|
|
|
} |
32388
|
|
|
|
|
|
|
|
32389
|
|
|
|
|
|
|
void |
32390
|
|
|
|
|
|
|
treeclusterd(...) |
32391
|
|
|
|
|
|
|
PREINIT: |
32392
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32393
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32394
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
32395
|
0
|
|
|
|
|
|
SV *parent = 0; |
32396
|
|
|
|
|
|
|
int nreturn; |
32397
|
|
|
|
|
|
|
SV *tree_SV; |
32398
|
|
|
|
|
|
|
SV *lnkdist_SV; |
32399
|
|
|
|
|
|
|
pdl *data; |
32400
|
|
|
|
|
|
|
pdl *mask; |
32401
|
|
|
|
|
|
|
pdl *weight; |
32402
|
|
|
|
|
|
|
pdl *distances; |
32403
|
|
|
|
|
|
|
pdl *tree; |
32404
|
|
|
|
|
|
|
pdl *lnkdist; |
32405
|
|
|
|
|
|
|
char *distFlag; |
32406
|
|
|
|
|
|
|
char *methodFlag; |
32407
|
|
|
|
|
|
|
PPCODE: |
32408
|
|
|
|
|
|
|
{ |
32409
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32410
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32411
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32412
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32413
|
0
|
|
|
|
|
|
parent = ST(0); |
32414
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
32415
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32416
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32417
|
|
|
|
|
|
|
} |
32418
|
|
|
|
|
|
|
} |
32419
|
0
|
0
|
|
|
|
|
if (items == 8) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32420
|
0
|
|
|
|
|
|
nreturn = 0; |
32421
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32422
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32423
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32424
|
0
|
|
|
|
|
|
distances = PDL->SvPDLV(ST(3)); |
32425
|
0
|
|
|
|
|
|
tree = PDL->SvPDLV(ST(4)); |
32426
|
0
|
|
|
|
|
|
lnkdist = PDL->SvPDLV(ST(5)); |
32427
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(6)) |
32428
|
|
|
|
|
|
|
; |
32429
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(7)) |
32430
|
|
|
|
|
|
|
; |
32431
|
|
|
|
|
|
|
} |
32432
|
0
|
0
|
|
|
|
|
else if (items == 6) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32433
|
0
|
|
|
|
|
|
nreturn = 2; |
32434
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32435
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32436
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32437
|
0
|
|
|
|
|
|
distances = PDL->SvPDLV(ST(3)); |
32438
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(4)) |
32439
|
|
|
|
|
|
|
; |
32440
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(5)) |
32441
|
|
|
|
|
|
|
; |
32442
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32443
|
0
|
|
|
|
|
|
tree_SV = sv_newmortal(); |
32444
|
0
|
|
|
|
|
|
tree = PDL->null(); |
32445
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(tree_SV,tree); |
32446
|
0
|
0
|
|
|
|
|
if (bless_stash) tree_SV = sv_bless(tree_SV, bless_stash); |
32447
|
|
|
|
|
|
|
} else { |
32448
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32449
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32450
|
0
|
|
|
|
|
|
PUTBACK; |
32451
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32452
|
0
|
|
|
|
|
|
SPAGAIN; |
32453
|
0
|
|
|
|
|
|
tree_SV = POPs; |
32454
|
0
|
|
|
|
|
|
PUTBACK; |
32455
|
0
|
|
|
|
|
|
tree = PDL->SvPDLV(tree_SV); |
32456
|
|
|
|
|
|
|
} |
32457
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32458
|
0
|
|
|
|
|
|
lnkdist_SV = sv_newmortal(); |
32459
|
0
|
|
|
|
|
|
lnkdist = PDL->null(); |
32460
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(lnkdist_SV,lnkdist); |
32461
|
0
|
0
|
|
|
|
|
if (bless_stash) lnkdist_SV = sv_bless(lnkdist_SV, bless_stash); |
32462
|
|
|
|
|
|
|
} else { |
32463
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32464
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32465
|
0
|
|
|
|
|
|
PUTBACK; |
32466
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32467
|
0
|
|
|
|
|
|
SPAGAIN; |
32468
|
0
|
|
|
|
|
|
lnkdist_SV = POPs; |
32469
|
0
|
|
|
|
|
|
PUTBACK; |
32470
|
0
|
|
|
|
|
|
lnkdist = PDL->SvPDLV(lnkdist_SV); |
32471
|
|
|
|
|
|
|
} |
32472
|
|
|
|
|
|
|
} |
32473
|
|
|
|
|
|
|
else { |
32474
|
0
|
|
|
|
|
|
croak ("Usage: PDL::treeclusterd(data,mask,weight,distances,tree,lnkdist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
32475
|
|
|
|
|
|
|
} |
32476
|
|
|
|
|
|
|
} |
32477
|
|
|
|
|
|
|
{ |
32478
|
|
|
|
|
|
|
} |
32479
|
|
|
|
|
|
|
{ pdl_treeclusterd_struct *__privtrans; |
32480
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
32481
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32482
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32483
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32484
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
32485
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32486
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_treeclusterd_vtable; |
32487
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32488
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32489
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((distances->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32490
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32491
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32492
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32493
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32494
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32495
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32496
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32497
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32498
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32499
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32500
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
32501
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
32502
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
32503
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
32504
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
32505
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
32506
|
0
|
0
|
|
|
|
|
}if(PDL_D != distances->datatype) { |
32507
|
0
|
|
|
|
|
|
distances = PDL->get_convertedpdl(distances,PDL_D); |
32508
|
0
|
0
|
|
|
|
|
}if( (tree->state & PDL_NOMYDIMS) && tree->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32509
|
0
|
|
|
|
|
|
tree->datatype = PDL_L; |
32510
|
0
|
0
|
|
|
|
|
} else if(PDL_L != tree->datatype) { |
32511
|
0
|
|
|
|
|
|
tree = PDL->get_convertedpdl(tree,PDL_L); |
32512
|
0
|
0
|
|
|
|
|
}if( (lnkdist->state & PDL_NOMYDIMS) && lnkdist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32513
|
0
|
|
|
|
|
|
lnkdist->datatype = PDL_D; |
32514
|
0
|
0
|
|
|
|
|
} else if(PDL_D != lnkdist->datatype) { |
32515
|
0
|
|
|
|
|
|
lnkdist = PDL->get_convertedpdl(lnkdist,PDL_D); |
32516
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
32517
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
32518
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
32519
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = distances; |
32520
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = tree; |
32521
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = lnkdist; |
32522
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32523
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
32524
|
0
|
|
|
|
|
|
tree->state |= PDL_BADVAL; |
32525
|
0
|
|
|
|
|
|
lnkdist->state |= PDL_BADVAL; |
32526
|
|
|
|
|
|
|
} |
32527
|
0
|
0
|
|
|
|
|
if (nreturn) { |
32528
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32529
|
0
|
|
|
|
|
|
ST(0) = tree_SV; |
32530
|
0
|
|
|
|
|
|
ST(1) = lnkdist_SV; |
32531
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32532
|
|
|
|
|
|
|
} else { |
32533
|
0
|
|
|
|
|
|
XSRETURN(0); |
32534
|
|
|
|
|
|
|
} |
32535
|
|
|
|
|
|
|
} |
32536
|
|
|
|
|
|
|
|
32537
|
|
|
|
|
|
|
void |
32538
|
|
|
|
|
|
|
cuttree(...) |
32539
|
|
|
|
|
|
|
PREINIT: |
32540
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32541
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32542
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
32543
|
0
|
|
|
|
|
|
SV *parent = 0; |
32544
|
|
|
|
|
|
|
int nreturn; |
32545
|
|
|
|
|
|
|
SV *clusterids_SV; |
32546
|
|
|
|
|
|
|
pdl *tree; |
32547
|
|
|
|
|
|
|
pdl *nclusters; |
32548
|
|
|
|
|
|
|
pdl *clusterids; |
32549
|
|
|
|
|
|
|
PPCODE: |
32550
|
|
|
|
|
|
|
{ |
32551
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32552
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32553
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32554
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32555
|
0
|
|
|
|
|
|
parent = ST(0); |
32556
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
32557
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32558
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32559
|
|
|
|
|
|
|
} |
32560
|
|
|
|
|
|
|
} |
32561
|
0
|
0
|
|
|
|
|
if (items == 3) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32562
|
0
|
|
|
|
|
|
nreturn = 0; |
32563
|
0
|
|
|
|
|
|
tree = PDL->SvPDLV(ST(0)); |
32564
|
0
|
|
|
|
|
|
nclusters = PDL->SvPDLV(ST(1)); |
32565
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(2)); |
32566
|
|
|
|
|
|
|
} |
32567
|
0
|
0
|
|
|
|
|
else if (items == 2) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32568
|
0
|
|
|
|
|
|
nreturn = 1; |
32569
|
0
|
|
|
|
|
|
tree = PDL->SvPDLV(ST(0)); |
32570
|
0
|
|
|
|
|
|
nclusters = PDL->SvPDLV(ST(1)); |
32571
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32572
|
0
|
|
|
|
|
|
clusterids_SV = sv_newmortal(); |
32573
|
0
|
|
|
|
|
|
clusterids = PDL->null(); |
32574
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clusterids_SV,clusterids); |
32575
|
0
|
0
|
|
|
|
|
if (bless_stash) clusterids_SV = sv_bless(clusterids_SV, bless_stash); |
32576
|
|
|
|
|
|
|
} else { |
32577
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32578
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32579
|
0
|
|
|
|
|
|
PUTBACK; |
32580
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32581
|
0
|
|
|
|
|
|
SPAGAIN; |
32582
|
0
|
|
|
|
|
|
clusterids_SV = POPs; |
32583
|
0
|
|
|
|
|
|
PUTBACK; |
32584
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(clusterids_SV); |
32585
|
|
|
|
|
|
|
} |
32586
|
|
|
|
|
|
|
} |
32587
|
|
|
|
|
|
|
else { |
32588
|
0
|
|
|
|
|
|
croak ("Usage: PDL::cuttree(tree,nclusters,clusterids) (you may leave temporaries or output variables out of list)"); |
32589
|
|
|
|
|
|
|
} |
32590
|
|
|
|
|
|
|
} |
32591
|
|
|
|
|
|
|
{ |
32592
|
|
|
|
|
|
|
} |
32593
|
|
|
|
|
|
|
{ pdl_cuttree_struct *__privtrans; |
32594
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
32595
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32596
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32597
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32598
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
32599
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32600
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_cuttree_vtable; |
32601
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32602
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32603
|
0
|
0
|
|
|
|
|
badflag_cache = ((tree->state & PDL_BADVAL) > 0) || ((nclusters->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
32604
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32605
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32606
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32607
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32608
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32609
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32610
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32611
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32612
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32613
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32614
|
0
|
0
|
|
|
|
|
if(PDL_L != tree->datatype) { |
32615
|
0
|
|
|
|
|
|
tree = PDL->get_convertedpdl(tree,PDL_L); |
32616
|
0
|
0
|
|
|
|
|
}if(PDL_L != nclusters->datatype) { |
32617
|
0
|
|
|
|
|
|
nclusters = PDL->get_convertedpdl(nclusters,PDL_L); |
32618
|
0
|
0
|
|
|
|
|
}if( (clusterids->state & PDL_NOMYDIMS) && clusterids->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32619
|
0
|
|
|
|
|
|
clusterids->datatype = PDL_L; |
32620
|
0
|
0
|
|
|
|
|
} else if(PDL_L != clusterids->datatype) { |
32621
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
32622
|
0
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = tree; |
32623
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = nclusters; |
32624
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = clusterids; |
32625
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32626
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
32627
|
0
|
|
|
|
|
|
clusterids->state |= PDL_BADVAL; |
32628
|
|
|
|
|
|
|
} |
32629
|
0
|
0
|
|
|
|
|
if (nreturn) { |
32630
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32631
|
0
|
|
|
|
|
|
ST(0) = clusterids_SV; |
32632
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32633
|
|
|
|
|
|
|
} else { |
32634
|
0
|
|
|
|
|
|
XSRETURN(0); |
32635
|
|
|
|
|
|
|
} |
32636
|
|
|
|
|
|
|
} |
32637
|
|
|
|
|
|
|
|
32638
|
|
|
|
|
|
|
void |
32639
|
|
|
|
|
|
|
somcluster(...) |
32640
|
|
|
|
|
|
|
PREINIT: |
32641
|
2
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32642
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32643
|
2
|
|
|
|
|
|
HV *bless_stash = 0; |
32644
|
2
|
|
|
|
|
|
SV *parent = 0; |
32645
|
|
|
|
|
|
|
int nreturn; |
32646
|
|
|
|
|
|
|
SV *clusterids_SV; |
32647
|
|
|
|
|
|
|
pdl *data; |
32648
|
|
|
|
|
|
|
pdl *mask; |
32649
|
|
|
|
|
|
|
pdl *weight; |
32650
|
|
|
|
|
|
|
pdl *nxnodes; |
32651
|
|
|
|
|
|
|
pdl *nynodes; |
32652
|
|
|
|
|
|
|
pdl *inittau; |
32653
|
|
|
|
|
|
|
pdl *niter; |
32654
|
|
|
|
|
|
|
pdl *clusterids; |
32655
|
|
|
|
|
|
|
char *distFlag; |
32656
|
|
|
|
|
|
|
PPCODE: |
32657
|
|
|
|
|
|
|
{ |
32658
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32659
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32660
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32661
|
2
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32662
|
2
|
|
|
|
|
|
parent = ST(0); |
32663
|
2
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
32664
|
2
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32665
|
2
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
32666
|
|
|
|
|
|
|
} |
32667
|
|
|
|
|
|
|
} |
32668
|
2
|
50
|
|
|
|
|
if (items == 9) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32669
|
2
|
|
|
|
|
|
nreturn = 0; |
32670
|
2
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32671
|
2
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32672
|
2
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32673
|
2
|
|
|
|
|
|
nxnodes = PDL->SvPDLV(ST(3)); |
32674
|
2
|
|
|
|
|
|
nynodes = PDL->SvPDLV(ST(4)); |
32675
|
2
|
|
|
|
|
|
inittau = PDL->SvPDLV(ST(5)); |
32676
|
2
|
|
|
|
|
|
niter = PDL->SvPDLV(ST(6)); |
32677
|
2
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(7)); |
32678
|
2
|
50
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(8)) |
32679
|
|
|
|
|
|
|
; |
32680
|
|
|
|
|
|
|
} |
32681
|
0
|
0
|
|
|
|
|
else if (items == 8) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32682
|
0
|
|
|
|
|
|
nreturn = 1; |
32683
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32684
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32685
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32686
|
0
|
|
|
|
|
|
nxnodes = PDL->SvPDLV(ST(3)); |
32687
|
0
|
|
|
|
|
|
nynodes = PDL->SvPDLV(ST(4)); |
32688
|
0
|
|
|
|
|
|
inittau = PDL->SvPDLV(ST(5)); |
32689
|
0
|
|
|
|
|
|
niter = PDL->SvPDLV(ST(6)); |
32690
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(7)) |
32691
|
|
|
|
|
|
|
; |
32692
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32693
|
0
|
|
|
|
|
|
clusterids_SV = sv_newmortal(); |
32694
|
0
|
|
|
|
|
|
clusterids = PDL->null(); |
32695
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clusterids_SV,clusterids); |
32696
|
0
|
0
|
|
|
|
|
if (bless_stash) clusterids_SV = sv_bless(clusterids_SV, bless_stash); |
32697
|
|
|
|
|
|
|
} else { |
32698
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32699
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32700
|
0
|
|
|
|
|
|
PUTBACK; |
32701
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32702
|
0
|
|
|
|
|
|
SPAGAIN; |
32703
|
0
|
|
|
|
|
|
clusterids_SV = POPs; |
32704
|
0
|
|
|
|
|
|
PUTBACK; |
32705
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(clusterids_SV); |
32706
|
|
|
|
|
|
|
} |
32707
|
|
|
|
|
|
|
} |
32708
|
|
|
|
|
|
|
else { |
32709
|
0
|
|
|
|
|
|
croak ("Usage: PDL::somcluster(data,mask,weight,nxnodes,nynodes,inittau,niter,clusterids,distFlag) (you may leave temporaries or output variables out of list)"); |
32710
|
|
|
|
|
|
|
} |
32711
|
|
|
|
|
|
|
} |
32712
|
|
|
|
|
|
|
{ |
32713
|
|
|
|
|
|
|
} |
32714
|
|
|
|
|
|
|
{ pdl_somcluster_struct *__privtrans; |
32715
|
2
|
|
|
|
|
|
int badflag_cache = 0; |
32716
|
2
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32717
|
2
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32718
|
2
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32719
|
2
|
|
|
|
|
|
__privtrans->flags = 0; |
32720
|
2
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32721
|
2
|
|
|
|
|
|
__privtrans->vtable = &pdl_somcluster_vtable; |
32722
|
2
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32723
|
2
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32724
|
2
|
50
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((nxnodes->state & PDL_BADVAL) > 0) || ((nynodes->state & PDL_BADVAL) > 0) || ((inittau->state & PDL_BADVAL) > 0) || ((niter->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
32725
|
2
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32726
|
2
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32727
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32728
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32729
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32730
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32731
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32732
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32733
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32734
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32735
|
2
|
50
|
|
|
|
|
if(PDL_D != data->datatype) { |
32736
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
32737
|
2
|
50
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
32738
|
2
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
32739
|
2
|
50
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
32740
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
32741
|
2
|
50
|
|
|
|
|
}if(PDL_L != nxnodes->datatype) { |
32742
|
2
|
|
|
|
|
|
nxnodes = PDL->get_convertedpdl(nxnodes,PDL_L); |
32743
|
2
|
50
|
|
|
|
|
}if(PDL_L != nynodes->datatype) { |
32744
|
2
|
|
|
|
|
|
nynodes = PDL->get_convertedpdl(nynodes,PDL_L); |
32745
|
2
|
50
|
|
|
|
|
}if(PDL_D != inittau->datatype) { |
32746
|
0
|
|
|
|
|
|
inittau = PDL->get_convertedpdl(inittau,PDL_D); |
32747
|
2
|
50
|
|
|
|
|
}if(PDL_L != niter->datatype) { |
32748
|
2
|
|
|
|
|
|
niter = PDL->get_convertedpdl(niter,PDL_L); |
32749
|
2
|
50
|
|
|
|
|
}if( (clusterids->state & PDL_NOMYDIMS) && clusterids->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32750
|
0
|
|
|
|
|
|
clusterids->datatype = PDL_L; |
32751
|
2
|
50
|
|
|
|
|
} else if(PDL_L != clusterids->datatype) { |
32752
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
32753
|
2
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
32754
|
2
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
32755
|
2
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
32756
|
2
|
|
|
|
|
|
__privtrans->pdls[3] = nxnodes; |
32757
|
2
|
|
|
|
|
|
__privtrans->pdls[4] = nynodes; |
32758
|
2
|
|
|
|
|
|
__privtrans->pdls[5] = inittau; |
32759
|
2
|
|
|
|
|
|
__privtrans->pdls[6] = niter; |
32760
|
2
|
|
|
|
|
|
__privtrans->pdls[7] = clusterids; |
32761
|
2
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32762
|
2
|
50
|
|
|
|
|
if (badflag_cache) { |
32763
|
0
|
|
|
|
|
|
clusterids->state |= PDL_BADVAL; |
32764
|
|
|
|
|
|
|
} |
32765
|
2
|
50
|
|
|
|
|
if (nreturn) { |
32766
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32767
|
0
|
|
|
|
|
|
ST(0) = clusterids_SV; |
32768
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32769
|
|
|
|
|
|
|
} else { |
32770
|
2
|
|
|
|
|
|
XSRETURN(0); |
32771
|
|
|
|
|
|
|
} |
32772
|
|
|
|
|
|
|
} |
32773
|
|
|
|
|
|
|
|
32774
|
|
|
|
|
|
|
void |
32775
|
|
|
|
|
|
|
pca(...) |
32776
|
|
|
|
|
|
|
PREINIT: |
32777
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32778
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32779
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
32780
|
0
|
|
|
|
|
|
SV *parent = 0; |
32781
|
|
|
|
|
|
|
int nreturn; |
32782
|
|
|
|
|
|
|
SV *U_SV; |
32783
|
|
|
|
|
|
|
SV *S_SV; |
32784
|
|
|
|
|
|
|
SV *V_SV; |
32785
|
|
|
|
|
|
|
pdl *U; |
32786
|
|
|
|
|
|
|
pdl *S; |
32787
|
|
|
|
|
|
|
pdl *V; |
32788
|
|
|
|
|
|
|
PPCODE: |
32789
|
|
|
|
|
|
|
{ |
32790
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32791
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32792
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32793
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32794
|
0
|
|
|
|
|
|
parent = ST(0); |
32795
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
32796
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32797
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32798
|
|
|
|
|
|
|
} |
32799
|
|
|
|
|
|
|
} |
32800
|
0
|
0
|
|
|
|
|
if (items == 3) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32801
|
0
|
|
|
|
|
|
nreturn = 0; |
32802
|
0
|
|
|
|
|
|
U = PDL->SvPDLV(ST(0)); |
32803
|
0
|
|
|
|
|
|
S = PDL->SvPDLV(ST(1)); |
32804
|
0
|
|
|
|
|
|
V = PDL->SvPDLV(ST(2)); |
32805
|
|
|
|
|
|
|
} |
32806
|
0
|
0
|
|
|
|
|
else if (items == 0) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32807
|
0
|
|
|
|
|
|
nreturn = 3; |
32808
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32809
|
0
|
|
|
|
|
|
U_SV = sv_newmortal(); |
32810
|
0
|
|
|
|
|
|
U = PDL->null(); |
32811
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(U_SV,U); |
32812
|
0
|
0
|
|
|
|
|
if (bless_stash) U_SV = sv_bless(U_SV, bless_stash); |
32813
|
|
|
|
|
|
|
} else { |
32814
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32815
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32816
|
0
|
|
|
|
|
|
PUTBACK; |
32817
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32818
|
0
|
|
|
|
|
|
SPAGAIN; |
32819
|
0
|
|
|
|
|
|
U_SV = POPs; |
32820
|
0
|
|
|
|
|
|
PUTBACK; |
32821
|
0
|
|
|
|
|
|
U = PDL->SvPDLV(U_SV); |
32822
|
|
|
|
|
|
|
} |
32823
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32824
|
0
|
|
|
|
|
|
S_SV = sv_newmortal(); |
32825
|
0
|
|
|
|
|
|
S = PDL->null(); |
32826
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(S_SV,S); |
32827
|
0
|
0
|
|
|
|
|
if (bless_stash) S_SV = sv_bless(S_SV, bless_stash); |
32828
|
|
|
|
|
|
|
} else { |
32829
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32830
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32831
|
0
|
|
|
|
|
|
PUTBACK; |
32832
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32833
|
0
|
|
|
|
|
|
SPAGAIN; |
32834
|
0
|
|
|
|
|
|
S_SV = POPs; |
32835
|
0
|
|
|
|
|
|
PUTBACK; |
32836
|
0
|
|
|
|
|
|
S = PDL->SvPDLV(S_SV); |
32837
|
|
|
|
|
|
|
} |
32838
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32839
|
0
|
|
|
|
|
|
V_SV = sv_newmortal(); |
32840
|
0
|
|
|
|
|
|
V = PDL->null(); |
32841
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(V_SV,V); |
32842
|
0
|
0
|
|
|
|
|
if (bless_stash) V_SV = sv_bless(V_SV, bless_stash); |
32843
|
|
|
|
|
|
|
} else { |
32844
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32845
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32846
|
0
|
|
|
|
|
|
PUTBACK; |
32847
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32848
|
0
|
|
|
|
|
|
SPAGAIN; |
32849
|
0
|
|
|
|
|
|
V_SV = POPs; |
32850
|
0
|
|
|
|
|
|
PUTBACK; |
32851
|
0
|
|
|
|
|
|
V = PDL->SvPDLV(V_SV); |
32852
|
|
|
|
|
|
|
} |
32853
|
|
|
|
|
|
|
} |
32854
|
|
|
|
|
|
|
else { |
32855
|
0
|
|
|
|
|
|
croak ("Usage: PDL::pca(U,S,V) (you may leave temporaries or output variables out of list)"); |
32856
|
|
|
|
|
|
|
} |
32857
|
|
|
|
|
|
|
} |
32858
|
|
|
|
|
|
|
{ |
32859
|
|
|
|
|
|
|
} |
32860
|
|
|
|
|
|
|
{ pdl_pca_struct *__privtrans; |
32861
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
32862
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32863
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32864
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32865
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
32866
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32867
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_pca_vtable; |
32868
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32869
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32870
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32871
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32872
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32873
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32874
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32875
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32876
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
32877
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
32878
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
32879
|
0
|
0
|
|
|
|
|
if( (U->state & PDL_NOMYDIMS) && U->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32880
|
0
|
|
|
|
|
|
U->datatype = PDL_D; |
32881
|
0
|
0
|
|
|
|
|
} else if(PDL_D != U->datatype) { |
32882
|
0
|
|
|
|
|
|
U = PDL->get_convertedpdl(U,PDL_D); |
32883
|
0
|
0
|
|
|
|
|
}if( (S->state & PDL_NOMYDIMS) && S->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32884
|
0
|
|
|
|
|
|
S->datatype = PDL_D; |
32885
|
0
|
0
|
|
|
|
|
} else if(PDL_D != S->datatype) { |
32886
|
0
|
|
|
|
|
|
S = PDL->get_convertedpdl(S,PDL_D); |
32887
|
0
|
0
|
|
|
|
|
}if( (V->state & PDL_NOMYDIMS) && V->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
32888
|
0
|
|
|
|
|
|
V->datatype = PDL_D; |
32889
|
0
|
0
|
|
|
|
|
} else if(PDL_D != V->datatype) { |
32890
|
0
|
|
|
|
|
|
V = PDL->get_convertedpdl(V,PDL_D); |
32891
|
0
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = U; |
32892
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = S; |
32893
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = V; |
32894
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
32895
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
32896
|
0
|
|
|
|
|
|
U->state |= PDL_BADVAL; |
32897
|
0
|
|
|
|
|
|
S->state |= PDL_BADVAL; |
32898
|
0
|
|
|
|
|
|
V->state |= PDL_BADVAL; |
32899
|
|
|
|
|
|
|
} |
32900
|
0
|
0
|
|
|
|
|
if (nreturn) { |
32901
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32902
|
0
|
|
|
|
|
|
ST(0) = U_SV; |
32903
|
0
|
|
|
|
|
|
ST(1) = S_SV; |
32904
|
0
|
|
|
|
|
|
ST(2) = V_SV; |
32905
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
32906
|
|
|
|
|
|
|
} else { |
32907
|
0
|
|
|
|
|
|
XSRETURN(0); |
32908
|
|
|
|
|
|
|
} |
32909
|
|
|
|
|
|
|
} |
32910
|
|
|
|
|
|
|
|
32911
|
|
|
|
|
|
|
void |
32912
|
|
|
|
|
|
|
rowdistances(...) |
32913
|
|
|
|
|
|
|
PREINIT: |
32914
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
32915
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
32916
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
32917
|
0
|
|
|
|
|
|
SV *parent = 0; |
32918
|
|
|
|
|
|
|
int nreturn; |
32919
|
|
|
|
|
|
|
SV *dist_SV; |
32920
|
|
|
|
|
|
|
pdl *data; |
32921
|
|
|
|
|
|
|
pdl *mask; |
32922
|
|
|
|
|
|
|
pdl *weight; |
32923
|
|
|
|
|
|
|
pdl *rowids1; |
32924
|
|
|
|
|
|
|
pdl *rowids2; |
32925
|
|
|
|
|
|
|
pdl *dist; |
32926
|
|
|
|
|
|
|
char *distFlag; |
32927
|
|
|
|
|
|
|
PPCODE: |
32928
|
|
|
|
|
|
|
{ |
32929
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
32930
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
32931
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
32932
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32933
|
0
|
|
|
|
|
|
parent = ST(0); |
32934
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
32935
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
32936
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32937
|
|
|
|
|
|
|
} |
32938
|
|
|
|
|
|
|
} |
32939
|
0
|
0
|
|
|
|
|
if (items == 7) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
32940
|
0
|
|
|
|
|
|
nreturn = 0; |
32941
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32942
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32943
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32944
|
0
|
|
|
|
|
|
rowids1 = PDL->SvPDLV(ST(3)); |
32945
|
0
|
|
|
|
|
|
rowids2 = PDL->SvPDLV(ST(4)); |
32946
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(ST(5)); |
32947
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(6)) |
32948
|
|
|
|
|
|
|
; |
32949
|
|
|
|
|
|
|
} |
32950
|
0
|
0
|
|
|
|
|
else if (items == 6) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
32951
|
0
|
|
|
|
|
|
nreturn = 1; |
32952
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
32953
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
32954
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
32955
|
0
|
|
|
|
|
|
rowids1 = PDL->SvPDLV(ST(3)); |
32956
|
0
|
|
|
|
|
|
rowids2 = PDL->SvPDLV(ST(4)); |
32957
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(5)) |
32958
|
|
|
|
|
|
|
; |
32959
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
32960
|
0
|
|
|
|
|
|
dist_SV = sv_newmortal(); |
32961
|
0
|
|
|
|
|
|
dist = PDL->null(); |
32962
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dist_SV,dist); |
32963
|
0
|
0
|
|
|
|
|
if (bless_stash) dist_SV = sv_bless(dist_SV, bless_stash); |
32964
|
|
|
|
|
|
|
} else { |
32965
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
32966
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
32967
|
0
|
|
|
|
|
|
PUTBACK; |
32968
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
32969
|
0
|
|
|
|
|
|
SPAGAIN; |
32970
|
0
|
|
|
|
|
|
dist_SV = POPs; |
32971
|
0
|
|
|
|
|
|
PUTBACK; |
32972
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(dist_SV); |
32973
|
|
|
|
|
|
|
} |
32974
|
|
|
|
|
|
|
} |
32975
|
|
|
|
|
|
|
else { |
32976
|
0
|
|
|
|
|
|
croak ("Usage: PDL::rowdistances(data,mask,weight,rowids1,rowids2,dist,distFlag) (you may leave temporaries or output variables out of list)"); |
32977
|
|
|
|
|
|
|
} |
32978
|
|
|
|
|
|
|
} |
32979
|
|
|
|
|
|
|
{ |
32980
|
|
|
|
|
|
|
} |
32981
|
|
|
|
|
|
|
{ pdl_rowdistances_struct *__privtrans; |
32982
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
32983
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
32984
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
32985
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
32986
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
32987
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
32988
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_rowdistances_vtable; |
32989
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
32990
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
32991
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((rowids1->state & PDL_BADVAL) > 0) || ((rowids2->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
32992
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
32993
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
32994
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
32995
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
32996
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
32997
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
32998
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
32999
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33000
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33001
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33002
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
33003
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
33004
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
33005
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
33006
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
33007
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
33008
|
0
|
0
|
|
|
|
|
}if(PDL_L != rowids1->datatype) { |
33009
|
0
|
|
|
|
|
|
rowids1 = PDL->get_convertedpdl(rowids1,PDL_L); |
33010
|
0
|
0
|
|
|
|
|
}if(PDL_L != rowids2->datatype) { |
33011
|
0
|
|
|
|
|
|
rowids2 = PDL->get_convertedpdl(rowids2,PDL_L); |
33012
|
0
|
0
|
|
|
|
|
}if( (dist->state & PDL_NOMYDIMS) && dist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33013
|
0
|
|
|
|
|
|
dist->datatype = PDL_D; |
33014
|
0
|
0
|
|
|
|
|
} else if(PDL_D != dist->datatype) { |
33015
|
0
|
|
|
|
|
|
dist = PDL->get_convertedpdl(dist,PDL_D); |
33016
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
33017
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
33018
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
33019
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = rowids1; |
33020
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = rowids2; |
33021
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = dist; |
33022
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33023
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
33024
|
0
|
|
|
|
|
|
dist->state |= PDL_BADVAL; |
33025
|
|
|
|
|
|
|
} |
33026
|
0
|
0
|
|
|
|
|
if (nreturn) { |
33027
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33028
|
0
|
|
|
|
|
|
ST(0) = dist_SV; |
33029
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33030
|
|
|
|
|
|
|
} else { |
33031
|
0
|
|
|
|
|
|
XSRETURN(0); |
33032
|
|
|
|
|
|
|
} |
33033
|
|
|
|
|
|
|
} |
33034
|
|
|
|
|
|
|
|
33035
|
|
|
|
|
|
|
void |
33036
|
|
|
|
|
|
|
clusterdistances(...) |
33037
|
|
|
|
|
|
|
PREINIT: |
33038
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33039
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33040
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
33041
|
0
|
|
|
|
|
|
SV *parent = 0; |
33042
|
|
|
|
|
|
|
int nreturn; |
33043
|
|
|
|
|
|
|
SV *dist_SV; |
33044
|
|
|
|
|
|
|
pdl *data; |
33045
|
|
|
|
|
|
|
pdl *mask; |
33046
|
|
|
|
|
|
|
pdl *weight; |
33047
|
|
|
|
|
|
|
pdl *rowids; |
33048
|
|
|
|
|
|
|
pdl *index2; |
33049
|
|
|
|
|
|
|
pdl *dist; |
33050
|
|
|
|
|
|
|
char *distFlag; |
33051
|
|
|
|
|
|
|
char *methodFlag; |
33052
|
|
|
|
|
|
|
PPCODE: |
33053
|
|
|
|
|
|
|
{ |
33054
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33055
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33056
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33057
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33058
|
0
|
|
|
|
|
|
parent = ST(0); |
33059
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
33060
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33061
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33062
|
|
|
|
|
|
|
} |
33063
|
|
|
|
|
|
|
} |
33064
|
0
|
0
|
|
|
|
|
if (items == 8) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33065
|
0
|
|
|
|
|
|
nreturn = 0; |
33066
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33067
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33068
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33069
|
0
|
|
|
|
|
|
rowids = PDL->SvPDLV(ST(3)); |
33070
|
0
|
|
|
|
|
|
index2 = PDL->SvPDLV(ST(4)); |
33071
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(ST(5)); |
33072
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(6)) |
33073
|
|
|
|
|
|
|
; |
33074
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(7)) |
33075
|
|
|
|
|
|
|
; |
33076
|
|
|
|
|
|
|
} |
33077
|
0
|
0
|
|
|
|
|
else if (items == 7) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33078
|
0
|
|
|
|
|
|
nreturn = 1; |
33079
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33080
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33081
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33082
|
0
|
|
|
|
|
|
rowids = PDL->SvPDLV(ST(3)); |
33083
|
0
|
|
|
|
|
|
index2 = PDL->SvPDLV(ST(4)); |
33084
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(5)) |
33085
|
|
|
|
|
|
|
; |
33086
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(6)) |
33087
|
|
|
|
|
|
|
; |
33088
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33089
|
0
|
|
|
|
|
|
dist_SV = sv_newmortal(); |
33090
|
0
|
|
|
|
|
|
dist = PDL->null(); |
33091
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dist_SV,dist); |
33092
|
0
|
0
|
|
|
|
|
if (bless_stash) dist_SV = sv_bless(dist_SV, bless_stash); |
33093
|
|
|
|
|
|
|
} else { |
33094
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33095
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33096
|
0
|
|
|
|
|
|
PUTBACK; |
33097
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33098
|
0
|
|
|
|
|
|
SPAGAIN; |
33099
|
0
|
|
|
|
|
|
dist_SV = POPs; |
33100
|
0
|
|
|
|
|
|
PUTBACK; |
33101
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(dist_SV); |
33102
|
|
|
|
|
|
|
} |
33103
|
|
|
|
|
|
|
} |
33104
|
|
|
|
|
|
|
else { |
33105
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterdistances(data,mask,weight,rowids,index2,dist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
33106
|
|
|
|
|
|
|
} |
33107
|
|
|
|
|
|
|
} |
33108
|
|
|
|
|
|
|
{ |
33109
|
|
|
|
|
|
|
} |
33110
|
|
|
|
|
|
|
{ pdl_clusterdistances_struct *__privtrans; |
33111
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
33112
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33113
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33114
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33115
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
33116
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33117
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterdistances_vtable; |
33118
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33119
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33120
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((rowids->state & PDL_BADVAL) > 0) || ((index2->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33121
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33122
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33123
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33124
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33125
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33126
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33127
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33128
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33129
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33130
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33131
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
33132
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
33133
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
33134
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
33135
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
33136
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
33137
|
0
|
0
|
|
|
|
|
}if(PDL_L != rowids->datatype) { |
33138
|
0
|
|
|
|
|
|
rowids = PDL->get_convertedpdl(rowids,PDL_L); |
33139
|
0
|
0
|
|
|
|
|
}if(PDL_L != index2->datatype) { |
33140
|
0
|
|
|
|
|
|
index2 = PDL->get_convertedpdl(index2,PDL_L); |
33141
|
0
|
0
|
|
|
|
|
}if( (dist->state & PDL_NOMYDIMS) && dist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33142
|
0
|
|
|
|
|
|
dist->datatype = PDL_D; |
33143
|
0
|
0
|
|
|
|
|
} else if(PDL_D != dist->datatype) { |
33144
|
0
|
|
|
|
|
|
dist = PDL->get_convertedpdl(dist,PDL_D); |
33145
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
33146
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
33147
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
33148
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = rowids; |
33149
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = index2; |
33150
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = dist; |
33151
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33152
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
33153
|
0
|
|
|
|
|
|
dist->state |= PDL_BADVAL; |
33154
|
|
|
|
|
|
|
} |
33155
|
0
|
0
|
|
|
|
|
if (nreturn) { |
33156
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33157
|
0
|
|
|
|
|
|
ST(0) = dist_SV; |
33158
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33159
|
|
|
|
|
|
|
} else { |
33160
|
0
|
|
|
|
|
|
XSRETURN(0); |
33161
|
|
|
|
|
|
|
} |
33162
|
|
|
|
|
|
|
} |
33163
|
|
|
|
|
|
|
|
33164
|
|
|
|
|
|
|
void |
33165
|
|
|
|
|
|
|
clustersizes(...) |
33166
|
|
|
|
|
|
|
PREINIT: |
33167
|
1
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33168
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33169
|
1
|
|
|
|
|
|
HV *bless_stash = 0; |
33170
|
1
|
|
|
|
|
|
SV *parent = 0; |
33171
|
|
|
|
|
|
|
int nreturn; |
33172
|
|
|
|
|
|
|
SV *clustersizes_SV; |
33173
|
|
|
|
|
|
|
pdl *clusterids; |
33174
|
|
|
|
|
|
|
pdl *clustersizes; |
33175
|
|
|
|
|
|
|
PPCODE: |
33176
|
|
|
|
|
|
|
{ |
33177
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33178
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33179
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33180
|
1
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33181
|
1
|
|
|
|
|
|
parent = ST(0); |
33182
|
1
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
33183
|
1
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33184
|
1
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
33185
|
|
|
|
|
|
|
} |
33186
|
|
|
|
|
|
|
} |
33187
|
1
|
50
|
|
|
|
|
if (items == 2) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33188
|
1
|
|
|
|
|
|
nreturn = 0; |
33189
|
1
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(0)); |
33190
|
1
|
|
|
|
|
|
clustersizes = PDL->SvPDLV(ST(1)); |
33191
|
|
|
|
|
|
|
} |
33192
|
0
|
0
|
|
|
|
|
else if (items == 1) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33193
|
0
|
|
|
|
|
|
nreturn = 1; |
33194
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(0)); |
33195
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33196
|
0
|
|
|
|
|
|
clustersizes_SV = sv_newmortal(); |
33197
|
0
|
|
|
|
|
|
clustersizes = PDL->null(); |
33198
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clustersizes_SV,clustersizes); |
33199
|
0
|
0
|
|
|
|
|
if (bless_stash) clustersizes_SV = sv_bless(clustersizes_SV, bless_stash); |
33200
|
|
|
|
|
|
|
} else { |
33201
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33202
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33203
|
0
|
|
|
|
|
|
PUTBACK; |
33204
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33205
|
0
|
|
|
|
|
|
SPAGAIN; |
33206
|
0
|
|
|
|
|
|
clustersizes_SV = POPs; |
33207
|
0
|
|
|
|
|
|
PUTBACK; |
33208
|
0
|
|
|
|
|
|
clustersizes = PDL->SvPDLV(clustersizes_SV); |
33209
|
|
|
|
|
|
|
} |
33210
|
|
|
|
|
|
|
} |
33211
|
|
|
|
|
|
|
else { |
33212
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clustersizes(clusterids,clustersizes) (you may leave temporaries or output variables out of list)"); |
33213
|
|
|
|
|
|
|
} |
33214
|
|
|
|
|
|
|
} |
33215
|
|
|
|
|
|
|
{ |
33216
|
|
|
|
|
|
|
} |
33217
|
|
|
|
|
|
|
{ pdl_clustersizes_struct *__privtrans; |
33218
|
1
|
|
|
|
|
|
int badflag_cache = 0; |
33219
|
1
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33220
|
1
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33221
|
1
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33222
|
1
|
|
|
|
|
|
__privtrans->flags = 0; |
33223
|
1
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33224
|
1
|
|
|
|
|
|
__privtrans->vtable = &pdl_clustersizes_vtable; |
33225
|
1
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33226
|
1
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33227
|
1
|
|
|
|
|
|
badflag_cache = ((clusterids->state & PDL_BADVAL) > 0); |
33228
|
1
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33229
|
1
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33230
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33231
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33232
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33233
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33234
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33235
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33236
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33237
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33238
|
1
|
50
|
|
|
|
|
if(PDL_L != clusterids->datatype) { |
33239
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
33240
|
1
|
50
|
|
|
|
|
}if( (clustersizes->state & PDL_NOMYDIMS) && clustersizes->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33241
|
0
|
|
|
|
|
|
clustersizes->datatype = PDL_L; |
33242
|
1
|
50
|
|
|
|
|
} else if(PDL_L != clustersizes->datatype) { |
33243
|
0
|
|
|
|
|
|
clustersizes = PDL->get_convertedpdl(clustersizes,PDL_L); |
33244
|
1
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = clusterids; |
33245
|
1
|
|
|
|
|
|
__privtrans->pdls[1] = clustersizes; |
33246
|
1
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33247
|
1
|
50
|
|
|
|
|
clustersizes->state &= ~PDL_BADVAL; /* always make sure the output is "good" */if (nreturn) { |
33248
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33249
|
0
|
|
|
|
|
|
ST(0) = clustersizes_SV; |
33250
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33251
|
|
|
|
|
|
|
} else { |
33252
|
1
|
|
|
|
|
|
XSRETURN(0); |
33253
|
|
|
|
|
|
|
} |
33254
|
|
|
|
|
|
|
} |
33255
|
|
|
|
|
|
|
|
33256
|
|
|
|
|
|
|
void |
33257
|
|
|
|
|
|
|
clusterelements(...) |
33258
|
|
|
|
|
|
|
PREINIT: |
33259
|
1
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33260
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33261
|
1
|
|
|
|
|
|
HV *bless_stash = 0; |
33262
|
1
|
|
|
|
|
|
SV *parent = 0; |
33263
|
|
|
|
|
|
|
int nreturn; |
33264
|
|
|
|
|
|
|
SV *clustersizes_SV; |
33265
|
|
|
|
|
|
|
SV *eltids_SV; |
33266
|
|
|
|
|
|
|
pdl *clusterids; |
33267
|
|
|
|
|
|
|
pdl *clustersizes; |
33268
|
|
|
|
|
|
|
pdl *eltids; |
33269
|
|
|
|
|
|
|
PPCODE: |
33270
|
|
|
|
|
|
|
{ |
33271
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33272
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33273
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33274
|
1
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33275
|
1
|
|
|
|
|
|
parent = ST(0); |
33276
|
1
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
33277
|
1
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33278
|
1
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
33279
|
|
|
|
|
|
|
} |
33280
|
|
|
|
|
|
|
} |
33281
|
1
|
50
|
|
|
|
|
if (items == 3) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33282
|
1
|
|
|
|
|
|
nreturn = 0; |
33283
|
1
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(0)); |
33284
|
1
|
|
|
|
|
|
clustersizes = PDL->SvPDLV(ST(1)); |
33285
|
1
|
|
|
|
|
|
eltids = PDL->SvPDLV(ST(2)); |
33286
|
|
|
|
|
|
|
} |
33287
|
0
|
0
|
|
|
|
|
else if (items == 1) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33288
|
0
|
|
|
|
|
|
nreturn = 2; |
33289
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(0)); |
33290
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33291
|
0
|
|
|
|
|
|
clustersizes_SV = sv_newmortal(); |
33292
|
0
|
|
|
|
|
|
clustersizes = PDL->null(); |
33293
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clustersizes_SV,clustersizes); |
33294
|
0
|
0
|
|
|
|
|
if (bless_stash) clustersizes_SV = sv_bless(clustersizes_SV, bless_stash); |
33295
|
|
|
|
|
|
|
} else { |
33296
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33297
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33298
|
0
|
|
|
|
|
|
PUTBACK; |
33299
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33300
|
0
|
|
|
|
|
|
SPAGAIN; |
33301
|
0
|
|
|
|
|
|
clustersizes_SV = POPs; |
33302
|
0
|
|
|
|
|
|
PUTBACK; |
33303
|
0
|
|
|
|
|
|
clustersizes = PDL->SvPDLV(clustersizes_SV); |
33304
|
|
|
|
|
|
|
} |
33305
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33306
|
0
|
|
|
|
|
|
eltids_SV = sv_newmortal(); |
33307
|
0
|
|
|
|
|
|
eltids = PDL->null(); |
33308
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(eltids_SV,eltids); |
33309
|
0
|
0
|
|
|
|
|
if (bless_stash) eltids_SV = sv_bless(eltids_SV, bless_stash); |
33310
|
|
|
|
|
|
|
} else { |
33311
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33312
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33313
|
0
|
|
|
|
|
|
PUTBACK; |
33314
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33315
|
0
|
|
|
|
|
|
SPAGAIN; |
33316
|
0
|
|
|
|
|
|
eltids_SV = POPs; |
33317
|
0
|
|
|
|
|
|
PUTBACK; |
33318
|
0
|
|
|
|
|
|
eltids = PDL->SvPDLV(eltids_SV); |
33319
|
|
|
|
|
|
|
} |
33320
|
|
|
|
|
|
|
} |
33321
|
|
|
|
|
|
|
else { |
33322
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterelements(clusterids,clustersizes,eltids) (you may leave temporaries or output variables out of list)"); |
33323
|
|
|
|
|
|
|
} |
33324
|
|
|
|
|
|
|
} |
33325
|
|
|
|
|
|
|
{ |
33326
|
|
|
|
|
|
|
} |
33327
|
|
|
|
|
|
|
{ pdl_clusterelements_struct *__privtrans; |
33328
|
1
|
|
|
|
|
|
int badflag_cache = 0; |
33329
|
1
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33330
|
1
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33331
|
1
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33332
|
1
|
|
|
|
|
|
__privtrans->flags = 0; |
33333
|
1
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33334
|
1
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterelements_vtable; |
33335
|
1
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33336
|
1
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33337
|
1
|
|
|
|
|
|
badflag_cache = ((clusterids->state & PDL_BADVAL) > 0); |
33338
|
1
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33339
|
1
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33340
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33341
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33342
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33343
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33344
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33345
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33346
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33347
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33348
|
1
|
50
|
|
|
|
|
if(PDL_L != clusterids->datatype) { |
33349
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
33350
|
1
|
50
|
|
|
|
|
}if( (clustersizes->state & PDL_NOMYDIMS) && clustersizes->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33351
|
0
|
|
|
|
|
|
clustersizes->datatype = PDL_L; |
33352
|
1
|
50
|
|
|
|
|
} else if(PDL_L != clustersizes->datatype) { |
33353
|
0
|
|
|
|
|
|
clustersizes = PDL->get_convertedpdl(clustersizes,PDL_L); |
33354
|
1
|
50
|
|
|
|
|
}if( (eltids->state & PDL_NOMYDIMS) && eltids->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33355
|
0
|
|
|
|
|
|
eltids->datatype = PDL_L; |
33356
|
1
|
50
|
|
|
|
|
} else if(PDL_L != eltids->datatype) { |
33357
|
0
|
|
|
|
|
|
eltids = PDL->get_convertedpdl(eltids,PDL_L); |
33358
|
1
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = clusterids; |
33359
|
1
|
|
|
|
|
|
__privtrans->pdls[1] = clustersizes; |
33360
|
1
|
|
|
|
|
|
__privtrans->pdls[2] = eltids; |
33361
|
1
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33362
|
1
|
50
|
|
|
|
|
if (badflag_cache) { |
33363
|
0
|
|
|
|
|
|
clustersizes->state |= PDL_BADVAL; |
33364
|
0
|
|
|
|
|
|
eltids->state |= PDL_BADVAL; |
33365
|
|
|
|
|
|
|
} |
33366
|
1
|
50
|
|
|
|
|
if (nreturn) { |
33367
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33368
|
0
|
|
|
|
|
|
ST(0) = clustersizes_SV; |
33369
|
0
|
|
|
|
|
|
ST(1) = eltids_SV; |
33370
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33371
|
|
|
|
|
|
|
} else { |
33372
|
1
|
|
|
|
|
|
XSRETURN(0); |
33373
|
|
|
|
|
|
|
} |
33374
|
|
|
|
|
|
|
} |
33375
|
|
|
|
|
|
|
|
33376
|
|
|
|
|
|
|
void |
33377
|
|
|
|
|
|
|
clusterelementmask(...) |
33378
|
|
|
|
|
|
|
PREINIT: |
33379
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33380
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33381
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
33382
|
0
|
|
|
|
|
|
SV *parent = 0; |
33383
|
|
|
|
|
|
|
int nreturn; |
33384
|
|
|
|
|
|
|
SV *eltmask_SV; |
33385
|
|
|
|
|
|
|
pdl *clusterids; |
33386
|
|
|
|
|
|
|
pdl *eltmask; |
33387
|
|
|
|
|
|
|
PPCODE: |
33388
|
|
|
|
|
|
|
{ |
33389
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33390
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33391
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33392
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33393
|
0
|
|
|
|
|
|
parent = ST(0); |
33394
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
33395
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33396
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33397
|
|
|
|
|
|
|
} |
33398
|
|
|
|
|
|
|
} |
33399
|
0
|
0
|
|
|
|
|
if (items == 2) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33400
|
0
|
|
|
|
|
|
nreturn = 0; |
33401
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(0)); |
33402
|
0
|
|
|
|
|
|
eltmask = PDL->SvPDLV(ST(1)); |
33403
|
|
|
|
|
|
|
} |
33404
|
0
|
0
|
|
|
|
|
else if (items == 1) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33405
|
0
|
|
|
|
|
|
nreturn = 1; |
33406
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(0)); |
33407
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33408
|
0
|
|
|
|
|
|
eltmask_SV = sv_newmortal(); |
33409
|
0
|
|
|
|
|
|
eltmask = PDL->null(); |
33410
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(eltmask_SV,eltmask); |
33411
|
0
|
0
|
|
|
|
|
if (bless_stash) eltmask_SV = sv_bless(eltmask_SV, bless_stash); |
33412
|
|
|
|
|
|
|
} else { |
33413
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33414
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33415
|
0
|
|
|
|
|
|
PUTBACK; |
33416
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33417
|
0
|
|
|
|
|
|
SPAGAIN; |
33418
|
0
|
|
|
|
|
|
eltmask_SV = POPs; |
33419
|
0
|
|
|
|
|
|
PUTBACK; |
33420
|
0
|
|
|
|
|
|
eltmask = PDL->SvPDLV(eltmask_SV); |
33421
|
|
|
|
|
|
|
} |
33422
|
|
|
|
|
|
|
} |
33423
|
|
|
|
|
|
|
else { |
33424
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterelementmask(clusterids,eltmask) (you may leave temporaries or output variables out of list)"); |
33425
|
|
|
|
|
|
|
} |
33426
|
|
|
|
|
|
|
} |
33427
|
|
|
|
|
|
|
{ |
33428
|
|
|
|
|
|
|
} |
33429
|
|
|
|
|
|
|
{ pdl_clusterelementmask_struct *__privtrans; |
33430
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
33431
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33432
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33433
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33434
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
33435
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33436
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterelementmask_vtable; |
33437
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33438
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33439
|
0
|
|
|
|
|
|
badflag_cache = ((clusterids->state & PDL_BADVAL) > 0); |
33440
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33441
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33442
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33443
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33444
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33445
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33446
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33447
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33448
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33449
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33450
|
0
|
0
|
|
|
|
|
if(PDL_L != clusterids->datatype) { |
33451
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
33452
|
0
|
0
|
|
|
|
|
}if( (eltmask->state & PDL_NOMYDIMS) && eltmask->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33453
|
0
|
|
|
|
|
|
eltmask->datatype = PDL_B; |
33454
|
0
|
0
|
|
|
|
|
} else if(PDL_B != eltmask->datatype) { |
33455
|
0
|
|
|
|
|
|
eltmask = PDL->get_convertedpdl(eltmask,PDL_B); |
33456
|
0
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = clusterids; |
33457
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = eltmask; |
33458
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33459
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
33460
|
0
|
|
|
|
|
|
eltmask->state |= PDL_BADVAL; |
33461
|
|
|
|
|
|
|
} |
33462
|
0
|
0
|
|
|
|
|
if (nreturn) { |
33463
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33464
|
0
|
|
|
|
|
|
ST(0) = eltmask_SV; |
33465
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33466
|
|
|
|
|
|
|
} else { |
33467
|
0
|
|
|
|
|
|
XSRETURN(0); |
33468
|
|
|
|
|
|
|
} |
33469
|
|
|
|
|
|
|
} |
33470
|
|
|
|
|
|
|
|
33471
|
|
|
|
|
|
|
void |
33472
|
|
|
|
|
|
|
clusterdistancematrix(...) |
33473
|
|
|
|
|
|
|
PREINIT: |
33474
|
5
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33475
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33476
|
5
|
|
|
|
|
|
HV *bless_stash = 0; |
33477
|
5
|
|
|
|
|
|
SV *parent = 0; |
33478
|
|
|
|
|
|
|
int nreturn; |
33479
|
|
|
|
|
|
|
SV *dist_SV; |
33480
|
|
|
|
|
|
|
pdl *data; |
33481
|
|
|
|
|
|
|
pdl *mask; |
33482
|
|
|
|
|
|
|
pdl *weight; |
33483
|
|
|
|
|
|
|
pdl *rowids; |
33484
|
|
|
|
|
|
|
pdl *clustersizes; |
33485
|
|
|
|
|
|
|
pdl *eltids; |
33486
|
|
|
|
|
|
|
pdl *dist; |
33487
|
|
|
|
|
|
|
char *distFlag; |
33488
|
|
|
|
|
|
|
char *methodFlag; |
33489
|
|
|
|
|
|
|
PPCODE: |
33490
|
|
|
|
|
|
|
{ |
33491
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33492
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33493
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33494
|
5
|
50
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33495
|
5
|
|
|
|
|
|
parent = ST(0); |
33496
|
5
|
50
|
|
|
|
|
if (sv_isobject(parent)){ |
33497
|
5
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33498
|
5
|
50
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
33499
|
|
|
|
|
|
|
} |
33500
|
|
|
|
|
|
|
} |
33501
|
5
|
50
|
|
|
|
|
if (items == 9) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33502
|
5
|
|
|
|
|
|
nreturn = 0; |
33503
|
5
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33504
|
5
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33505
|
5
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33506
|
5
|
|
|
|
|
|
rowids = PDL->SvPDLV(ST(3)); |
33507
|
5
|
|
|
|
|
|
clustersizes = PDL->SvPDLV(ST(4)); |
33508
|
5
|
|
|
|
|
|
eltids = PDL->SvPDLV(ST(5)); |
33509
|
5
|
|
|
|
|
|
dist = PDL->SvPDLV(ST(6)); |
33510
|
5
|
50
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(7)) |
33511
|
|
|
|
|
|
|
; |
33512
|
5
|
50
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(8)) |
33513
|
|
|
|
|
|
|
; |
33514
|
|
|
|
|
|
|
} |
33515
|
0
|
0
|
|
|
|
|
else if (items == 8) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33516
|
0
|
|
|
|
|
|
nreturn = 1; |
33517
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33518
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33519
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33520
|
0
|
|
|
|
|
|
rowids = PDL->SvPDLV(ST(3)); |
33521
|
0
|
|
|
|
|
|
clustersizes = PDL->SvPDLV(ST(4)); |
33522
|
0
|
|
|
|
|
|
eltids = PDL->SvPDLV(ST(5)); |
33523
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(6)) |
33524
|
|
|
|
|
|
|
; |
33525
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(7)) |
33526
|
|
|
|
|
|
|
; |
33527
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33528
|
0
|
|
|
|
|
|
dist_SV = sv_newmortal(); |
33529
|
0
|
|
|
|
|
|
dist = PDL->null(); |
33530
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dist_SV,dist); |
33531
|
0
|
0
|
|
|
|
|
if (bless_stash) dist_SV = sv_bless(dist_SV, bless_stash); |
33532
|
|
|
|
|
|
|
} else { |
33533
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33534
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33535
|
0
|
|
|
|
|
|
PUTBACK; |
33536
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33537
|
0
|
|
|
|
|
|
SPAGAIN; |
33538
|
0
|
|
|
|
|
|
dist_SV = POPs; |
33539
|
0
|
|
|
|
|
|
PUTBACK; |
33540
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(dist_SV); |
33541
|
|
|
|
|
|
|
} |
33542
|
|
|
|
|
|
|
} |
33543
|
|
|
|
|
|
|
else { |
33544
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterdistancematrix(data,mask,weight,rowids,clustersizes,eltids,dist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
33545
|
|
|
|
|
|
|
} |
33546
|
|
|
|
|
|
|
} |
33547
|
|
|
|
|
|
|
{ |
33548
|
|
|
|
|
|
|
} |
33549
|
|
|
|
|
|
|
{ pdl_clusterdistancematrix_struct *__privtrans; |
33550
|
5
|
|
|
|
|
|
int badflag_cache = 0; |
33551
|
5
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33552
|
5
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33553
|
5
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33554
|
5
|
|
|
|
|
|
__privtrans->flags = 0; |
33555
|
5
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33556
|
5
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterdistancematrix_vtable; |
33557
|
5
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33558
|
5
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33559
|
5
|
50
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((rowids->state & PDL_BADVAL) > 0) || ((clustersizes->state & PDL_BADVAL) > 0) || ((eltids->state & PDL_BADVAL) > 0); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
33560
|
5
|
50
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33561
|
5
|
50
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33562
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33563
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33564
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33565
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33566
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33567
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33568
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33569
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33570
|
5
|
50
|
|
|
|
|
if(PDL_D != data->datatype) { |
33571
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
33572
|
5
|
50
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
33573
|
5
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
33574
|
5
|
50
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
33575
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
33576
|
5
|
50
|
|
|
|
|
}if(PDL_L != rowids->datatype) { |
33577
|
0
|
|
|
|
|
|
rowids = PDL->get_convertedpdl(rowids,PDL_L); |
33578
|
5
|
50
|
|
|
|
|
}if(PDL_L != clustersizes->datatype) { |
33579
|
0
|
|
|
|
|
|
clustersizes = PDL->get_convertedpdl(clustersizes,PDL_L); |
33580
|
5
|
50
|
|
|
|
|
}if(PDL_L != eltids->datatype) { |
33581
|
0
|
|
|
|
|
|
eltids = PDL->get_convertedpdl(eltids,PDL_L); |
33582
|
5
|
50
|
|
|
|
|
}if( (dist->state & PDL_NOMYDIMS) && dist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33583
|
0
|
|
|
|
|
|
dist->datatype = PDL_D; |
33584
|
5
|
50
|
|
|
|
|
} else if(PDL_D != dist->datatype) { |
33585
|
0
|
|
|
|
|
|
dist = PDL->get_convertedpdl(dist,PDL_D); |
33586
|
5
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
33587
|
5
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
33588
|
5
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
33589
|
5
|
|
|
|
|
|
__privtrans->pdls[3] = rowids; |
33590
|
5
|
|
|
|
|
|
__privtrans->pdls[4] = clustersizes; |
33591
|
5
|
|
|
|
|
|
__privtrans->pdls[5] = eltids; |
33592
|
5
|
|
|
|
|
|
__privtrans->pdls[6] = dist; |
33593
|
5
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33594
|
5
|
50
|
|
|
|
|
if (badflag_cache) { |
33595
|
0
|
|
|
|
|
|
dist->state |= PDL_BADVAL; |
33596
|
|
|
|
|
|
|
} |
33597
|
5
|
50
|
|
|
|
|
if (nreturn) { |
33598
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33599
|
0
|
|
|
|
|
|
ST(0) = dist_SV; |
33600
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33601
|
|
|
|
|
|
|
} else { |
33602
|
5
|
|
|
|
|
|
XSRETURN(0); |
33603
|
|
|
|
|
|
|
} |
33604
|
|
|
|
|
|
|
} |
33605
|
|
|
|
|
|
|
|
33606
|
|
|
|
|
|
|
void |
33607
|
|
|
|
|
|
|
clusterdistancematrixenc(...) |
33608
|
|
|
|
|
|
|
PREINIT: |
33609
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33610
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33611
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
33612
|
0
|
|
|
|
|
|
SV *parent = 0; |
33613
|
|
|
|
|
|
|
int nreturn; |
33614
|
|
|
|
|
|
|
SV *dist_SV; |
33615
|
|
|
|
|
|
|
pdl *data; |
33616
|
|
|
|
|
|
|
pdl *mask; |
33617
|
|
|
|
|
|
|
pdl *weight; |
33618
|
|
|
|
|
|
|
pdl *clens1; |
33619
|
|
|
|
|
|
|
pdl *crowids1; |
33620
|
|
|
|
|
|
|
pdl *clens2; |
33621
|
|
|
|
|
|
|
pdl *crowids2; |
33622
|
|
|
|
|
|
|
pdl *dist; |
33623
|
|
|
|
|
|
|
char *distFlag; |
33624
|
|
|
|
|
|
|
char *methodFlag; |
33625
|
|
|
|
|
|
|
PPCODE: |
33626
|
|
|
|
|
|
|
{ |
33627
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33628
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33629
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33630
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33631
|
0
|
|
|
|
|
|
parent = ST(0); |
33632
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
33633
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33634
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33635
|
|
|
|
|
|
|
} |
33636
|
|
|
|
|
|
|
} |
33637
|
0
|
0
|
|
|
|
|
if (items == 10) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33638
|
0
|
|
|
|
|
|
nreturn = 0; |
33639
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33640
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33641
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33642
|
0
|
|
|
|
|
|
clens1 = PDL->SvPDLV(ST(3)); |
33643
|
0
|
|
|
|
|
|
crowids1 = PDL->SvPDLV(ST(4)); |
33644
|
0
|
|
|
|
|
|
clens2 = PDL->SvPDLV(ST(5)); |
33645
|
0
|
|
|
|
|
|
crowids2 = PDL->SvPDLV(ST(6)); |
33646
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(ST(7)); |
33647
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(8)) |
33648
|
|
|
|
|
|
|
; |
33649
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(9)) |
33650
|
|
|
|
|
|
|
; |
33651
|
|
|
|
|
|
|
} |
33652
|
0
|
0
|
|
|
|
|
else if (items == 9) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33653
|
0
|
|
|
|
|
|
nreturn = 1; |
33654
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33655
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33656
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33657
|
0
|
|
|
|
|
|
clens1 = PDL->SvPDLV(ST(3)); |
33658
|
0
|
|
|
|
|
|
crowids1 = PDL->SvPDLV(ST(4)); |
33659
|
0
|
|
|
|
|
|
clens2 = PDL->SvPDLV(ST(5)); |
33660
|
0
|
|
|
|
|
|
crowids2 = PDL->SvPDLV(ST(6)); |
33661
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(7)) |
33662
|
|
|
|
|
|
|
; |
33663
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(8)) |
33664
|
|
|
|
|
|
|
; |
33665
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33666
|
0
|
|
|
|
|
|
dist_SV = sv_newmortal(); |
33667
|
0
|
|
|
|
|
|
dist = PDL->null(); |
33668
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dist_SV,dist); |
33669
|
0
|
0
|
|
|
|
|
if (bless_stash) dist_SV = sv_bless(dist_SV, bless_stash); |
33670
|
|
|
|
|
|
|
} else { |
33671
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33672
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33673
|
0
|
|
|
|
|
|
PUTBACK; |
33674
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33675
|
0
|
|
|
|
|
|
SPAGAIN; |
33676
|
0
|
|
|
|
|
|
dist_SV = POPs; |
33677
|
0
|
|
|
|
|
|
PUTBACK; |
33678
|
0
|
|
|
|
|
|
dist = PDL->SvPDLV(dist_SV); |
33679
|
|
|
|
|
|
|
} |
33680
|
|
|
|
|
|
|
} |
33681
|
|
|
|
|
|
|
else { |
33682
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterdistancematrixenc(data,mask,weight,clens1,crowids1,clens2,crowids2,dist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
33683
|
|
|
|
|
|
|
} |
33684
|
|
|
|
|
|
|
} |
33685
|
|
|
|
|
|
|
{ |
33686
|
|
|
|
|
|
|
} |
33687
|
|
|
|
|
|
|
{ pdl_clusterdistancematrixenc_struct *__privtrans; |
33688
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
33689
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33690
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33691
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33692
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
33693
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33694
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterdistancematrixenc_vtable; |
33695
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33696
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33697
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((clens1->state & PDL_BADVAL) > 0) || ((crowids1->state & PDL_BADVAL) > 0) || ((clens2->state & PDL_BADVAL) > 0) || ((crowids2->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33698
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33699
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33700
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33701
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33702
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33703
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33704
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33705
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33706
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33707
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33708
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
33709
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
33710
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
33711
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
33712
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
33713
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
33714
|
0
|
0
|
|
|
|
|
}if(PDL_L != clens1->datatype) { |
33715
|
0
|
|
|
|
|
|
clens1 = PDL->get_convertedpdl(clens1,PDL_L); |
33716
|
0
|
0
|
|
|
|
|
}if(PDL_L != crowids1->datatype) { |
33717
|
0
|
|
|
|
|
|
crowids1 = PDL->get_convertedpdl(crowids1,PDL_L); |
33718
|
0
|
0
|
|
|
|
|
}if(PDL_L != clens2->datatype) { |
33719
|
0
|
|
|
|
|
|
clens2 = PDL->get_convertedpdl(clens2,PDL_L); |
33720
|
0
|
0
|
|
|
|
|
}if(PDL_L != crowids2->datatype) { |
33721
|
0
|
|
|
|
|
|
crowids2 = PDL->get_convertedpdl(crowids2,PDL_L); |
33722
|
0
|
0
|
|
|
|
|
}if( (dist->state & PDL_NOMYDIMS) && dist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33723
|
0
|
|
|
|
|
|
dist->datatype = PDL_D; |
33724
|
0
|
0
|
|
|
|
|
} else if(PDL_D != dist->datatype) { |
33725
|
0
|
|
|
|
|
|
dist = PDL->get_convertedpdl(dist,PDL_D); |
33726
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
33727
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
33728
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
33729
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = clens1; |
33730
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = crowids1; |
33731
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = clens2; |
33732
|
0
|
|
|
|
|
|
__privtrans->pdls[6] = crowids2; |
33733
|
0
|
|
|
|
|
|
__privtrans->pdls[7] = dist; |
33734
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33735
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
33736
|
0
|
|
|
|
|
|
dist->state |= PDL_BADVAL; |
33737
|
|
|
|
|
|
|
} |
33738
|
0
|
0
|
|
|
|
|
if (nreturn) { |
33739
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33740
|
0
|
|
|
|
|
|
ST(0) = dist_SV; |
33741
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33742
|
|
|
|
|
|
|
} else { |
33743
|
0
|
|
|
|
|
|
XSRETURN(0); |
33744
|
|
|
|
|
|
|
} |
33745
|
|
|
|
|
|
|
} |
33746
|
|
|
|
|
|
|
|
33747
|
|
|
|
|
|
|
void |
33748
|
|
|
|
|
|
|
clusterdistancesenc(...) |
33749
|
|
|
|
|
|
|
PREINIT: |
33750
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33751
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33752
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
33753
|
0
|
|
|
|
|
|
SV *parent = 0; |
33754
|
|
|
|
|
|
|
int nreturn; |
33755
|
|
|
|
|
|
|
SV *dists_SV; |
33756
|
|
|
|
|
|
|
pdl *data; |
33757
|
|
|
|
|
|
|
pdl *mask; |
33758
|
|
|
|
|
|
|
pdl *weight; |
33759
|
|
|
|
|
|
|
pdl *coffsets1; |
33760
|
|
|
|
|
|
|
pdl *crowids1; |
33761
|
|
|
|
|
|
|
pdl *cwhich1; |
33762
|
|
|
|
|
|
|
pdl *coffsets2; |
33763
|
|
|
|
|
|
|
pdl *crowids2; |
33764
|
|
|
|
|
|
|
pdl *cwhich2; |
33765
|
|
|
|
|
|
|
pdl *dists; |
33766
|
|
|
|
|
|
|
char *distFlag; |
33767
|
|
|
|
|
|
|
char *methodFlag; |
33768
|
|
|
|
|
|
|
PPCODE: |
33769
|
|
|
|
|
|
|
{ |
33770
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33771
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33772
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33773
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33774
|
0
|
|
|
|
|
|
parent = ST(0); |
33775
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
33776
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33777
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33778
|
|
|
|
|
|
|
} |
33779
|
|
|
|
|
|
|
} |
33780
|
0
|
0
|
|
|
|
|
if (items == 12) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33781
|
0
|
|
|
|
|
|
nreturn = 0; |
33782
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33783
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33784
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33785
|
0
|
|
|
|
|
|
coffsets1 = PDL->SvPDLV(ST(3)); |
33786
|
0
|
|
|
|
|
|
crowids1 = PDL->SvPDLV(ST(4)); |
33787
|
0
|
|
|
|
|
|
cwhich1 = PDL->SvPDLV(ST(5)); |
33788
|
0
|
|
|
|
|
|
coffsets2 = PDL->SvPDLV(ST(6)); |
33789
|
0
|
|
|
|
|
|
crowids2 = PDL->SvPDLV(ST(7)); |
33790
|
0
|
|
|
|
|
|
cwhich2 = PDL->SvPDLV(ST(8)); |
33791
|
0
|
|
|
|
|
|
dists = PDL->SvPDLV(ST(9)); |
33792
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(10)) |
33793
|
|
|
|
|
|
|
; |
33794
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(11)) |
33795
|
|
|
|
|
|
|
; |
33796
|
|
|
|
|
|
|
} |
33797
|
0
|
0
|
|
|
|
|
else if (items == 11) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33798
|
0
|
|
|
|
|
|
nreturn = 1; |
33799
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33800
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33801
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
33802
|
0
|
|
|
|
|
|
coffsets1 = PDL->SvPDLV(ST(3)); |
33803
|
0
|
|
|
|
|
|
crowids1 = PDL->SvPDLV(ST(4)); |
33804
|
0
|
|
|
|
|
|
cwhich1 = PDL->SvPDLV(ST(5)); |
33805
|
0
|
|
|
|
|
|
coffsets2 = PDL->SvPDLV(ST(6)); |
33806
|
0
|
|
|
|
|
|
crowids2 = PDL->SvPDLV(ST(7)); |
33807
|
0
|
|
|
|
|
|
cwhich2 = PDL->SvPDLV(ST(8)); |
33808
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(9)) |
33809
|
|
|
|
|
|
|
; |
33810
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(10)) |
33811
|
|
|
|
|
|
|
; |
33812
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33813
|
0
|
|
|
|
|
|
dists_SV = sv_newmortal(); |
33814
|
0
|
|
|
|
|
|
dists = PDL->null(); |
33815
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(dists_SV,dists); |
33816
|
0
|
0
|
|
|
|
|
if (bless_stash) dists_SV = sv_bless(dists_SV, bless_stash); |
33817
|
|
|
|
|
|
|
} else { |
33818
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33819
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33820
|
0
|
|
|
|
|
|
PUTBACK; |
33821
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33822
|
0
|
|
|
|
|
|
SPAGAIN; |
33823
|
0
|
|
|
|
|
|
dists_SV = POPs; |
33824
|
0
|
|
|
|
|
|
PUTBACK; |
33825
|
0
|
|
|
|
|
|
dists = PDL->SvPDLV(dists_SV); |
33826
|
|
|
|
|
|
|
} |
33827
|
|
|
|
|
|
|
} |
33828
|
|
|
|
|
|
|
else { |
33829
|
0
|
|
|
|
|
|
croak ("Usage: PDL::clusterdistancesenc(data,mask,weight,coffsets1,crowids1,cwhich1,coffsets2,crowids2,cwhich2,dists,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
33830
|
|
|
|
|
|
|
} |
33831
|
|
|
|
|
|
|
} |
33832
|
|
|
|
|
|
|
{ |
33833
|
|
|
|
|
|
|
} |
33834
|
|
|
|
|
|
|
{ pdl_clusterdistancesenc_struct *__privtrans; |
33835
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
33836
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33837
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33838
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33839
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
33840
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33841
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_clusterdistancesenc_vtable; |
33842
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33843
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33844
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((coffsets1->state & PDL_BADVAL) > 0) || ((crowids1->state & PDL_BADVAL) > 0) || ((cwhich1->state & PDL_BADVAL) > 0) || ((coffsets2->state & PDL_BADVAL) > 0) || ((crowids2->state & PDL_BADVAL) > 0) || ((cwhich2->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33845
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33846
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33847
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33848
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33849
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33850
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33851
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33852
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33853
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33854
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33855
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
33856
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
33857
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
33858
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
33859
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
33860
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
33861
|
0
|
0
|
|
|
|
|
}if(PDL_L != coffsets1->datatype) { |
33862
|
0
|
|
|
|
|
|
coffsets1 = PDL->get_convertedpdl(coffsets1,PDL_L); |
33863
|
0
|
0
|
|
|
|
|
}if(PDL_L != crowids1->datatype) { |
33864
|
0
|
|
|
|
|
|
crowids1 = PDL->get_convertedpdl(crowids1,PDL_L); |
33865
|
0
|
0
|
|
|
|
|
}if(PDL_L != cwhich1->datatype) { |
33866
|
0
|
|
|
|
|
|
cwhich1 = PDL->get_convertedpdl(cwhich1,PDL_L); |
33867
|
0
|
0
|
|
|
|
|
}if(PDL_L != coffsets2->datatype) { |
33868
|
0
|
|
|
|
|
|
coffsets2 = PDL->get_convertedpdl(coffsets2,PDL_L); |
33869
|
0
|
0
|
|
|
|
|
}if(PDL_L != crowids2->datatype) { |
33870
|
0
|
|
|
|
|
|
crowids2 = PDL->get_convertedpdl(crowids2,PDL_L); |
33871
|
0
|
0
|
|
|
|
|
}if(PDL_L != cwhich2->datatype) { |
33872
|
0
|
|
|
|
|
|
cwhich2 = PDL->get_convertedpdl(cwhich2,PDL_L); |
33873
|
0
|
0
|
|
|
|
|
}if( (dists->state & PDL_NOMYDIMS) && dists->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
33874
|
0
|
|
|
|
|
|
dists->datatype = PDL_D; |
33875
|
0
|
0
|
|
|
|
|
} else if(PDL_D != dists->datatype) { |
33876
|
0
|
|
|
|
|
|
dists = PDL->get_convertedpdl(dists,PDL_D); |
33877
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
33878
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
33879
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
33880
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = coffsets1; |
33881
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = crowids1; |
33882
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = cwhich1; |
33883
|
0
|
|
|
|
|
|
__privtrans->pdls[6] = coffsets2; |
33884
|
0
|
|
|
|
|
|
__privtrans->pdls[7] = crowids2; |
33885
|
0
|
|
|
|
|
|
__privtrans->pdls[8] = cwhich2; |
33886
|
0
|
|
|
|
|
|
__privtrans->pdls[9] = dists; |
33887
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
33888
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
33889
|
0
|
|
|
|
|
|
dists->state |= PDL_BADVAL; |
33890
|
|
|
|
|
|
|
} |
33891
|
0
|
0
|
|
|
|
|
if (nreturn) { |
33892
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33893
|
0
|
|
|
|
|
|
ST(0) = dists_SV; |
33894
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
33895
|
|
|
|
|
|
|
} else { |
33896
|
0
|
|
|
|
|
|
XSRETURN(0); |
33897
|
|
|
|
|
|
|
} |
33898
|
|
|
|
|
|
|
} |
33899
|
|
|
|
|
|
|
|
33900
|
|
|
|
|
|
|
void |
33901
|
|
|
|
|
|
|
getclusterwsum(...) |
33902
|
|
|
|
|
|
|
PREINIT: |
33903
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
33904
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
33905
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
33906
|
0
|
|
|
|
|
|
SV *parent = 0; |
33907
|
|
|
|
|
|
|
int nreturn; |
33908
|
|
|
|
|
|
|
SV *cdata_SV; |
33909
|
|
|
|
|
|
|
SV *cmask_SV; |
33910
|
|
|
|
|
|
|
pdl *data; |
33911
|
|
|
|
|
|
|
pdl *mask; |
33912
|
|
|
|
|
|
|
pdl *clusterwts; |
33913
|
|
|
|
|
|
|
pdl *cdata; |
33914
|
|
|
|
|
|
|
pdl *cmask; |
33915
|
|
|
|
|
|
|
PPCODE: |
33916
|
|
|
|
|
|
|
{ |
33917
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
33918
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
33919
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
33920
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33921
|
0
|
|
|
|
|
|
parent = ST(0); |
33922
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
33923
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
33924
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33925
|
|
|
|
|
|
|
} |
33926
|
|
|
|
|
|
|
} |
33927
|
0
|
0
|
|
|
|
|
if (items == 5) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
33928
|
0
|
|
|
|
|
|
nreturn = 0; |
33929
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33930
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33931
|
0
|
|
|
|
|
|
clusterwts = PDL->SvPDLV(ST(2)); |
33932
|
0
|
|
|
|
|
|
cdata = PDL->SvPDLV(ST(3)); |
33933
|
0
|
|
|
|
|
|
cmask = PDL->SvPDLV(ST(4)); |
33934
|
|
|
|
|
|
|
} |
33935
|
0
|
0
|
|
|
|
|
else if (items == 3) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
33936
|
0
|
|
|
|
|
|
nreturn = 2; |
33937
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
33938
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
33939
|
0
|
|
|
|
|
|
clusterwts = PDL->SvPDLV(ST(2)); |
33940
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33941
|
0
|
|
|
|
|
|
cdata_SV = sv_newmortal(); |
33942
|
0
|
|
|
|
|
|
cdata = PDL->null(); |
33943
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cdata_SV,cdata); |
33944
|
0
|
0
|
|
|
|
|
if (bless_stash) cdata_SV = sv_bless(cdata_SV, bless_stash); |
33945
|
|
|
|
|
|
|
} else { |
33946
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33947
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33948
|
0
|
|
|
|
|
|
PUTBACK; |
33949
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33950
|
0
|
|
|
|
|
|
SPAGAIN; |
33951
|
0
|
|
|
|
|
|
cdata_SV = POPs; |
33952
|
0
|
|
|
|
|
|
PUTBACK; |
33953
|
0
|
|
|
|
|
|
cdata = PDL->SvPDLV(cdata_SV); |
33954
|
|
|
|
|
|
|
} |
33955
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
33956
|
0
|
|
|
|
|
|
cmask_SV = sv_newmortal(); |
33957
|
0
|
|
|
|
|
|
cmask = PDL->null(); |
33958
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cmask_SV,cmask); |
33959
|
0
|
0
|
|
|
|
|
if (bless_stash) cmask_SV = sv_bless(cmask_SV, bless_stash); |
33960
|
|
|
|
|
|
|
} else { |
33961
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
33962
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
33963
|
0
|
|
|
|
|
|
PUTBACK; |
33964
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
33965
|
0
|
|
|
|
|
|
SPAGAIN; |
33966
|
0
|
|
|
|
|
|
cmask_SV = POPs; |
33967
|
0
|
|
|
|
|
|
PUTBACK; |
33968
|
0
|
|
|
|
|
|
cmask = PDL->SvPDLV(cmask_SV); |
33969
|
|
|
|
|
|
|
} |
33970
|
|
|
|
|
|
|
} |
33971
|
|
|
|
|
|
|
else { |
33972
|
0
|
|
|
|
|
|
croak ("Usage: PDL::getclusterwsum(data,mask,clusterwts,cdata,cmask) (you may leave temporaries or output variables out of list)"); |
33973
|
|
|
|
|
|
|
} |
33974
|
|
|
|
|
|
|
} |
33975
|
|
|
|
|
|
|
{ |
33976
|
|
|
|
|
|
|
} |
33977
|
|
|
|
|
|
|
{ pdl_getclusterwsum_struct *__privtrans; |
33978
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
33979
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
33980
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
33981
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
33982
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
33983
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
33984
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_getclusterwsum_vtable; |
33985
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
33986
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
33987
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((clusterwts->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
33988
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
33989
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
33990
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
33991
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
33992
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
33993
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
33994
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
33995
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
33996
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
33997
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
33998
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
33999
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
34000
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
34001
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
34002
|
0
|
0
|
|
|
|
|
}if(PDL_D != clusterwts->datatype) { |
34003
|
0
|
|
|
|
|
|
clusterwts = PDL->get_convertedpdl(clusterwts,PDL_D); |
34004
|
0
|
0
|
|
|
|
|
}if( (cdata->state & PDL_NOMYDIMS) && cdata->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34005
|
0
|
|
|
|
|
|
cdata->datatype = PDL_D; |
34006
|
0
|
0
|
|
|
|
|
} else if(PDL_D != cdata->datatype) { |
34007
|
0
|
|
|
|
|
|
cdata = PDL->get_convertedpdl(cdata,PDL_D); |
34008
|
0
|
0
|
|
|
|
|
}if( (cmask->state & PDL_NOMYDIMS) && cmask->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34009
|
0
|
|
|
|
|
|
cmask->datatype = PDL_L; |
34010
|
0
|
0
|
|
|
|
|
} else if(PDL_L != cmask->datatype) { |
34011
|
0
|
|
|
|
|
|
cmask = PDL->get_convertedpdl(cmask,PDL_L); |
34012
|
0
|
|
|
|
|
|
}{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
34013
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
34014
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = clusterwts; |
34015
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = cdata; |
34016
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = cmask; |
34017
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
34018
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
34019
|
0
|
|
|
|
|
|
cdata->state |= PDL_BADVAL; |
34020
|
0
|
|
|
|
|
|
cmask->state |= PDL_BADVAL; |
34021
|
|
|
|
|
|
|
} |
34022
|
0
|
0
|
|
|
|
|
if (nreturn) { |
34023
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34024
|
0
|
|
|
|
|
|
ST(0) = cdata_SV; |
34025
|
0
|
|
|
|
|
|
ST(1) = cmask_SV; |
34026
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
34027
|
|
|
|
|
|
|
} else { |
34028
|
0
|
|
|
|
|
|
XSRETURN(0); |
34029
|
|
|
|
|
|
|
} |
34030
|
|
|
|
|
|
|
} |
34031
|
|
|
|
|
|
|
|
34032
|
|
|
|
|
|
|
void |
34033
|
|
|
|
|
|
|
attachtonearest(...) |
34034
|
|
|
|
|
|
|
PREINIT: |
34035
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
34036
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
34037
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
34038
|
0
|
|
|
|
|
|
SV *parent = 0; |
34039
|
|
|
|
|
|
|
int nreturn; |
34040
|
|
|
|
|
|
|
SV *clusterids_SV; |
34041
|
|
|
|
|
|
|
SV *cdist_SV; |
34042
|
|
|
|
|
|
|
pdl *data; |
34043
|
|
|
|
|
|
|
pdl *mask; |
34044
|
|
|
|
|
|
|
pdl *weight; |
34045
|
|
|
|
|
|
|
pdl *rowids; |
34046
|
|
|
|
|
|
|
pdl *cdata; |
34047
|
|
|
|
|
|
|
pdl *cmask; |
34048
|
|
|
|
|
|
|
pdl *clusterids; |
34049
|
|
|
|
|
|
|
pdl *cdist; |
34050
|
|
|
|
|
|
|
char *distFlag; |
34051
|
|
|
|
|
|
|
char *methodFlag; |
34052
|
|
|
|
|
|
|
PPCODE: |
34053
|
|
|
|
|
|
|
{ |
34054
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
34055
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
34056
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
34057
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34058
|
0
|
|
|
|
|
|
parent = ST(0); |
34059
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
34060
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
34061
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34062
|
|
|
|
|
|
|
} |
34063
|
|
|
|
|
|
|
} |
34064
|
0
|
0
|
|
|
|
|
if (items == 10) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
34065
|
0
|
|
|
|
|
|
nreturn = 0; |
34066
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
34067
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
34068
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
34069
|
0
|
|
|
|
|
|
rowids = PDL->SvPDLV(ST(3)); |
34070
|
0
|
|
|
|
|
|
cdata = PDL->SvPDLV(ST(4)); |
34071
|
0
|
|
|
|
|
|
cmask = PDL->SvPDLV(ST(5)); |
34072
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(ST(6)); |
34073
|
0
|
|
|
|
|
|
cdist = PDL->SvPDLV(ST(7)); |
34074
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(8)) |
34075
|
|
|
|
|
|
|
; |
34076
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(9)) |
34077
|
|
|
|
|
|
|
; |
34078
|
|
|
|
|
|
|
} |
34079
|
0
|
0
|
|
|
|
|
else if (items == 8) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
34080
|
0
|
|
|
|
|
|
nreturn = 2; |
34081
|
0
|
|
|
|
|
|
data = PDL->SvPDLV(ST(0)); |
34082
|
0
|
|
|
|
|
|
mask = PDL->SvPDLV(ST(1)); |
34083
|
0
|
|
|
|
|
|
weight = PDL->SvPDLV(ST(2)); |
34084
|
0
|
|
|
|
|
|
rowids = PDL->SvPDLV(ST(3)); |
34085
|
0
|
|
|
|
|
|
cdata = PDL->SvPDLV(ST(4)); |
34086
|
0
|
|
|
|
|
|
cmask = PDL->SvPDLV(ST(5)); |
34087
|
0
|
0
|
|
|
|
|
distFlag = (char *)SvPV_nolen(ST(6)) |
34088
|
|
|
|
|
|
|
; |
34089
|
0
|
0
|
|
|
|
|
methodFlag = (char *)SvPV_nolen(ST(7)) |
34090
|
|
|
|
|
|
|
; |
34091
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34092
|
0
|
|
|
|
|
|
clusterids_SV = sv_newmortal(); |
34093
|
0
|
|
|
|
|
|
clusterids = PDL->null(); |
34094
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(clusterids_SV,clusterids); |
34095
|
0
|
0
|
|
|
|
|
if (bless_stash) clusterids_SV = sv_bless(clusterids_SV, bless_stash); |
34096
|
|
|
|
|
|
|
} else { |
34097
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34098
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34099
|
0
|
|
|
|
|
|
PUTBACK; |
34100
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34101
|
0
|
|
|
|
|
|
SPAGAIN; |
34102
|
0
|
|
|
|
|
|
clusterids_SV = POPs; |
34103
|
0
|
|
|
|
|
|
PUTBACK; |
34104
|
0
|
|
|
|
|
|
clusterids = PDL->SvPDLV(clusterids_SV); |
34105
|
|
|
|
|
|
|
} |
34106
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34107
|
0
|
|
|
|
|
|
cdist_SV = sv_newmortal(); |
34108
|
0
|
|
|
|
|
|
cdist = PDL->null(); |
34109
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cdist_SV,cdist); |
34110
|
0
|
0
|
|
|
|
|
if (bless_stash) cdist_SV = sv_bless(cdist_SV, bless_stash); |
34111
|
|
|
|
|
|
|
} else { |
34112
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34113
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34114
|
0
|
|
|
|
|
|
PUTBACK; |
34115
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34116
|
0
|
|
|
|
|
|
SPAGAIN; |
34117
|
0
|
|
|
|
|
|
cdist_SV = POPs; |
34118
|
0
|
|
|
|
|
|
PUTBACK; |
34119
|
0
|
|
|
|
|
|
cdist = PDL->SvPDLV(cdist_SV); |
34120
|
|
|
|
|
|
|
} |
34121
|
|
|
|
|
|
|
} |
34122
|
|
|
|
|
|
|
else { |
34123
|
0
|
|
|
|
|
|
croak ("Usage: PDL::attachtonearest(data,mask,weight,rowids,cdata,cmask,clusterids,cdist,distFlag,methodFlag) (you may leave temporaries or output variables out of list)"); |
34124
|
|
|
|
|
|
|
} |
34125
|
|
|
|
|
|
|
} |
34126
|
|
|
|
|
|
|
{ |
34127
|
|
|
|
|
|
|
} |
34128
|
|
|
|
|
|
|
{ pdl_attachtonearest_struct *__privtrans; |
34129
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
34130
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
34131
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
34132
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
34133
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
34134
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
34135
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_attachtonearest_vtable; |
34136
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
34137
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
34138
|
0
|
0
|
|
|
|
|
badflag_cache = ((data->state & PDL_BADVAL) > 0) || ((mask->state & PDL_BADVAL) > 0) || ((weight->state & PDL_BADVAL) > 0) || ((rowids->state & PDL_BADVAL) > 0) || ((cdata->state & PDL_BADVAL) > 0) || ((cmask->state & PDL_BADVAL) > 0); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34139
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
34140
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {} |
34141
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
34142
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
34143
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
34144
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_N) {} |
34145
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_Q) {} |
34146
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_F) {} |
34147
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_D) {} |
34148
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_D; |
34149
|
0
|
0
|
|
|
|
|
if(PDL_D != data->datatype) { |
34150
|
0
|
|
|
|
|
|
data = PDL->get_convertedpdl(data,PDL_D); |
34151
|
0
|
0
|
|
|
|
|
}if(PDL_L != mask->datatype) { |
34152
|
0
|
|
|
|
|
|
mask = PDL->get_convertedpdl(mask,PDL_L); |
34153
|
0
|
0
|
|
|
|
|
}if(PDL_D != weight->datatype) { |
34154
|
0
|
|
|
|
|
|
weight = PDL->get_convertedpdl(weight,PDL_D); |
34155
|
0
|
0
|
|
|
|
|
}if(PDL_L != rowids->datatype) { |
34156
|
0
|
|
|
|
|
|
rowids = PDL->get_convertedpdl(rowids,PDL_L); |
34157
|
0
|
0
|
|
|
|
|
}if(PDL_D != cdata->datatype) { |
34158
|
0
|
|
|
|
|
|
cdata = PDL->get_convertedpdl(cdata,PDL_D); |
34159
|
0
|
0
|
|
|
|
|
}if(PDL_L != cmask->datatype) { |
34160
|
0
|
|
|
|
|
|
cmask = PDL->get_convertedpdl(cmask,PDL_L); |
34161
|
0
|
0
|
|
|
|
|
}if( (clusterids->state & PDL_NOMYDIMS) && clusterids->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34162
|
0
|
|
|
|
|
|
clusterids->datatype = PDL_L; |
34163
|
0
|
0
|
|
|
|
|
} else if(PDL_L != clusterids->datatype) { |
34164
|
0
|
|
|
|
|
|
clusterids = PDL->get_convertedpdl(clusterids,PDL_L); |
34165
|
0
|
0
|
|
|
|
|
}if( (cdist->state & PDL_NOMYDIMS) && cdist->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34166
|
0
|
|
|
|
|
|
cdist->datatype = PDL_D; |
34167
|
0
|
0
|
|
|
|
|
} else if(PDL_D != cdist->datatype) { |
34168
|
0
|
|
|
|
|
|
cdist = PDL->get_convertedpdl(cdist,PDL_D); |
34169
|
0
|
|
|
|
|
|
}{(__privtrans->distFlag) = malloc(strlen(distFlag)+1); strcpy(__privtrans->distFlag,distFlag);(__privtrans->methodFlag) = malloc(strlen(methodFlag)+1); strcpy(__privtrans->methodFlag,methodFlag);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = data; |
34170
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = mask; |
34171
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = weight; |
34172
|
0
|
|
|
|
|
|
__privtrans->pdls[3] = rowids; |
34173
|
0
|
|
|
|
|
|
__privtrans->pdls[4] = cdata; |
34174
|
0
|
|
|
|
|
|
__privtrans->pdls[5] = cmask; |
34175
|
0
|
|
|
|
|
|
__privtrans->pdls[6] = clusterids; |
34176
|
0
|
|
|
|
|
|
__privtrans->pdls[7] = cdist; |
34177
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
34178
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
34179
|
0
|
|
|
|
|
|
clusterids->state |= PDL_BADVAL; |
34180
|
0
|
|
|
|
|
|
cdist->state |= PDL_BADVAL; |
34181
|
|
|
|
|
|
|
} |
34182
|
0
|
0
|
|
|
|
|
if (nreturn) { |
34183
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34184
|
0
|
|
|
|
|
|
ST(0) = clusterids_SV; |
34185
|
0
|
|
|
|
|
|
ST(1) = cdist_SV; |
34186
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
34187
|
|
|
|
|
|
|
} else { |
34188
|
0
|
|
|
|
|
|
XSRETURN(0); |
34189
|
|
|
|
|
|
|
} |
34190
|
|
|
|
|
|
|
} |
34191
|
|
|
|
|
|
|
|
34192
|
|
|
|
|
|
|
void |
34193
|
|
|
|
|
|
|
checkprototypes(...) |
34194
|
|
|
|
|
|
|
PREINIT: |
34195
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
34196
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
34197
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
34198
|
0
|
|
|
|
|
|
SV *parent = 0; |
34199
|
|
|
|
|
|
|
int nreturn; |
34200
|
|
|
|
|
|
|
SV *cprotos_SV; |
34201
|
|
|
|
|
|
|
SV *otmp_SV; |
34202
|
|
|
|
|
|
|
pdl *protos; |
34203
|
|
|
|
|
|
|
pdl *cprotos; |
34204
|
|
|
|
|
|
|
pdl *otmp; |
34205
|
|
|
|
|
|
|
int nsize; |
34206
|
|
|
|
|
|
|
PPCODE: |
34207
|
|
|
|
|
|
|
{ |
34208
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
34209
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
34210
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
34211
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34212
|
0
|
|
|
|
|
|
parent = ST(0); |
34213
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
34214
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
34215
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34216
|
|
|
|
|
|
|
} |
34217
|
|
|
|
|
|
|
} |
34218
|
0
|
0
|
|
|
|
|
if (items == 4) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
34219
|
0
|
|
|
|
|
|
nreturn = 0; |
34220
|
0
|
|
|
|
|
|
protos = PDL->SvPDLV(ST(0)); |
34221
|
0
|
|
|
|
|
|
cprotos = PDL->SvPDLV(ST(1)); |
34222
|
0
|
|
|
|
|
|
otmp = PDL->SvPDLV(ST(2)); |
34223
|
0
|
0
|
|
|
|
|
nsize = (int)SvIV(ST(3)) |
34224
|
|
|
|
|
|
|
; |
34225
|
|
|
|
|
|
|
} |
34226
|
0
|
0
|
|
|
|
|
else if (items == 3) { PDL_COMMENT("all but temps on stack, read in output, create temps") nreturn = 0; |
34227
|
0
|
|
|
|
|
|
protos = PDL->SvPDLV(ST(0)); |
34228
|
0
|
|
|
|
|
|
cprotos = PDL->SvPDLV(ST(1)); |
34229
|
0
|
0
|
|
|
|
|
nsize = (int)SvIV(ST(2)) |
34230
|
|
|
|
|
|
|
; |
34231
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34232
|
0
|
|
|
|
|
|
otmp_SV = sv_newmortal(); |
34233
|
0
|
|
|
|
|
|
otmp = PDL->null(); |
34234
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(otmp_SV,otmp); |
34235
|
0
|
0
|
|
|
|
|
if (bless_stash) otmp_SV = sv_bless(otmp_SV, bless_stash); |
34236
|
|
|
|
|
|
|
} else { |
34237
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34238
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34239
|
0
|
|
|
|
|
|
PUTBACK; |
34240
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34241
|
0
|
|
|
|
|
|
SPAGAIN; |
34242
|
0
|
|
|
|
|
|
otmp_SV = POPs; |
34243
|
0
|
|
|
|
|
|
PUTBACK; |
34244
|
0
|
|
|
|
|
|
otmp = PDL->SvPDLV(otmp_SV); |
34245
|
|
|
|
|
|
|
} |
34246
|
|
|
|
|
|
|
} |
34247
|
0
|
0
|
|
|
|
|
else if (items == 2) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
34248
|
0
|
|
|
|
|
|
nreturn = 1; |
34249
|
0
|
|
|
|
|
|
protos = PDL->SvPDLV(ST(0)); |
34250
|
0
|
0
|
|
|
|
|
nsize = (int)SvIV(ST(1)) |
34251
|
|
|
|
|
|
|
; |
34252
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34253
|
0
|
|
|
|
|
|
cprotos_SV = sv_newmortal(); |
34254
|
0
|
|
|
|
|
|
cprotos = PDL->null(); |
34255
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cprotos_SV,cprotos); |
34256
|
0
|
0
|
|
|
|
|
if (bless_stash) cprotos_SV = sv_bless(cprotos_SV, bless_stash); |
34257
|
|
|
|
|
|
|
} else { |
34258
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34259
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34260
|
0
|
|
|
|
|
|
PUTBACK; |
34261
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34262
|
0
|
|
|
|
|
|
SPAGAIN; |
34263
|
0
|
|
|
|
|
|
cprotos_SV = POPs; |
34264
|
0
|
|
|
|
|
|
PUTBACK; |
34265
|
0
|
|
|
|
|
|
cprotos = PDL->SvPDLV(cprotos_SV); |
34266
|
|
|
|
|
|
|
} |
34267
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34268
|
0
|
|
|
|
|
|
otmp_SV = sv_newmortal(); |
34269
|
0
|
|
|
|
|
|
otmp = PDL->null(); |
34270
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(otmp_SV,otmp); |
34271
|
0
|
0
|
|
|
|
|
if (bless_stash) otmp_SV = sv_bless(otmp_SV, bless_stash); |
34272
|
|
|
|
|
|
|
} else { |
34273
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34274
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34275
|
0
|
|
|
|
|
|
PUTBACK; |
34276
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34277
|
0
|
|
|
|
|
|
SPAGAIN; |
34278
|
0
|
|
|
|
|
|
otmp_SV = POPs; |
34279
|
0
|
|
|
|
|
|
PUTBACK; |
34280
|
0
|
|
|
|
|
|
otmp = PDL->SvPDLV(otmp_SV); |
34281
|
|
|
|
|
|
|
} |
34282
|
|
|
|
|
|
|
} |
34283
|
|
|
|
|
|
|
else { |
34284
|
0
|
|
|
|
|
|
croak ("Usage: PDL::checkprototypes(protos,cprotos,otmp,nsize) (you may leave temporaries or output variables out of list)"); |
34285
|
|
|
|
|
|
|
} |
34286
|
|
|
|
|
|
|
} |
34287
|
|
|
|
|
|
|
{ |
34288
|
0
|
0
|
|
|
|
|
if ( protos->state & PDL_INPLACE && (cprotos != protos)) { |
|
|
0
|
|
|
|
|
|
34289
|
0
|
|
|
|
|
|
protos->state &= ~PDL_INPLACE; PDL_COMMENT("unset") |
34290
|
0
|
|
|
|
|
|
cprotos = protos; PDL_COMMENT("discard output value, leak ?") |
34291
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cprotos_SV,cprotos); |
34292
|
|
|
|
|
|
|
} |
34293
|
|
|
|
|
|
|
} |
34294
|
|
|
|
|
|
|
{ pdl_checkprototypes_struct *__privtrans; |
34295
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
34296
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
34297
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
34298
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
34299
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
34300
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
34301
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_checkprototypes_vtable; |
34302
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
34303
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
34304
|
0
|
|
|
|
|
|
badflag_cache = ((protos->state & PDL_BADVAL) > 0); |
34305
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
34306
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype < protos->datatype) { |
34307
|
0
|
|
|
|
|
|
__privtrans->__datatype = protos->datatype; |
34308
|
|
|
|
|
|
|
} |
34309
|
0
|
0
|
|
|
|
|
if(!((cprotos->state & PDL_NOMYDIMS) && |
|
|
0
|
|
|
|
|
|
34310
|
0
|
0
|
|
|
|
|
cprotos->trans == NULL) && __privtrans->__datatype < cprotos->datatype) { |
34311
|
0
|
|
|
|
|
|
__privtrans->__datatype = cprotos->datatype; |
34312
|
|
|
|
|
|
|
} |
34313
|
0
|
0
|
|
|
|
|
if(__privtrans->__datatype == PDL_B) {} |
34314
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
34315
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
34316
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
34317
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_L; |
34318
|
0
|
0
|
|
|
|
|
if(__privtrans->__datatype != protos->datatype) { |
34319
|
0
|
|
|
|
|
|
protos = PDL->get_convertedpdl(protos,__privtrans->__datatype); |
34320
|
0
|
0
|
|
|
|
|
}if( (cprotos->state & PDL_NOMYDIMS) && cprotos->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34321
|
0
|
|
|
|
|
|
cprotos->datatype = __privtrans->__datatype; |
34322
|
0
|
0
|
|
|
|
|
} else if(__privtrans->__datatype != cprotos->datatype) { |
34323
|
0
|
|
|
|
|
|
cprotos = PDL->get_convertedpdl(cprotos,__privtrans->__datatype); |
34324
|
0
|
0
|
|
|
|
|
}if( (otmp->state & PDL_NOMYDIMS) && otmp->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34325
|
0
|
|
|
|
|
|
otmp->datatype = PDL_B; |
34326
|
0
|
0
|
|
|
|
|
} else if(PDL_B != otmp->datatype) { |
34327
|
0
|
|
|
|
|
|
otmp = PDL->get_convertedpdl(otmp,PDL_B); |
34328
|
0
|
|
|
|
|
|
}{(__privtrans->nsize) = (nsize);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = protos; |
34329
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = cprotos; |
34330
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = otmp; |
34331
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
34332
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
34333
|
0
|
|
|
|
|
|
cprotos->state |= PDL_BADVAL; |
34334
|
|
|
|
|
|
|
} |
34335
|
0
|
0
|
|
|
|
|
if (nreturn) { |
34336
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34337
|
0
|
|
|
|
|
|
ST(0) = cprotos_SV; |
34338
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
34339
|
|
|
|
|
|
|
} else { |
34340
|
0
|
|
|
|
|
|
XSRETURN(0); |
34341
|
|
|
|
|
|
|
} |
34342
|
|
|
|
|
|
|
} |
34343
|
|
|
|
|
|
|
|
34344
|
|
|
|
|
|
|
void |
34345
|
|
|
|
|
|
|
checkpartitions(...) |
34346
|
|
|
|
|
|
|
PREINIT: |
34347
|
0
|
|
|
|
|
|
char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set |
34348
|
|
|
|
|
|
|
by pp_bless ? (CS) */ |
34349
|
0
|
|
|
|
|
|
HV *bless_stash = 0; |
34350
|
0
|
|
|
|
|
|
SV *parent = 0; |
34351
|
|
|
|
|
|
|
int nreturn; |
34352
|
|
|
|
|
|
|
SV *cpart_SV; |
34353
|
|
|
|
|
|
|
SV *ptmp_SV; |
34354
|
|
|
|
|
|
|
pdl *part; |
34355
|
|
|
|
|
|
|
pdl *cpart; |
34356
|
|
|
|
|
|
|
pdl *ptmp; |
34357
|
|
|
|
|
|
|
int ksize; |
34358
|
|
|
|
|
|
|
PPCODE: |
34359
|
|
|
|
|
|
|
{ |
34360
|
|
|
|
|
|
|
PDL_COMMENT("Check if you can get a package name for this input value. ") |
34361
|
|
|
|
|
|
|
PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ") |
34362
|
|
|
|
|
|
|
PDL_COMMENT("derived PDL subclass (SVt_PVHV) ") |
34363
|
0
|
0
|
|
|
|
|
if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34364
|
0
|
|
|
|
|
|
parent = ST(0); |
34365
|
0
|
0
|
|
|
|
|
if (sv_isobject(parent)){ |
34366
|
0
|
|
|
|
|
|
bless_stash = SvSTASH(SvRV(ST(0))); |
34367
|
0
|
0
|
|
|
|
|
objname = HvNAME((bless_stash)); PDL_COMMENT("The package to bless output vars into is taken from the first input var") |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34368
|
|
|
|
|
|
|
} |
34369
|
|
|
|
|
|
|
} |
34370
|
0
|
0
|
|
|
|
|
if (items == 4) { PDL_COMMENT("all variables on stack, read in output and temp vars") |
34371
|
0
|
|
|
|
|
|
nreturn = 0; |
34372
|
0
|
|
|
|
|
|
part = PDL->SvPDLV(ST(0)); |
34373
|
0
|
|
|
|
|
|
cpart = PDL->SvPDLV(ST(1)); |
34374
|
0
|
|
|
|
|
|
ptmp = PDL->SvPDLV(ST(2)); |
34375
|
0
|
0
|
|
|
|
|
ksize = (int)SvIV(ST(3)) |
34376
|
|
|
|
|
|
|
; |
34377
|
|
|
|
|
|
|
} |
34378
|
0
|
0
|
|
|
|
|
else if (items == 3) { PDL_COMMENT("all but temps on stack, read in output, create temps") nreturn = 0; |
34379
|
0
|
|
|
|
|
|
part = PDL->SvPDLV(ST(0)); |
34380
|
0
|
|
|
|
|
|
cpart = PDL->SvPDLV(ST(1)); |
34381
|
0
|
0
|
|
|
|
|
ksize = (int)SvIV(ST(2)) |
34382
|
|
|
|
|
|
|
; |
34383
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34384
|
0
|
|
|
|
|
|
ptmp_SV = sv_newmortal(); |
34385
|
0
|
|
|
|
|
|
ptmp = PDL->null(); |
34386
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(ptmp_SV,ptmp); |
34387
|
0
|
0
|
|
|
|
|
if (bless_stash) ptmp_SV = sv_bless(ptmp_SV, bless_stash); |
34388
|
|
|
|
|
|
|
} else { |
34389
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34390
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34391
|
0
|
|
|
|
|
|
PUTBACK; |
34392
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34393
|
0
|
|
|
|
|
|
SPAGAIN; |
34394
|
0
|
|
|
|
|
|
ptmp_SV = POPs; |
34395
|
0
|
|
|
|
|
|
PUTBACK; |
34396
|
0
|
|
|
|
|
|
ptmp = PDL->SvPDLV(ptmp_SV); |
34397
|
|
|
|
|
|
|
} |
34398
|
|
|
|
|
|
|
} |
34399
|
0
|
0
|
|
|
|
|
else if (items == 2) { PDL_COMMENT("only input variables on stack, create outputs and temps") |
34400
|
0
|
|
|
|
|
|
nreturn = 1; |
34401
|
0
|
|
|
|
|
|
part = PDL->SvPDLV(ST(0)); |
34402
|
0
|
0
|
|
|
|
|
ksize = (int)SvIV(ST(1)) |
34403
|
|
|
|
|
|
|
; |
34404
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34405
|
0
|
|
|
|
|
|
cpart_SV = sv_newmortal(); |
34406
|
0
|
|
|
|
|
|
cpart = PDL->null(); |
34407
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cpart_SV,cpart); |
34408
|
0
|
0
|
|
|
|
|
if (bless_stash) cpart_SV = sv_bless(cpart_SV, bless_stash); |
34409
|
|
|
|
|
|
|
} else { |
34410
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34411
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34412
|
0
|
|
|
|
|
|
PUTBACK; |
34413
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34414
|
0
|
|
|
|
|
|
SPAGAIN; |
34415
|
0
|
|
|
|
|
|
cpart_SV = POPs; |
34416
|
0
|
|
|
|
|
|
PUTBACK; |
34417
|
0
|
|
|
|
|
|
cpart = PDL->SvPDLV(cpart_SV); |
34418
|
|
|
|
|
|
|
} |
34419
|
0
|
0
|
|
|
|
|
if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL") |
34420
|
0
|
|
|
|
|
|
ptmp_SV = sv_newmortal(); |
34421
|
0
|
|
|
|
|
|
ptmp = PDL->null(); |
34422
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(ptmp_SV,ptmp); |
34423
|
0
|
0
|
|
|
|
|
if (bless_stash) ptmp_SV = sv_bless(ptmp_SV, bless_stash); |
34424
|
|
|
|
|
|
|
} else { |
34425
|
0
|
0
|
|
|
|
|
PUSHMARK(SP); |
34426
|
0
|
0
|
|
|
|
|
XPUSHs(sv_2mortal(newSVpv(objname, 0))); |
34427
|
0
|
|
|
|
|
|
PUTBACK; |
34428
|
0
|
|
|
|
|
|
perl_call_method("initialize", G_SCALAR); |
34429
|
0
|
|
|
|
|
|
SPAGAIN; |
34430
|
0
|
|
|
|
|
|
ptmp_SV = POPs; |
34431
|
0
|
|
|
|
|
|
PUTBACK; |
34432
|
0
|
|
|
|
|
|
ptmp = PDL->SvPDLV(ptmp_SV); |
34433
|
|
|
|
|
|
|
} |
34434
|
|
|
|
|
|
|
} |
34435
|
|
|
|
|
|
|
else { |
34436
|
0
|
|
|
|
|
|
croak ("Usage: PDL::checkpartitions(part,cpart,ptmp,ksize) (you may leave temporaries or output variables out of list)"); |
34437
|
|
|
|
|
|
|
} |
34438
|
|
|
|
|
|
|
} |
34439
|
|
|
|
|
|
|
{ |
34440
|
0
|
0
|
|
|
|
|
if ( part->state & PDL_INPLACE && (cpart != part)) { |
|
|
0
|
|
|
|
|
|
34441
|
0
|
|
|
|
|
|
part->state &= ~PDL_INPLACE; PDL_COMMENT("unset") |
34442
|
0
|
|
|
|
|
|
cpart = part; PDL_COMMENT("discard output value, leak ?") |
34443
|
0
|
|
|
|
|
|
PDL->SetSV_PDL(cpart_SV,cpart); |
34444
|
|
|
|
|
|
|
} |
34445
|
|
|
|
|
|
|
} |
34446
|
|
|
|
|
|
|
{ pdl_checkpartitions_struct *__privtrans; |
34447
|
0
|
|
|
|
|
|
int badflag_cache = 0; |
34448
|
0
|
|
|
|
|
|
__privtrans = malloc(sizeof(*__privtrans)); |
34449
|
0
|
|
|
|
|
|
PDL_THR_CLRMAGIC(&__privtrans->__pdlthread); |
34450
|
0
|
|
|
|
|
|
PDL_TR_SETMAGIC(__privtrans); |
34451
|
0
|
|
|
|
|
|
__privtrans->flags = 0; |
34452
|
0
|
|
|
|
|
|
__privtrans->__ddone = 0; |
34453
|
0
|
|
|
|
|
|
__privtrans->vtable = &pdl_checkpartitions_vtable; |
34454
|
0
|
|
|
|
|
|
__privtrans->freeproc = PDL->trans_mallocfreeproc; |
34455
|
0
|
|
|
|
|
|
__privtrans->bvalflag = 0; |
34456
|
0
|
|
|
|
|
|
badflag_cache = ((part->state & PDL_BADVAL) > 0); |
34457
|
0
|
0
|
|
|
|
|
if (badflag_cache) __privtrans->bvalflag = 1; |
34458
|
0
|
0
|
|
|
|
|
__privtrans->__datatype = 0;if(__privtrans->__datatype < part->datatype) { |
34459
|
0
|
|
|
|
|
|
__privtrans->__datatype = part->datatype; |
34460
|
|
|
|
|
|
|
} |
34461
|
0
|
0
|
|
|
|
|
if(!((cpart->state & PDL_NOMYDIMS) && |
|
|
0
|
|
|
|
|
|
34462
|
0
|
0
|
|
|
|
|
cpart->trans == NULL) && __privtrans->__datatype < cpart->datatype) { |
34463
|
0
|
|
|
|
|
|
__privtrans->__datatype = cpart->datatype; |
34464
|
|
|
|
|
|
|
} |
34465
|
0
|
0
|
|
|
|
|
if(!((ptmp->state & PDL_NOMYDIMS) && |
|
|
0
|
|
|
|
|
|
34466
|
0
|
0
|
|
|
|
|
ptmp->trans == NULL) && __privtrans->__datatype < ptmp->datatype) { |
34467
|
0
|
|
|
|
|
|
__privtrans->__datatype = ptmp->datatype; |
34468
|
|
|
|
|
|
|
} |
34469
|
0
|
0
|
|
|
|
|
if(__privtrans->__datatype == PDL_B) {} |
34470
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_S) {} |
34471
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_U) {} |
34472
|
0
|
0
|
|
|
|
|
else if(__privtrans->__datatype == PDL_L) {} |
34473
|
0
|
|
|
|
|
|
else __privtrans->__datatype = PDL_L; |
34474
|
0
|
0
|
|
|
|
|
if(__privtrans->__datatype != part->datatype) { |
34475
|
0
|
|
|
|
|
|
part = PDL->get_convertedpdl(part,__privtrans->__datatype); |
34476
|
0
|
0
|
|
|
|
|
}if( (cpart->state & PDL_NOMYDIMS) && cpart->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34477
|
0
|
|
|
|
|
|
cpart->datatype = __privtrans->__datatype; |
34478
|
0
|
0
|
|
|
|
|
} else if(__privtrans->__datatype != cpart->datatype) { |
34479
|
0
|
|
|
|
|
|
cpart = PDL->get_convertedpdl(cpart,__privtrans->__datatype); |
34480
|
0
|
0
|
|
|
|
|
}if( (ptmp->state & PDL_NOMYDIMS) && ptmp->trans == NULL ) { |
|
|
0
|
|
|
|
|
|
34481
|
0
|
|
|
|
|
|
ptmp->datatype = __privtrans->__datatype; |
34482
|
0
|
0
|
|
|
|
|
} else if(__privtrans->__datatype != ptmp->datatype) { |
34483
|
0
|
|
|
|
|
|
ptmp = PDL->get_convertedpdl(ptmp,__privtrans->__datatype); |
34484
|
0
|
|
|
|
|
|
}{(__privtrans->ksize) = (ksize);}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = part; |
34485
|
0
|
|
|
|
|
|
__privtrans->pdls[1] = cpart; |
34486
|
0
|
|
|
|
|
|
__privtrans->pdls[2] = ptmp; |
34487
|
0
|
|
|
|
|
|
PDL->make_trans_mutual((pdl_trans *)__privtrans); |
34488
|
0
|
0
|
|
|
|
|
if (badflag_cache) { |
34489
|
0
|
|
|
|
|
|
cpart->state |= PDL_BADVAL; |
34490
|
|
|
|
|
|
|
} |
34491
|
0
|
0
|
|
|
|
|
if (nreturn) { |
34492
|
0
|
0
|
|
|
|
|
if (nreturn - items > 0) EXTEND (SP, nreturn - items); |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34493
|
0
|
|
|
|
|
|
ST(0) = cpart_SV; |
34494
|
0
|
|
|
|
|
|
XSRETURN(nreturn); |
34495
|
|
|
|
|
|
|
} else { |
34496
|
0
|
|
|
|
|
|
XSRETURN(0); |
34497
|
|
|
|
|
|
|
} |
34498
|
|
|
|
|
|
|
} |
34499
|
|
|
|
|
|
|
|
34500
|
|
|
|
|
|
|
|
34501
|
|
|
|
|
|
|
BOOT: |
34502
|
|
|
|
|
|
|
|
34503
|
|
|
|
|
|
|
PDL_COMMENT("Get pointer to structure of core shared C routines") |
34504
|
|
|
|
|
|
|
PDL_COMMENT("make sure PDL::Core is loaded") |
34505
|
|
|
|
|
|
|
|
34506
|
9
|
|
|
|
|
|
perl_require_pv ("PDL/Core.pm"); /* make sure PDL::Core is loaded */ |
34507
|
|
|
|
|
|
|
#ifndef aTHX_ |
34508
|
|
|
|
|
|
|
#define aTHX_ |
34509
|
|
|
|
|
|
|
#endif |
34510
|
9
|
50
|
|
|
|
|
if (SvTRUE (ERRSV)) Perl_croak(aTHX_ "%s",SvPV_nolen (ERRSV)); |
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
34511
|
9
|
|
|
|
|
|
CoreSV = perl_get_sv("PDL::SHARE",FALSE); /* SV* value */ |
34512
|
9
|
50
|
|
|
|
|
if (CoreSV==NULL) |
34513
|
0
|
|
|
|
|
|
Perl_croak(aTHX_ "We require the PDL::Core module, which was not found"); |
34514
|
9
|
50
|
|
|
|
|
PDL = INT2PTR(Core*,SvIV( CoreSV )); /* Core* value */ |
34515
|
9
|
50
|
|
|
|
|
if (PDL->Version != PDL_CORE_VERSION) |
34516
|
0
|
|
|
|
|
|
Perl_croak(aTHX_ "[PDL->Version: %d PDL_CORE_VERSION: %d XS_VERSION: %s] PDL::Cluster needs to be recompiled against the newly installed PDL", PDL->Version, PDL_CORE_VERSION, XS_VERSION); |
34517
|
|
|
|
|
|
|
|
34518
|
|
|
|
|
|
|
|
34519
|
|
|
|
|
|
|
|