File Coverage

SVDLIBC.xs
Criterion Covered Total %
statement 1577 8525 18.5
branch 919 7476 12.2
condition n/a
subroutine n/a
pod n/a
total 2496 16001 15.6


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              
38             #include
39              
40             /*#define CDEBUG 1*/
41             /*#define DEBUG_CODE 1*/
42              
43             #if defined(CDEBUG) || defined(DEBUG_CODE)
44             # define SVD_VERBOSITY_DEFAULT 1
45             #else
46             # define SVD_VERBOSITY_DEFAULT 0
47             #endif
48              
49              
50             /*--------------------------------------------------------------*/
51 3           double **p2pp_dbl(int nrows, int ncols, double *p)
52             {
53             int i;
54             #ifdef CDEBUG
55             int j;
56             #endif
57             double **matrix;
58 3 50         if (!(p && nrows && ncols)) return NULL;
    50          
    50          
59 3           matrix = malloc(nrows*sizeof(double**));
60             //New(0,matrix,nrows,double*);
61 21 100         for (i=0; i < nrows; i++) {
62 18           matrix[i] = p + (i*ncols);
63             #ifdef CDEBUG
64             printf("p2pp_dbl(nr=%d,nc=%d,p=%p) : (p+%ld*%ld)=%p\n", nrows,ncols,p, i,ncols,matrix[i]);
65             for (j=0; j < ncols; j++) {
66             printf("p2pp_dbl: [i=%ld][j=%ld] : val=%g\n", i, j, matrix[i][j]);
67             }
68             #endif
69             }
70 3           return matrix;
71             }
72              
73             /*--------------------------------------------------------------*/
74 30           static void pp2pdl(int nrows, int ncols, double **pp, double *p)
75             {
76             int i,j;
77 154 100         for (i=0; i
78 922 100         for (j=0; j
79 798           p[i*ncols+j] = pp[i][j];
80             }
81             }
82 30           }
83              
84             /*--------------------------------------------------------------*/
85 0           static void pp2pdl_indx(int nrows, int ncols, __SVDLIBC_LONG **pp, __SVDLIBC_LONG *p)
86             {
87             int i,j;
88 0 0         for (i=0; i
89 0 0         for (j=0; j
90 0           p[i*ncols+j] = pp[i][j];
91             }
92             }
93 0           }
94              
95             /*--------------------------------------------------------------*/
96 10           static void svdrec2pdls(SVDRec svdr, double *up, double *sp, double *vp)
97             {
98 10           pp2pdl(svdr->Ut->rows, svdr->Ut->cols, svdr->Ut->value, up);
99 10           pp2pdl(1, svdr->d, &(svdr->S), sp);
100 10           pp2pdl(svdr->Vt->rows, svdr->Vt->cols, svdr->Vt->value, vp);
101 10           }
102              
103             /*--------------------------------------------------------------*/
104             #ifdef DEBUG_CODE
105             static void showpp_indx(const char *name, int nrows, int ncols, __SVDLIBC_LONG **pp)
106             {
107             int i,j;
108             printf("\n");
109             for (i=0; i
110             for (j=0; j
111             printf("%s[%ld/%ld][%ld/%ld] = %ld\n", name, i,nrows, j,ncols, pp[i][j]);
112             }
113             }
114             }
115             #endif
116              
117             /*--------------------------------------------------------------*/
118             #ifdef DEBUG_CODE
119             static void showpp_dbl(const char *name, int nrows, int ncols, double **pp)
120             {
121             int i,j;
122             printf("\n");
123             for (i=0; i
124             for (j=0; j
125             printf("%s[%ld/%ld][%ld/%ld] = %g\n", name, i,nrows, j,ncols, pp[i][j]);
126             }
127             }
128             }
129             #endif
130              
131             typedef struct pdl__svdccsencode_struct {
132             PDL_TRANS_START(4);
133             pdl_thread __pdlthread;PDL_Indx __inc_a_n;PDL_Indx __inc_a_m;PDL_Indx __inc_ptr_n1;PDL_Indx __inc_rowids_nnz;PDL_Indx __inc_nzvals_nnz;PDL_Indx __nnz_size;PDL_Indx __n1_size;PDL_Indx __m_size;PDL_Indx __n_size;
134            
135             char __ddone; PDL_COMMENT("Dims done")
136             } pdl__svdccsencode_struct;
137              
138 0           void pdl__svdccsencode_redodims(pdl_trans *__tr ) {
139             int __dim;
140 0           pdl__svdccsencode_struct *__privtrans = (pdl__svdccsencode_struct *) __tr;
141            
142             {
143             PDL_Indx __creating[4];
144 0           __privtrans->__nnz_size = -1;
145 0           __privtrans->__n1_size = -1;
146 0           __privtrans->__m_size = -1;
147 0           __privtrans->__n_size = -1;
148 0           __creating[0] = 0;
149 0 0         __creating[1] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[1]);
    0          
150 0 0         __creating[2] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[2]);
    0          
151 0 0         __creating[3] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[3]);
    0          
152             {
153             {PDL_COMMENT("Start generic loop")
154              
155 0           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
156 0           } break; case PDL_B: {
157 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
158 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
159              
160 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
161 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
162              
163 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
164 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
165              
166 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
167 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
168              
169 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
170 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
171 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
172 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
173 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
174              
175             PDL_COMMENT("none")
176 0           } } break; case PDL_S: {
177 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
178 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
179              
180 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
181 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
182              
183 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
184 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
185              
186 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
187 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
188              
189 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
190 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
191 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
192 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
193 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
194              
195             PDL_COMMENT("none")
196 0           } } break; case PDL_US: {
197 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
198 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
199              
200 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
201 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
202              
203 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
204 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
205              
206 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
207 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
208              
209 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
210 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
211 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
212 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
213 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
214              
215             PDL_COMMENT("none")
216 0           } } break; case PDL_L: {
217 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
218 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
219              
220 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
221 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
222              
223 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
224 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
225              
226 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
227 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
228              
229 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
230 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
231 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
232 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
233 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
234              
235             PDL_COMMENT("none")
236 0           } } break; case PDL_IND: {
237 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
238 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
239              
240 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
241 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
242              
243 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
244 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
245              
246 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
247 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
248              
249 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
250 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
251 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
252 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
253 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
254              
255             PDL_COMMENT("none")
256 0           } } break; case PDL_LL: {
257 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
258 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
259              
260 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
261 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
262              
263 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
264 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
265              
266 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
267 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
268              
269 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
270 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
271 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
272 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
273 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
274              
275             PDL_COMMENT("none")
276 0           } } break; case PDL_F: {
277 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
278 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
279              
280 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
281 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
282              
283 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
284 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
285              
286 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
287 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
288              
289 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
290 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
291 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
292 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
293 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
294              
295             PDL_COMMENT("none")
296 0           } } break; case PDL_D: {
297 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
298 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
299              
300 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
301 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
302              
303 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
304 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
305              
306 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
307 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
308              
309 0           {register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
310 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
311 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
312 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
313 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
314              
315             PDL_COMMENT("none")
316 0           } break;}
317 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
318             }
319             }
320             {
321             static char *__parnames[] = {"a","ptr","rowids","nzvals"};
322             static PDL_Indx __realdims[] = {2,1,1,1};
323             static char __funcname[] = "PDL::SVDLIBC::_svdccsencode";
324             static pdl_errorinfo __einfo = {
325             __funcname, __parnames, 4
326             };
327            
328 0           PDL->initthreadstruct(2,__privtrans->pdls,
329             __realdims,__creating,4,
330             &__einfo,&(__privtrans->__pdlthread),
331 0           __privtrans->vtable->per_pdl_flags,
332             0 );
333             }
334 0 0         if(((__privtrans->pdls[0]))->ndims < 2) {
335 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
336 0 0         if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
337             }
338 0 0         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) {
    0          
    0          
339 0           __privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0];
340 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
341 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
342 0           PDL->pdl_barf("Error in _svdccsencode:" "Wrong dims\n");
343             }
344             }
345 0 0         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size == 1)) {
    0          
    0          
346 0           __privtrans->__m_size = ((__privtrans->pdls[0]))->dims[1];
347 0 0         } else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size != ((__privtrans->pdls[0]))->dims[1]) {
    0          
348 0 0         if(((__privtrans->pdls[0]))->dims[1] != 1) {
349 0           PDL->pdl_barf("Error in _svdccsencode:" "Wrong dims\n");
350             }
351             }
352 0           PDL->make_physical(((__privtrans->pdls[0])));
353 0 0         if(!__creating[1]) {
354 0 0         if(((__privtrans->pdls[1]))->ndims < 1) {
355 0 0         if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__n1_size <= 1) __privtrans->__n1_size = 1;
    0          
356             }
357 0 0         if(__privtrans->__n1_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n1_size == 1)) {
    0          
    0          
358 0           __privtrans->__n1_size = ((__privtrans->pdls[1]))->dims[0];
359 0 0         } else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__n1_size != ((__privtrans->pdls[1]))->dims[0]) {
    0          
360 0 0         if(((__privtrans->pdls[1]))->dims[0] != 1) {
361 0           PDL->pdl_barf("Error in _svdccsencode:" "Wrong dims\n");
362             }
363             }
364 0           PDL->make_physical(((__privtrans->pdls[1])));
365             } else {
366 0           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n1_size;
367 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,1,dims,0);
368 0 0         }if(!__creating[2]) {
369 0 0         if(((__privtrans->pdls[2]))->ndims < 1) {
370 0 0         if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
371             }
372 0 0         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
373 0           __privtrans->__nnz_size = ((__privtrans->pdls[2]))->dims[0];
374 0 0         } else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[2]))->dims[0]) {
    0          
375 0 0         if(((__privtrans->pdls[2]))->dims[0] != 1) {
376 0           PDL->pdl_barf("Error in _svdccsencode:" "Wrong dims\n");
377             }
378             }
379 0           PDL->make_physical(((__privtrans->pdls[2])));
380             } else {
381 0           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nnz_size;
382 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,2,dims,0);
383 0 0         }if(!__creating[3]) {
384 0 0         if(((__privtrans->pdls[3]))->ndims < 1) {
385 0 0         if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
386             }
387 0 0         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
388 0           __privtrans->__nnz_size = ((__privtrans->pdls[3]))->dims[0];
389 0 0         } else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[3]))->dims[0]) {
    0          
390 0 0         if(((__privtrans->pdls[3]))->dims[0] != 1) {
391 0           PDL->pdl_barf("Error in _svdccsencode:" "Wrong dims\n");
392             }
393             }
394 0           PDL->make_physical(((__privtrans->pdls[3])));
395             } else {
396 0           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nnz_size;
397 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,3,dims,0);
398             }
399             { PDL_COMMENT("convenience block")
400 0           void *hdrp = NULL;
401 0           char propagate_hdrcpy = 0;
402 0           SV *hdr_copy = NULL;
403 0 0         if(!hdrp &&
    0          
404 0 0         __privtrans->pdls[0]->hdrsv &&
405 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
406             ) {
407 0           hdrp = __privtrans->pdls[0]->hdrsv;
408 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
409             }
410 0 0         if(!hdrp &&
    0          
411 0 0         !__creating[1] &&
412 0 0         __privtrans->pdls[1]->hdrsv &&
413 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
414             ) {
415 0           hdrp = __privtrans->pdls[1]->hdrsv;
416 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
417             }
418 0 0         if(!hdrp &&
    0          
419 0 0         !__creating[2] &&
420 0 0         __privtrans->pdls[2]->hdrsv &&
421 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
422             ) {
423 0           hdrp = __privtrans->pdls[2]->hdrsv;
424 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
425             }
426 0 0         if(!hdrp &&
    0          
427 0 0         !__creating[3] &&
428 0 0         __privtrans->pdls[3]->hdrsv &&
429 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
430             ) {
431 0           hdrp = __privtrans->pdls[3]->hdrsv;
432 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
433             }
434 0 0         if (hdrp) {
435 0 0         if(hdrp == &PL_sv_undef)
436 0           hdr_copy = &PL_sv_undef;
437             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
438             int count;
439             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
440 0           dSP;
441 0           ENTER ;
442 0           SAVETMPS ;
443 0 0         PUSHMARK(SP) ;
444 0 0         XPUSHs( hdrp );
445 0           PUTBACK ;
446 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
447 0           SPAGAIN ;
448 0 0         if(count != 1)
449 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
450              
451 0           hdr_copy = (SV *)POPs;
452              
453 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
454 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
455             }
456              
457 0 0         FREETMPS ;
458 0           LEAVE ;
459              
460              
461             } PDL_COMMENT("end of callback block")
462              
463 0 0         if ( __privtrans->pdls[1]->hdrsv != hdrp ){
464 0 0         if( __privtrans->pdls[1]->hdrsv && __privtrans->pdls[1]->hdrsv != &PL_sv_undef)
    0          
465 0           (void)SvREFCNT_dec( __privtrans->pdls[1]->hdrsv );
466 0 0         if( hdr_copy != &PL_sv_undef )
467 0           (void)SvREFCNT_inc(hdr_copy);
468 0           __privtrans->pdls[1]->hdrsv = hdr_copy;
469             }
470 0 0         if(propagate_hdrcpy)
471 0           __privtrans->pdls[1]->state |= PDL_HDRCPY;
472 0 0         if ( __privtrans->pdls[2]->hdrsv != hdrp ){
473 0 0         if( __privtrans->pdls[2]->hdrsv && __privtrans->pdls[2]->hdrsv != &PL_sv_undef)
    0          
474 0           (void)SvREFCNT_dec( __privtrans->pdls[2]->hdrsv );
475 0 0         if( hdr_copy != &PL_sv_undef )
476 0           (void)SvREFCNT_inc(hdr_copy);
477 0           __privtrans->pdls[2]->hdrsv = hdr_copy;
478             }
479 0 0         if(propagate_hdrcpy)
480 0           __privtrans->pdls[2]->state |= PDL_HDRCPY;
481 0 0         if ( __privtrans->pdls[3]->hdrsv != hdrp ){
482 0 0         if( __privtrans->pdls[3]->hdrsv && __privtrans->pdls[3]->hdrsv != &PL_sv_undef)
    0          
483 0           (void)SvREFCNT_dec( __privtrans->pdls[3]->hdrsv );
484 0 0         if( hdr_copy != &PL_sv_undef )
485 0           (void)SvREFCNT_inc(hdr_copy);
486 0           __privtrans->pdls[3]->hdrsv = hdr_copy;
487             }
488 0 0         if(propagate_hdrcpy)
489 0           __privtrans->pdls[3]->state |= PDL_HDRCPY;
490              
491 0 0         if(hdr_copy != &PL_sv_undef)
492 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
493             } PDL_COMMENT("end of if(hdrp) block")
494             } PDL_COMMENT("end of conv. block")
495 0 0         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    0          
496 0           __privtrans->__inc_a_n = 0; else
497 0 0         __privtrans->__inc_a_n = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1)
    0          
498 0           __privtrans->__inc_a_m = 0; else
499 0 0         __privtrans->__inc_a_m = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1)
    0          
500 0           __privtrans->__inc_ptr_n1 = 0; else
501 0 0         __privtrans->__inc_ptr_n1 = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1)
    0          
502 0           __privtrans->__inc_rowids_nnz = 0; else
503 0 0         __privtrans->__inc_rowids_nnz = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1)
    0          
504 0           __privtrans->__inc_nzvals_nnz = 0; else
505 0           __privtrans->__inc_nzvals_nnz = __privtrans->pdls[3]->dimincs[0]; __privtrans->__ddone = 1;
506             }
507 0           }
508            
509              
510 0           pdl_trans * pdl__svdccsencode_copy(pdl_trans *__tr ) {
511             int __dim;
512 0           pdl__svdccsencode_struct *__privtrans = (pdl__svdccsencode_struct *) __tr;
513            
514             {
515 0           pdl__svdccsencode_struct *__copy = malloc(sizeof(pdl__svdccsencode_struct));
516 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
517 0           __copy->has_badvalue = __privtrans->has_badvalue;
518 0           __copy->badvalue = __privtrans->badvalue;
519 0           __copy->flags = __privtrans->flags;
520 0           __copy->vtable = __privtrans->vtable;
521 0           __copy->__datatype = __privtrans->__datatype;
522 0           __copy->freeproc = NULL;
523 0           __copy->__ddone = __privtrans->__ddone;
524             {int i;
525 0 0         for(i=0; i<__copy->vtable->npdls; i++)
526 0           __copy->pdls[i] = __privtrans->pdls[i];
527             }
528            
529 0 0         if(__copy->__ddone) {
530 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_a_n=__copy->__inc_a_n;__privtrans->__inc_a_m=__copy->__inc_a_m;__privtrans->__inc_ptr_n1=__copy->__inc_ptr_n1;__privtrans->__inc_rowids_nnz=__copy->__inc_rowids_nnz;__privtrans->__inc_nzvals_nnz=__copy->__inc_nzvals_nnz;__copy->__nnz_size=__privtrans->__nnz_size;__copy->__n1_size=__privtrans->__n1_size;__copy->__m_size=__privtrans->__m_size;__copy->__n_size=__privtrans->__n_size;
531             }
532 0           return (pdl_trans*)__copy;
533             }
534             }
535            
536              
537 0           void pdl__svdccsencode_readdata(pdl_trans *__tr ) {
538             int __dim;
539 0           pdl__svdccsencode_struct *__privtrans = (pdl__svdccsencode_struct *) __tr;
540            
541             {
542             {PDL_COMMENT("Start generic loop")
543              
544 0           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
545 0           } break; case PDL_B: {
546 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
547 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
548              
549 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
550 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
551              
552 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
553 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
554              
555 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
556 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
557              
558              
559             PDL_COMMENT("THREADLOOPBEGIN")
560 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
561 0           do { register PDL_Indx __tind1=0,__tind2=0;
562 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
563 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
564 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
565 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
566 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
567 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
568 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
569 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
570 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
571 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
572 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
573 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
574 0           a_datap += __offsp[0];
575 0           ptr_datap += __offsp[1];
576 0           rowids_datap += __offsp[2];
577 0           nzvals_datap += __offsp[3];
578 0 0         for( __tind2 = 0 ;
579             __tind2 < __tdims1 ;
580 0           __tind2++
581 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
582 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
583 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
584 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
585             )
586             {
587 0 0         for( __tind1 = 0 ;
588             __tind1 < __tdims0 ;
589 0           __tind1++
590 0           ,a_datap += __tinc0_0
591 0           ,ptr_datap += __tinc0_1
592 0           ,rowids_datap += __tinc0_2
593 0           ,nzvals_datap += __tinc0_3
594             )
595 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
596 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
597 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
598 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
599 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
600              
601              
602             struct dmat dm;
603             SMat sm;
604 0           dm.rows = __privtrans->__m_size;
605 0           dm.cols = __privtrans->__n_size;
606              
607             /*printf("p2pp_dbl()\n");*/
608 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
609              
610             /*printf("svdConvertDtoS()\n");*/
611 0           sm = svdConvertDtoS(&dm);
612              
613             /*printf("pp2pdl()\n");*/
614 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
615 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
616 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
617              
618             /*-- cleanup --*/
619             /*printf("cleanup()\n");*/
620 0 0         if (dm.value) free(dm.value);
621 0 0         if (sm) svdFreeSMat(sm);
622              
623             }
624             PDL_COMMENT("THREADLOOPEND")
625             }
626             }
627 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
628 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
629 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
630 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
631 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
632 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
633 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
634              
635 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
636 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
637              
638 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
639 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
640              
641 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
642 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
643              
644              
645             PDL_COMMENT("THREADLOOPBEGIN")
646 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
647 0           do { register PDL_Indx __tind1=0,__tind2=0;
648 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
649 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
650 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
651 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
652 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
653 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
654 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
655 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
656 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
657 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
658 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
659 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
660 0           a_datap += __offsp[0];
661 0           ptr_datap += __offsp[1];
662 0           rowids_datap += __offsp[2];
663 0           nzvals_datap += __offsp[3];
664 0 0         for( __tind2 = 0 ;
665             __tind2 < __tdims1 ;
666 0           __tind2++
667 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
668 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
669 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
670 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
671             )
672             {
673 0 0         for( __tind1 = 0 ;
674             __tind1 < __tdims0 ;
675 0           __tind1++
676 0           ,a_datap += __tinc0_0
677 0           ,ptr_datap += __tinc0_1
678 0           ,rowids_datap += __tinc0_2
679 0           ,nzvals_datap += __tinc0_3
680             )
681 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
682 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
683 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
684 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
685 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
686              
687              
688             struct dmat dm;
689             SMat sm;
690 0           dm.rows = __privtrans->__m_size;
691 0           dm.cols = __privtrans->__n_size;
692              
693             /*printf("p2pp_dbl()\n");*/
694 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
695              
696             /*printf("svdConvertDtoS()\n");*/
697 0           sm = svdConvertDtoS(&dm);
698              
699             /*printf("pp2pdl()\n");*/
700 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
701 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
702 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
703              
704             /*-- cleanup --*/
705             /*printf("cleanup()\n");*/
706 0 0         if (dm.value) free(dm.value);
707 0 0         if (sm) svdFreeSMat(sm);
708              
709             }
710             PDL_COMMENT("THREADLOOPEND")
711             }
712             }
713 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
714 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
715 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
716 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
717 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
718 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
719 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
720              
721 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
722 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
723              
724 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
725 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
726              
727 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
728 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
729              
730              
731             PDL_COMMENT("THREADLOOPBEGIN")
732 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
733 0           do { register PDL_Indx __tind1=0,__tind2=0;
734 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
735 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
736 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
737 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
738 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
739 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
740 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
741 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
742 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
743 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
744 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
745 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
746 0           a_datap += __offsp[0];
747 0           ptr_datap += __offsp[1];
748 0           rowids_datap += __offsp[2];
749 0           nzvals_datap += __offsp[3];
750 0 0         for( __tind2 = 0 ;
751             __tind2 < __tdims1 ;
752 0           __tind2++
753 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
754 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
755 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
756 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
757             )
758             {
759 0 0         for( __tind1 = 0 ;
760             __tind1 < __tdims0 ;
761 0           __tind1++
762 0           ,a_datap += __tinc0_0
763 0           ,ptr_datap += __tinc0_1
764 0           ,rowids_datap += __tinc0_2
765 0           ,nzvals_datap += __tinc0_3
766             )
767 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
768 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
769 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
770 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
771 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
772              
773              
774             struct dmat dm;
775             SMat sm;
776 0           dm.rows = __privtrans->__m_size;
777 0           dm.cols = __privtrans->__n_size;
778              
779             /*printf("p2pp_dbl()\n");*/
780 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
781              
782             /*printf("svdConvertDtoS()\n");*/
783 0           sm = svdConvertDtoS(&dm);
784              
785             /*printf("pp2pdl()\n");*/
786 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
787 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
788 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
789              
790             /*-- cleanup --*/
791             /*printf("cleanup()\n");*/
792 0 0         if (dm.value) free(dm.value);
793 0 0         if (sm) svdFreeSMat(sm);
794              
795             }
796             PDL_COMMENT("THREADLOOPEND")
797             }
798             }
799 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
800 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
801 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
802 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
803 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
804 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
805 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
806              
807 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
808 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
809              
810 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
811 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
812              
813 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
814 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
815              
816              
817             PDL_COMMENT("THREADLOOPBEGIN")
818 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
819 0           do { register PDL_Indx __tind1=0,__tind2=0;
820 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
821 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
822 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
823 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
824 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
825 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
826 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
827 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
828 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
829 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
830 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
831 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
832 0           a_datap += __offsp[0];
833 0           ptr_datap += __offsp[1];
834 0           rowids_datap += __offsp[2];
835 0           nzvals_datap += __offsp[3];
836 0 0         for( __tind2 = 0 ;
837             __tind2 < __tdims1 ;
838 0           __tind2++
839 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
840 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
841 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
842 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
843             )
844             {
845 0 0         for( __tind1 = 0 ;
846             __tind1 < __tdims0 ;
847 0           __tind1++
848 0           ,a_datap += __tinc0_0
849 0           ,ptr_datap += __tinc0_1
850 0           ,rowids_datap += __tinc0_2
851 0           ,nzvals_datap += __tinc0_3
852             )
853 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
854 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
855 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
856 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
857 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
858              
859              
860             struct dmat dm;
861             SMat sm;
862 0           dm.rows = __privtrans->__m_size;
863 0           dm.cols = __privtrans->__n_size;
864              
865             /*printf("p2pp_dbl()\n");*/
866 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
867              
868             /*printf("svdConvertDtoS()\n");*/
869 0           sm = svdConvertDtoS(&dm);
870              
871             /*printf("pp2pdl()\n");*/
872 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
873 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
874 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
875              
876             /*-- cleanup --*/
877             /*printf("cleanup()\n");*/
878 0 0         if (dm.value) free(dm.value);
879 0 0         if (sm) svdFreeSMat(sm);
880              
881             }
882             PDL_COMMENT("THREADLOOPEND")
883             }
884             }
885 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
886 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
887 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
888 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
889 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
890 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
891 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
892              
893 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
894 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
895              
896 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
897 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
898              
899 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
900 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
901              
902              
903             PDL_COMMENT("THREADLOOPBEGIN")
904 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
905 0           do { register PDL_Indx __tind1=0,__tind2=0;
906 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
907 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
908 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
909 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
910 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
911 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
912 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
913 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
914 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
915 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
916 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
917 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
918 0           a_datap += __offsp[0];
919 0           ptr_datap += __offsp[1];
920 0           rowids_datap += __offsp[2];
921 0           nzvals_datap += __offsp[3];
922 0 0         for( __tind2 = 0 ;
923             __tind2 < __tdims1 ;
924 0           __tind2++
925 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
926 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
927 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
928 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
929             )
930             {
931 0 0         for( __tind1 = 0 ;
932             __tind1 < __tdims0 ;
933 0           __tind1++
934 0           ,a_datap += __tinc0_0
935 0           ,ptr_datap += __tinc0_1
936 0           ,rowids_datap += __tinc0_2
937 0           ,nzvals_datap += __tinc0_3
938             )
939 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
940 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
941 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
942 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
943 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
944              
945              
946             struct dmat dm;
947             SMat sm;
948 0           dm.rows = __privtrans->__m_size;
949 0           dm.cols = __privtrans->__n_size;
950              
951             /*printf("p2pp_dbl()\n");*/
952 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
953              
954             /*printf("svdConvertDtoS()\n");*/
955 0           sm = svdConvertDtoS(&dm);
956              
957             /*printf("pp2pdl()\n");*/
958 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
959 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
960 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
961              
962             /*-- cleanup --*/
963             /*printf("cleanup()\n");*/
964 0 0         if (dm.value) free(dm.value);
965 0 0         if (sm) svdFreeSMat(sm);
966              
967             }
968             PDL_COMMENT("THREADLOOPEND")
969             }
970             }
971 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
972 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
973 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
974 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
975 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
976 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
977 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
978              
979 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
980 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
981              
982 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
983 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
984              
985 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
986 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
987              
988              
989             PDL_COMMENT("THREADLOOPBEGIN")
990 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
991 0           do { register PDL_Indx __tind1=0,__tind2=0;
992 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
993 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
994 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
995 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
996 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
997 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
998 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
999 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
1000 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
1001 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
1002 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
1003 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
1004 0           a_datap += __offsp[0];
1005 0           ptr_datap += __offsp[1];
1006 0           rowids_datap += __offsp[2];
1007 0           nzvals_datap += __offsp[3];
1008 0 0         for( __tind2 = 0 ;
1009             __tind2 < __tdims1 ;
1010 0           __tind2++
1011 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
1012 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
1013 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
1014 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
1015             )
1016             {
1017 0 0         for( __tind1 = 0 ;
1018             __tind1 < __tdims0 ;
1019 0           __tind1++
1020 0           ,a_datap += __tinc0_0
1021 0           ,ptr_datap += __tinc0_1
1022 0           ,rowids_datap += __tinc0_2
1023 0           ,nzvals_datap += __tinc0_3
1024             )
1025 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1026 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1027 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
1028 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
1029 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
1030              
1031              
1032             struct dmat dm;
1033             SMat sm;
1034 0           dm.rows = __privtrans->__m_size;
1035 0           dm.cols = __privtrans->__n_size;
1036              
1037             /*printf("p2pp_dbl()\n");*/
1038 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
1039              
1040             /*printf("svdConvertDtoS()\n");*/
1041 0           sm = svdConvertDtoS(&dm);
1042              
1043             /*printf("pp2pdl()\n");*/
1044 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
1045 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
1046 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
1047              
1048             /*-- cleanup --*/
1049             /*printf("cleanup()\n");*/
1050 0 0         if (dm.value) free(dm.value);
1051 0 0         if (sm) svdFreeSMat(sm);
1052              
1053             }
1054             PDL_COMMENT("THREADLOOPEND")
1055             }
1056             }
1057 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
1058 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
1059 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
1060 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
1061 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
1062 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1063 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
1064              
1065 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1066 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1067              
1068 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1069 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
1070              
1071 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1072 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
1073              
1074              
1075             PDL_COMMENT("THREADLOOPBEGIN")
1076 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
1077 0           do { register PDL_Indx __tind1=0,__tind2=0;
1078 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
1079 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
1080 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
1081 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
1082 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
1083 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
1084 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
1085 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
1086 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
1087 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
1088 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
1089 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
1090 0           a_datap += __offsp[0];
1091 0           ptr_datap += __offsp[1];
1092 0           rowids_datap += __offsp[2];
1093 0           nzvals_datap += __offsp[3];
1094 0 0         for( __tind2 = 0 ;
1095             __tind2 < __tdims1 ;
1096 0           __tind2++
1097 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
1098 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
1099 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
1100 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
1101             )
1102             {
1103 0 0         for( __tind1 = 0 ;
1104             __tind1 < __tdims0 ;
1105 0           __tind1++
1106 0           ,a_datap += __tinc0_0
1107 0           ,ptr_datap += __tinc0_1
1108 0           ,rowids_datap += __tinc0_2
1109 0           ,nzvals_datap += __tinc0_3
1110             )
1111 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1112 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1113 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
1114 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
1115 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
1116              
1117              
1118             struct dmat dm;
1119             SMat sm;
1120 0           dm.rows = __privtrans->__m_size;
1121 0           dm.cols = __privtrans->__n_size;
1122              
1123             /*printf("p2pp_dbl()\n");*/
1124 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
1125              
1126             /*printf("svdConvertDtoS()\n");*/
1127 0           sm = svdConvertDtoS(&dm);
1128              
1129             /*printf("pp2pdl()\n");*/
1130 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
1131 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
1132 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
1133              
1134             /*-- cleanup --*/
1135             /*printf("cleanup()\n");*/
1136 0 0         if (dm.value) free(dm.value);
1137 0 0         if (sm) svdFreeSMat(sm);
1138              
1139             }
1140             PDL_COMMENT("THREADLOOPEND")
1141             }
1142             }
1143 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
1144 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
1145 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
1146 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
1147 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
1148 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1149 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
1150              
1151 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1152 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1153              
1154 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1155 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
1156              
1157 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1158 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
1159              
1160              
1161             PDL_COMMENT("THREADLOOPBEGIN")
1162 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
1163 0           do { register PDL_Indx __tind1=0,__tind2=0;
1164 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
1165 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
1166 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
1167 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
1168 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
1169 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
1170 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
1171 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
1172 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
1173 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
1174 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
1175 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
1176 0           a_datap += __offsp[0];
1177 0           ptr_datap += __offsp[1];
1178 0           rowids_datap += __offsp[2];
1179 0           nzvals_datap += __offsp[3];
1180 0 0         for( __tind2 = 0 ;
1181             __tind2 < __tdims1 ;
1182 0           __tind2++
1183 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
1184 0           ,ptr_datap += __tinc1_1 - __tinc0_1 * __tdims0
1185 0           ,rowids_datap += __tinc1_2 - __tinc0_2 * __tdims0
1186 0           ,nzvals_datap += __tinc1_3 - __tinc0_3 * __tdims0
1187             )
1188             {
1189 0 0         for( __tind1 = 0 ;
1190             __tind1 < __tdims0 ;
1191 0           __tind1++
1192 0           ,a_datap += __tinc0_0
1193 0           ,ptr_datap += __tinc0_1
1194 0           ,rowids_datap += __tinc0_2
1195 0           ,nzvals_datap += __tinc0_3
1196             )
1197 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1198 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1199 0           register PDL_Indx __inc_ptr_n1 = __privtrans->__inc_ptr_n1;
1200 0           register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
1201 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
1202              
1203              
1204             struct dmat dm;
1205             SMat sm;
1206 0           dm.rows = __privtrans->__m_size;
1207 0           dm.cols = __privtrans->__n_size;
1208              
1209             /*printf("p2pp_dbl()\n");*/
1210 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
1211              
1212             /*printf("svdConvertDtoS()\n");*/
1213 0           sm = svdConvertDtoS(&dm);
1214              
1215             /*printf("pp2pdl()\n");*/
1216 0           pp2pdl_indx(1, __privtrans->__n_size+1, &sm->pointr, (__SVDLIBC_LONG *) ptr_datap);
1217 0           pp2pdl_indx(1, sm->vals, &sm->rowind, (__SVDLIBC_LONG *) rowids_datap);
1218 0           pp2pdl (1, sm->vals, &sm->value, (double *) nzvals_datap);
1219              
1220             /*-- cleanup --*/
1221             /*printf("cleanup()\n");*/
1222 0 0         if (dm.value) free(dm.value);
1223 0 0         if (sm) svdFreeSMat(sm);
1224              
1225             }
1226             PDL_COMMENT("THREADLOOPEND")
1227             }
1228             }
1229 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
1230 0           ptr_datap -= __tinc1_1 * __tdims1 + __offsp[1];
1231 0           rowids_datap -= __tinc1_2 * __tdims1 + __offsp[2];
1232 0           nzvals_datap -= __tinc1_3 * __tdims1 + __offsp[3];
1233 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
1234 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
1235             }
1236             }
1237             }
1238            
1239              
1240              
1241              
1242 0           void pdl__svdccsencode_free(pdl_trans *__tr ) {
1243             int __dim;
1244 0           pdl__svdccsencode_struct *__privtrans = (pdl__svdccsencode_struct *) __tr;
1245            
1246             {
1247            
1248 0           PDL_TR_CLRMAGIC(__privtrans);
1249            
1250 0 0         if(__privtrans->__ddone) {
1251 0           PDL->freethreadloop(&(__privtrans->__pdlthread));
1252             ;;;;;;;;;;
1253             }
1254            
1255             }
1256 0           }
1257            
1258              
1259              
1260              
1261             static char pdl__svdccsencode_vtable_flags[] =
1262             { 0,0,0,0};
1263             pdl_transvtable pdl__svdccsencode_vtable = {
1264             0,0, 1, 4, pdl__svdccsencode_vtable_flags,
1265             pdl__svdccsencode_redodims, pdl__svdccsencode_readdata, NULL,
1266             pdl__svdccsencode_free,NULL,NULL,pdl__svdccsencode_copy,
1267             sizeof(pdl__svdccsencode_struct),"pdl__svdccsencode_vtable"
1268             };
1269              
1270             typedef struct pdl_svdlas2_struct {
1271             PDL_TRANS_START(10);
1272             pdl_thread __pdlthread;PDL_Indx __inc_ptr_nplus1;PDL_Indx __inc_rowids_nnz;PDL_Indx __inc_nzvals_nnz;PDL_Indx __inc_end_2;PDL_Indx __inc_ut_m;PDL_Indx __inc_ut_d;PDL_Indx __inc_s_d;PDL_Indx __inc_vt_n;PDL_Indx __inc_vt_d;PDL_Indx __d_size;PDL_Indx __m_size;PDL_Indx __n_size;PDL_Indx __nplus1_size;PDL_Indx __nnz_size;PDL_Indx __2_size;
1273            
1274             char __ddone; PDL_COMMENT("Dims done")
1275             } pdl_svdlas2_struct;
1276              
1277 3           void pdl_svdlas2_redodims(pdl_trans *__tr ) {
1278             int __dim;
1279 3           pdl_svdlas2_struct *__privtrans = (pdl_svdlas2_struct *) __tr;
1280            
1281             {
1282             PDL_Indx __creating[10];
1283 3           __privtrans->__d_size = -1;
1284 3           __privtrans->__m_size = -1;
1285 3           __privtrans->__n_size = -1;
1286 3           __privtrans->__nplus1_size = -1;
1287 3           __privtrans->__nnz_size = -1;
1288 3           __privtrans->__2_size = -1;
1289 3           __creating[0] = 0;
1290 3           __creating[1] = 0;
1291 3           __creating[2] = 0;
1292 3           __creating[3] = 0;
1293 3           __creating[4] = 0;
1294 3           __creating[5] = 0;
1295 3           __creating[6] = 0;
1296 3 50         __creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]);
    0          
1297 3 50         __creating[8] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[8]);
    0          
1298 3 50         __creating[9] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[9]);
    0          
1299             {
1300             {PDL_COMMENT("Start generic loop")
1301              
1302 3           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
1303 0           } break; case PDL_B: {
1304 3 50         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1305 3           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1306              
1307 3 50         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1308 3           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1309              
1310 3 50         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1311 3           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1312              
1313 3 50         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1314 3           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1315              
1316 3 50         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1317 3           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1318              
1319 3 50         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1320 3           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1321              
1322 3 50         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1323 3           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1324              
1325 3 50         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1326 3           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1327              
1328 3 50         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1329 3           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1330              
1331 3 50         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1332 3           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1333              
1334 3           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1335 3           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1336 3           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1337 3           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1338 3           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1339 3           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1340 3           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1341 3           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1342 3           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1343              
1344             PDL_COMMENT("none")
1345 3           } } break; case PDL_S: {
1346 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1347 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1348              
1349 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1350 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1351              
1352 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1353 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1354              
1355 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1356 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1357              
1358 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1359 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1360              
1361 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1362 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1363              
1364 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1365 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1366              
1367 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1368 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1369              
1370 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1371 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1372              
1373 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1374 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1375              
1376 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1377 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1378 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1379 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1380 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1381 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1382 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1383 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1384 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1385              
1386             PDL_COMMENT("none")
1387 0           } } break; case PDL_US: {
1388 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1389 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1390              
1391 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1392 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1393              
1394 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1395 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1396              
1397 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1398 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1399              
1400 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1401 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1402              
1403 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1404 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1405              
1406 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1407 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1408              
1409 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1410 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1411              
1412 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1413 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1414              
1415 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1416 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1417              
1418 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1419 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1420 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1421 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1422 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1423 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1424 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1425 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1426 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1427              
1428             PDL_COMMENT("none")
1429 0           } } break; case PDL_L: {
1430 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1431 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1432              
1433 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1434 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1435              
1436 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1437 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1438              
1439 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1440 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1441              
1442 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1443 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1444              
1445 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1446 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1447              
1448 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1449 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1450              
1451 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1452 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1453              
1454 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1455 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1456              
1457 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1458 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1459              
1460 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1461 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1462 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1463 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1464 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1465 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1466 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1467 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1468 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1469              
1470             PDL_COMMENT("none")
1471 0           } } break; case PDL_IND: {
1472 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1473 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1474              
1475 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1476 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1477              
1478 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1479 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1480              
1481 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1482 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1483              
1484 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1485 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1486              
1487 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1488 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1489              
1490 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1491 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1492              
1493 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1494 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1495              
1496 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1497 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1498              
1499 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1500 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1501              
1502 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1503 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1504 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1505 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1506 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1507 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1508 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1509 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1510 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1511              
1512             PDL_COMMENT("none")
1513 0           } } break; case PDL_LL: {
1514 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1515 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1516              
1517 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1518 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1519              
1520 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1521 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1522              
1523 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1524 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1525              
1526 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1527 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1528              
1529 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1530 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1531              
1532 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1533 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1534              
1535 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1536 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1537              
1538 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1539 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1540              
1541 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1542 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1543              
1544 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1545 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1546 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1547 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1548 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1549 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1550 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1551 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1552 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1553              
1554             PDL_COMMENT("none")
1555 0           } } break; case PDL_F: {
1556 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1557 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1558              
1559 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1560 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1561              
1562 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1563 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1564              
1565 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1566 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1567              
1568 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1569 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1570              
1571 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1572 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1573              
1574 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1575 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1576              
1577 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1578 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1579              
1580 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1581 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1582              
1583 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1584 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1585              
1586 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1587 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1588 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1589 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1590 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1591 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1592 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1593 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1594 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1595              
1596             PDL_COMMENT("none")
1597 0           } } break; case PDL_D: {
1598 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1599 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1600              
1601 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1602 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1603              
1604 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1605 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1606              
1607 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1608 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1609              
1610 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1611 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1612              
1613 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1614 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1615              
1616 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1617 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1618              
1619 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1620 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1621              
1622 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1623 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1624              
1625 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1626 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1627              
1628 0           {register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
1629 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
1630 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
1631 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
1632 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
1633 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
1634 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
1635 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
1636 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
1637              
1638             PDL_COMMENT("none")
1639 0           } break;}
1640 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
1641             }
1642             }
1643             {
1644             static char *__parnames[] = {"ptr","rowids","nzvals","m","iterations","end","kappa","ut","s","vt"};
1645             static PDL_Indx __realdims[] = {1,1,1,0,0,1,0,2,1,2};
1646             static char __funcname[] = "PDL::SVDLIBC::svdlas2";
1647             static pdl_errorinfo __einfo = {
1648             __funcname, __parnames, 10
1649             };
1650            
1651 3           PDL->initthreadstruct(2,__privtrans->pdls,
1652             __realdims,__creating,10,
1653             &__einfo,&(__privtrans->__pdlthread),
1654 3           __privtrans->vtable->per_pdl_flags,
1655             0 );
1656             }
1657 3 50         if(((__privtrans->pdls[0]))->ndims < 1) {
1658 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__nplus1_size <= 1) __privtrans->__nplus1_size = 1;
    0          
1659             }
1660 3 50         if(__privtrans->__nplus1_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__nplus1_size == 1)) {
    0          
    0          
1661 3           __privtrans->__nplus1_size = ((__privtrans->pdls[0]))->dims[0];
1662 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__nplus1_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
1663 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
1664 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1665             }
1666             }
1667 3           PDL->make_physical(((__privtrans->pdls[0])));
1668 3 50         if(((__privtrans->pdls[1]))->ndims < 1) {
1669 0 0         if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
1670             }
1671 3 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
1672 3           __privtrans->__nnz_size = ((__privtrans->pdls[1]))->dims[0];
1673 0 0         } else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[1]))->dims[0]) {
    0          
1674 0 0         if(((__privtrans->pdls[1]))->dims[0] != 1) {
1675 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1676             }
1677             }
1678 3           PDL->make_physical(((__privtrans->pdls[1])));
1679 3 50         if(((__privtrans->pdls[2]))->ndims < 1) {
1680 0 0         if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
1681             }
1682 3 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    50          
    50          
1683 0           __privtrans->__nnz_size = ((__privtrans->pdls[2]))->dims[0];
1684 3 50         } else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[2]))->dims[0]) {
    50          
1685 0 0         if(((__privtrans->pdls[2]))->dims[0] != 1) {
1686 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1687             }
1688             }
1689 3           PDL->make_physical(((__privtrans->pdls[2])));
1690 3 50         if(((__privtrans->pdls[5]))->ndims < 1) {
1691 0 0         if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1;
    0          
1692             }
1693 3 50         if(__privtrans->__2_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__2_size == 1)) {
    0          
    0          
1694 3           __privtrans->__2_size = ((__privtrans->pdls[5]))->dims[0];
1695 0 0         } else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[5]))->dims[0]) {
    0          
1696 0 0         if(((__privtrans->pdls[5]))->dims[0] != 1) {
1697 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1698             }
1699             }
1700 3           PDL->make_physical(((__privtrans->pdls[5])));
1701 3 50         if(!__creating[7]) {
1702 3 50         if(((__privtrans->pdls[7]))->ndims < 2) {
1703 0 0         if (((__privtrans->pdls[7]))->ndims < 1 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
1704 0 0         if (((__privtrans->pdls[7]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
1705             }
1706 3 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__m_size == 1)) {
    0          
    0          
1707 3           __privtrans->__m_size = ((__privtrans->pdls[7]))->dims[0];
1708 0 0         } else if(((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__m_size != ((__privtrans->pdls[7]))->dims[0]) {
    0          
1709 0 0         if(((__privtrans->pdls[7]))->dims[0] != 1) {
1710 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1711             }
1712             }
1713 3 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__d_size == 1)) {
    0          
    0          
1714 3           __privtrans->__d_size = ((__privtrans->pdls[7]))->dims[1];
1715 0 0         } else if(((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[7]))->dims[1]) {
    0          
1716 0 0         if(((__privtrans->pdls[7]))->dims[1] != 1) {
1717 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1718             }
1719             }
1720 3           PDL->make_physical(((__privtrans->pdls[7])));
1721             } else {
1722 0           PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__m_size;dims[1] = __privtrans->__d_size;
1723 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0);
1724 3 50         }if(!__creating[8]) {
1725 3 50         if(((__privtrans->pdls[8]))->ndims < 1) {
1726 0 0         if (((__privtrans->pdls[8]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
1727             }
1728 3 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[8]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
1729 0           __privtrans->__d_size = ((__privtrans->pdls[8]))->dims[0];
1730 3 50         } else if(((__privtrans->pdls[8]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[8]))->dims[0]) {
    50          
1731 0 0         if(((__privtrans->pdls[8]))->dims[0] != 1) {
1732 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1733             }
1734             }
1735 3           PDL->make_physical(((__privtrans->pdls[8])));
1736             } else {
1737 0           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;
1738 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,8,dims,0);
1739 3 50         }if(!__creating[9]) {
1740 3 50         if(((__privtrans->pdls[9]))->ndims < 2) {
1741 0 0         if (((__privtrans->pdls[9]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
1742 0 0         if (((__privtrans->pdls[9]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
1743             }
1744 3 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[9]))->ndims > 0 && __privtrans->__n_size == 1)) {
    0          
    0          
1745 3           __privtrans->__n_size = ((__privtrans->pdls[9]))->dims[0];
1746 0 0         } else if(((__privtrans->pdls[9]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[9]))->dims[0]) {
    0          
1747 0 0         if(((__privtrans->pdls[9]))->dims[0] != 1) {
1748 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1749             }
1750             }
1751 3 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[9]))->ndims > 1 && __privtrans->__d_size == 1)) {
    50          
    50          
1752 0           __privtrans->__d_size = ((__privtrans->pdls[9]))->dims[1];
1753 3 50         } else if(((__privtrans->pdls[9]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[9]))->dims[1]) {
    50          
1754 0 0         if(((__privtrans->pdls[9]))->dims[1] != 1) {
1755 0           PDL->pdl_barf("Error in svdlas2:" "Wrong dims\n");
1756             }
1757             }
1758 3           PDL->make_physical(((__privtrans->pdls[9])));
1759             } else {
1760 0           PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size;dims[1] = __privtrans->__d_size;
1761 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,9,dims,0);
1762             }
1763             { PDL_COMMENT("convenience block")
1764 3           void *hdrp = NULL;
1765 3           char propagate_hdrcpy = 0;
1766 3           SV *hdr_copy = NULL;
1767 3 50         if(!hdrp &&
    50          
1768 0 0         __privtrans->pdls[0]->hdrsv &&
1769 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
1770             ) {
1771 0           hdrp = __privtrans->pdls[0]->hdrsv;
1772 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
1773             }
1774 3 50         if(!hdrp &&
    50          
1775 0 0         __privtrans->pdls[1]->hdrsv &&
1776 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
1777             ) {
1778 0           hdrp = __privtrans->pdls[1]->hdrsv;
1779 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
1780             }
1781 3 50         if(!hdrp &&
    50          
1782 0 0         __privtrans->pdls[2]->hdrsv &&
1783 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
1784             ) {
1785 0           hdrp = __privtrans->pdls[2]->hdrsv;
1786 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
1787             }
1788 3 50         if(!hdrp &&
    50          
1789 0 0         __privtrans->pdls[3]->hdrsv &&
1790 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
1791             ) {
1792 0           hdrp = __privtrans->pdls[3]->hdrsv;
1793 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
1794             }
1795 3 50         if(!hdrp &&
    50          
1796 0 0         __privtrans->pdls[4]->hdrsv &&
1797 0           (__privtrans->pdls[4]->state & PDL_HDRCPY)
1798             ) {
1799 0           hdrp = __privtrans->pdls[4]->hdrsv;
1800 0           propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0);
1801             }
1802 3 50         if(!hdrp &&
    50          
1803 0 0         __privtrans->pdls[5]->hdrsv &&
1804 0           (__privtrans->pdls[5]->state & PDL_HDRCPY)
1805             ) {
1806 0           hdrp = __privtrans->pdls[5]->hdrsv;
1807 0           propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0);
1808             }
1809 3 50         if(!hdrp &&
    50          
1810 0 0         __privtrans->pdls[6]->hdrsv &&
1811 0           (__privtrans->pdls[6]->state & PDL_HDRCPY)
1812             ) {
1813 0           hdrp = __privtrans->pdls[6]->hdrsv;
1814 0           propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0);
1815             }
1816 3 50         if(!hdrp &&
    50          
1817 3 50         !__creating[7] &&
1818 0 0         __privtrans->pdls[7]->hdrsv &&
1819 0           (__privtrans->pdls[7]->state & PDL_HDRCPY)
1820             ) {
1821 0           hdrp = __privtrans->pdls[7]->hdrsv;
1822 0           propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0);
1823             }
1824 3 50         if(!hdrp &&
    50          
1825 3 50         !__creating[8] &&
1826 0 0         __privtrans->pdls[8]->hdrsv &&
1827 0           (__privtrans->pdls[8]->state & PDL_HDRCPY)
1828             ) {
1829 0           hdrp = __privtrans->pdls[8]->hdrsv;
1830 0           propagate_hdrcpy = ((__privtrans->pdls[8]->state & PDL_HDRCPY) != 0);
1831             }
1832 3 50         if(!hdrp &&
    50          
1833 3 50         !__creating[9] &&
1834 0 0         __privtrans->pdls[9]->hdrsv &&
1835 0           (__privtrans->pdls[9]->state & PDL_HDRCPY)
1836             ) {
1837 0           hdrp = __privtrans->pdls[9]->hdrsv;
1838 0           propagate_hdrcpy = ((__privtrans->pdls[9]->state & PDL_HDRCPY) != 0);
1839             }
1840 3 50         if (hdrp) {
1841 0 0         if(hdrp == &PL_sv_undef)
1842 0           hdr_copy = &PL_sv_undef;
1843             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
1844             int count;
1845             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
1846 0           dSP;
1847 0           ENTER ;
1848 0           SAVETMPS ;
1849 0 0         PUSHMARK(SP) ;
1850 0 0         XPUSHs( hdrp );
1851 0           PUTBACK ;
1852 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
1853 0           SPAGAIN ;
1854 0 0         if(count != 1)
1855 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
1856              
1857 0           hdr_copy = (SV *)POPs;
1858              
1859 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
1860 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
1861             }
1862              
1863 0 0         FREETMPS ;
1864 0           LEAVE ;
1865              
1866              
1867             } PDL_COMMENT("end of callback block")
1868              
1869 0 0         if ( __privtrans->pdls[7]->hdrsv != hdrp ){
1870 0 0         if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef)
    0          
1871 0           (void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv );
1872 0 0         if( hdr_copy != &PL_sv_undef )
1873 0           (void)SvREFCNT_inc(hdr_copy);
1874 0           __privtrans->pdls[7]->hdrsv = hdr_copy;
1875             }
1876 0 0         if(propagate_hdrcpy)
1877 0           __privtrans->pdls[7]->state |= PDL_HDRCPY;
1878 0 0         if ( __privtrans->pdls[8]->hdrsv != hdrp ){
1879 0 0         if( __privtrans->pdls[8]->hdrsv && __privtrans->pdls[8]->hdrsv != &PL_sv_undef)
    0          
1880 0           (void)SvREFCNT_dec( __privtrans->pdls[8]->hdrsv );
1881 0 0         if( hdr_copy != &PL_sv_undef )
1882 0           (void)SvREFCNT_inc(hdr_copy);
1883 0           __privtrans->pdls[8]->hdrsv = hdr_copy;
1884             }
1885 0 0         if(propagate_hdrcpy)
1886 0           __privtrans->pdls[8]->state |= PDL_HDRCPY;
1887 0 0         if ( __privtrans->pdls[9]->hdrsv != hdrp ){
1888 0 0         if( __privtrans->pdls[9]->hdrsv && __privtrans->pdls[9]->hdrsv != &PL_sv_undef)
    0          
1889 0           (void)SvREFCNT_dec( __privtrans->pdls[9]->hdrsv );
1890 0 0         if( hdr_copy != &PL_sv_undef )
1891 0           (void)SvREFCNT_inc(hdr_copy);
1892 0           __privtrans->pdls[9]->hdrsv = hdr_copy;
1893             }
1894 0 0         if(propagate_hdrcpy)
1895 0           __privtrans->pdls[9]->state |= PDL_HDRCPY;
1896              
1897 0 0         if(hdr_copy != &PL_sv_undef)
1898 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
1899             } PDL_COMMENT("end of if(hdrp) block")
1900             } PDL_COMMENT("end of conv. block")
1901 3 50         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    50          
1902 0           __privtrans->__inc_ptr_nplus1 = 0; else
1903 3 50         __privtrans->__inc_ptr_nplus1 = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1)
    50          
1904 0           __privtrans->__inc_rowids_nnz = 0; else
1905 3 50         __privtrans->__inc_rowids_nnz = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1)
    50          
1906 0           __privtrans->__inc_nzvals_nnz = 0; else
1907 3 50         __privtrans->__inc_nzvals_nnz = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1)
    50          
1908 0           __privtrans->__inc_end_2 = 0; else
1909 3 50         __privtrans->__inc_end_2 = __privtrans->pdls[5]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 0 || __privtrans->pdls[7]->dims[0] <= 1)
    50          
1910 0           __privtrans->__inc_ut_m = 0; else
1911 3 50         __privtrans->__inc_ut_m = __privtrans->pdls[7]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 1 || __privtrans->pdls[7]->dims[1] <= 1)
    50          
1912 0           __privtrans->__inc_ut_d = 0; else
1913 3 50         __privtrans->__inc_ut_d = __privtrans->pdls[7]->dimincs[1];if(__privtrans->pdls[8]->ndims <= 0 || __privtrans->pdls[8]->dims[0] <= 1)
    50          
1914 0           __privtrans->__inc_s_d = 0; else
1915 3 50         __privtrans->__inc_s_d = __privtrans->pdls[8]->dimincs[0];if(__privtrans->pdls[9]->ndims <= 0 || __privtrans->pdls[9]->dims[0] <= 1)
    50          
1916 0           __privtrans->__inc_vt_n = 0; else
1917 3 50         __privtrans->__inc_vt_n = __privtrans->pdls[9]->dimincs[0];if(__privtrans->pdls[9]->ndims <= 1 || __privtrans->pdls[9]->dims[1] <= 1)
    50          
1918 0           __privtrans->__inc_vt_d = 0; else
1919 3           __privtrans->__inc_vt_d = __privtrans->pdls[9]->dimincs[1]; __privtrans->__ddone = 1;
1920             }
1921 3           }
1922            
1923              
1924 0           pdl_trans * pdl_svdlas2_copy(pdl_trans *__tr ) {
1925             int __dim;
1926 0           pdl_svdlas2_struct *__privtrans = (pdl_svdlas2_struct *) __tr;
1927            
1928             {
1929 0           pdl_svdlas2_struct *__copy = malloc(sizeof(pdl_svdlas2_struct));
1930 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
1931 0           __copy->has_badvalue = __privtrans->has_badvalue;
1932 0           __copy->badvalue = __privtrans->badvalue;
1933 0           __copy->flags = __privtrans->flags;
1934 0           __copy->vtable = __privtrans->vtable;
1935 0           __copy->__datatype = __privtrans->__datatype;
1936 0           __copy->freeproc = NULL;
1937 0           __copy->__ddone = __privtrans->__ddone;
1938             {int i;
1939 0 0         for(i=0; i<__copy->vtable->npdls; i++)
1940 0           __copy->pdls[i] = __privtrans->pdls[i];
1941             }
1942            
1943 0 0         if(__copy->__ddone) {
1944 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_ptr_nplus1=__copy->__inc_ptr_nplus1;__privtrans->__inc_rowids_nnz=__copy->__inc_rowids_nnz;__privtrans->__inc_nzvals_nnz=__copy->__inc_nzvals_nnz;__privtrans->__inc_end_2=__copy->__inc_end_2;__privtrans->__inc_ut_m=__copy->__inc_ut_m;__privtrans->__inc_ut_d=__copy->__inc_ut_d;__privtrans->__inc_s_d=__copy->__inc_s_d;__privtrans->__inc_vt_n=__copy->__inc_vt_n;__privtrans->__inc_vt_d=__copy->__inc_vt_d;__copy->__d_size=__privtrans->__d_size;__copy->__m_size=__privtrans->__m_size;__copy->__n_size=__privtrans->__n_size;__copy->__nplus1_size=__privtrans->__nplus1_size;__copy->__nnz_size=__privtrans->__nnz_size;__copy->__2_size=__privtrans->__2_size;
1945             }
1946 0           return (pdl_trans*)__copy;
1947             }
1948             }
1949            
1950              
1951 3           void pdl_svdlas2_readdata(pdl_trans *__tr ) {
1952             int __dim;
1953 3           pdl_svdlas2_struct *__privtrans = (pdl_svdlas2_struct *) __tr;
1954            
1955             {
1956             {PDL_COMMENT("Start generic loop")
1957              
1958 3           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
1959 0           } break; case PDL_B: {
1960 3 50         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
1961 3           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
1962              
1963 3 50         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
1964 3           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
1965              
1966 3 50         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
1967 3           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
1968              
1969 3 50         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
1970 3           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
1971              
1972 3 50         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
1973 3           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
1974              
1975 3 50         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
1976 3           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
1977              
1978 3 50         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
1979 3           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
1980              
1981 3 50         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
1982 3           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
1983              
1984 3 50         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
1985 3           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
1986              
1987 3 50         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
1988 3           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
1989              
1990              
1991             PDL_COMMENT("THREADLOOPBEGIN")
1992 3 50         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
1993 3           do { register PDL_Indx __tind1=0,__tind2=0;
1994 3           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
1995 3           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
1996 3           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
1997 3           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
1998 3           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
1999 3           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2000 3           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2001 3           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2002 3           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2003 3           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2004 3           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2005 3           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2006 3           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2007 3           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2008 3           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2009 3           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2010 3           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2011 3           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2012 3           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2013 3           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2014 3           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2015 3           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
2016 3           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
2017 3           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
2018 3           ptr_datap += __offsp[0];
2019 3           rowids_datap += __offsp[1];
2020 3           nzvals_datap += __offsp[2];
2021 3           m_datap += __offsp[3];
2022 3           iterations_datap += __offsp[4];
2023 3           end_datap += __offsp[5];
2024 3           kappa_datap += __offsp[6];
2025 3           ut_datap += __offsp[7];
2026 3           s_datap += __offsp[8];
2027 3           vt_datap += __offsp[9];
2028 6 100         for( __tind2 = 0 ;
2029             __tind2 < __tdims1 ;
2030 3           __tind2++
2031 3           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
2032 3           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
2033 3           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
2034 3           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
2035 3           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
2036 3           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
2037 3           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
2038 3           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
2039 3           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
2040 3           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
2041             )
2042             {
2043 6 100         for( __tind1 = 0 ;
2044             __tind1 < __tdims0 ;
2045 3           __tind1++
2046 3           ,ptr_datap += __tinc0_0
2047 3           ,rowids_datap += __tinc0_1
2048 3           ,nzvals_datap += __tinc0_2
2049 3           ,m_datap += __tinc0_3
2050 3           ,iterations_datap += __tinc0_4
2051 3           ,end_datap += __tinc0_5
2052 3           ,kappa_datap += __tinc0_6
2053 3           ,ut_datap += __tinc0_7
2054 3           ,s_datap += __tinc0_8
2055 3           ,vt_datap += __tinc0_9
2056             )
2057 3           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
2058 3           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
2059 3           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
2060 3           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
2061 3           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
2062 3           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
2063 3           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
2064 3           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
2065 3           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
2066              
2067              
2068             struct smat sm;
2069             SVDRec svdr;
2070              
2071             /*-- setup sparse matrix --*/
2072 3           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
2073 3           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
2074 3           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
2075 3           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
2076 3           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
2077 3           sm.value = (double *)nzvals_datap;
2078              
2079             /*-- view decoded stuff --*/
2080             #ifdef DEBUG_CODE
2081             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
2082             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
2083             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
2084             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
2085             printf("--\n");
2086             #endif
2087              
2088             /*-- run SVD --*/
2089 3           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
2090 3           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
2091              
2092             /*-- output some stats (debug) --*/
2093             #ifdef DEBUG_CODE
2094             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
2095             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
2096             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
2097             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
2098             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
2099             #endif
2100              
2101             /*-- pre-cleanup --*/
2102 3           sm.pointr = NULL;
2103 3           sm.rowind = NULL;
2104 3           sm.value = NULL;
2105              
2106             /*-- cleanup --*/
2107 3 50         if (svdr) svdFreeSVDRec(svdr);
2108              
2109             }
2110             PDL_COMMENT("THREADLOOPEND")
2111             }
2112             }
2113 3           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
2114 3           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
2115 3           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
2116 3           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
2117 3           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
2118 3           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
2119 3           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
2120 3           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
2121 3           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
2122 3           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
2123 3 50         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
2124 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
2125 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
2126              
2127 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
2128 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
2129              
2130 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
2131 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
2132              
2133 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
2134 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
2135              
2136 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
2137 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
2138              
2139 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
2140 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
2141              
2142 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
2143 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
2144              
2145 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
2146 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
2147              
2148 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
2149 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
2150              
2151 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
2152 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
2153              
2154              
2155             PDL_COMMENT("THREADLOOPBEGIN")
2156 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
2157 0           do { register PDL_Indx __tind1=0,__tind2=0;
2158 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
2159 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
2160 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
2161 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
2162 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
2163 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2164 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2165 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2166 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2167 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2168 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2169 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2170 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2171 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2172 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2173 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2174 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2175 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2176 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2177 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2178 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2179 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
2180 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
2181 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
2182 0           ptr_datap += __offsp[0];
2183 0           rowids_datap += __offsp[1];
2184 0           nzvals_datap += __offsp[2];
2185 0           m_datap += __offsp[3];
2186 0           iterations_datap += __offsp[4];
2187 0           end_datap += __offsp[5];
2188 0           kappa_datap += __offsp[6];
2189 0           ut_datap += __offsp[7];
2190 0           s_datap += __offsp[8];
2191 0           vt_datap += __offsp[9];
2192 0 0         for( __tind2 = 0 ;
2193             __tind2 < __tdims1 ;
2194 0           __tind2++
2195 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
2196 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
2197 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
2198 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
2199 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
2200 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
2201 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
2202 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
2203 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
2204 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
2205             )
2206             {
2207 0 0         for( __tind1 = 0 ;
2208             __tind1 < __tdims0 ;
2209 0           __tind1++
2210 0           ,ptr_datap += __tinc0_0
2211 0           ,rowids_datap += __tinc0_1
2212 0           ,nzvals_datap += __tinc0_2
2213 0           ,m_datap += __tinc0_3
2214 0           ,iterations_datap += __tinc0_4
2215 0           ,end_datap += __tinc0_5
2216 0           ,kappa_datap += __tinc0_6
2217 0           ,ut_datap += __tinc0_7
2218 0           ,s_datap += __tinc0_8
2219 0           ,vt_datap += __tinc0_9
2220             )
2221 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
2222 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
2223 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
2224 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
2225 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
2226 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
2227 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
2228 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
2229 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
2230              
2231              
2232             struct smat sm;
2233             SVDRec svdr;
2234              
2235             /*-- setup sparse matrix --*/
2236 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
2237 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
2238 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
2239 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
2240 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
2241 0           sm.value = (double *)nzvals_datap;
2242              
2243             /*-- view decoded stuff --*/
2244             #ifdef DEBUG_CODE
2245             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
2246             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
2247             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
2248             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
2249             printf("--\n");
2250             #endif
2251              
2252             /*-- run SVD --*/
2253 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
2254 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
2255              
2256             /*-- output some stats (debug) --*/
2257             #ifdef DEBUG_CODE
2258             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
2259             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
2260             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
2261             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
2262             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
2263             #endif
2264              
2265             /*-- pre-cleanup --*/
2266 0           sm.pointr = NULL;
2267 0           sm.rowind = NULL;
2268 0           sm.value = NULL;
2269              
2270             /*-- cleanup --*/
2271 0 0         if (svdr) svdFreeSVDRec(svdr);
2272              
2273             }
2274             PDL_COMMENT("THREADLOOPEND")
2275             }
2276             }
2277 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
2278 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
2279 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
2280 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
2281 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
2282 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
2283 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
2284 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
2285 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
2286 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
2287 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
2288 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
2289 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
2290              
2291 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
2292 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
2293              
2294 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
2295 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
2296              
2297 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
2298 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
2299              
2300 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
2301 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
2302              
2303 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
2304 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
2305              
2306 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
2307 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
2308              
2309 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
2310 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
2311              
2312 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
2313 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
2314              
2315 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
2316 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
2317              
2318              
2319             PDL_COMMENT("THREADLOOPBEGIN")
2320 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
2321 0           do { register PDL_Indx __tind1=0,__tind2=0;
2322 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
2323 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
2324 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
2325 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
2326 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
2327 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2328 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2329 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2330 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2331 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2332 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2333 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2334 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2335 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2336 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2337 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2338 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2339 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2340 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2341 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2342 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2343 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
2344 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
2345 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
2346 0           ptr_datap += __offsp[0];
2347 0           rowids_datap += __offsp[1];
2348 0           nzvals_datap += __offsp[2];
2349 0           m_datap += __offsp[3];
2350 0           iterations_datap += __offsp[4];
2351 0           end_datap += __offsp[5];
2352 0           kappa_datap += __offsp[6];
2353 0           ut_datap += __offsp[7];
2354 0           s_datap += __offsp[8];
2355 0           vt_datap += __offsp[9];
2356 0 0         for( __tind2 = 0 ;
2357             __tind2 < __tdims1 ;
2358 0           __tind2++
2359 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
2360 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
2361 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
2362 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
2363 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
2364 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
2365 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
2366 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
2367 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
2368 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
2369             )
2370             {
2371 0 0         for( __tind1 = 0 ;
2372             __tind1 < __tdims0 ;
2373 0           __tind1++
2374 0           ,ptr_datap += __tinc0_0
2375 0           ,rowids_datap += __tinc0_1
2376 0           ,nzvals_datap += __tinc0_2
2377 0           ,m_datap += __tinc0_3
2378 0           ,iterations_datap += __tinc0_4
2379 0           ,end_datap += __tinc0_5
2380 0           ,kappa_datap += __tinc0_6
2381 0           ,ut_datap += __tinc0_7
2382 0           ,s_datap += __tinc0_8
2383 0           ,vt_datap += __tinc0_9
2384             )
2385 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
2386 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
2387 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
2388 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
2389 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
2390 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
2391 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
2392 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
2393 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
2394              
2395              
2396             struct smat sm;
2397             SVDRec svdr;
2398              
2399             /*-- setup sparse matrix --*/
2400 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
2401 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
2402 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
2403 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
2404 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
2405 0           sm.value = (double *)nzvals_datap;
2406              
2407             /*-- view decoded stuff --*/
2408             #ifdef DEBUG_CODE
2409             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
2410             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
2411             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
2412             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
2413             printf("--\n");
2414             #endif
2415              
2416             /*-- run SVD --*/
2417 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
2418 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
2419              
2420             /*-- output some stats (debug) --*/
2421             #ifdef DEBUG_CODE
2422             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
2423             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
2424             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
2425             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
2426             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
2427             #endif
2428              
2429             /*-- pre-cleanup --*/
2430 0           sm.pointr = NULL;
2431 0           sm.rowind = NULL;
2432 0           sm.value = NULL;
2433              
2434             /*-- cleanup --*/
2435 0 0         if (svdr) svdFreeSVDRec(svdr);
2436              
2437             }
2438             PDL_COMMENT("THREADLOOPEND")
2439             }
2440             }
2441 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
2442 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
2443 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
2444 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
2445 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
2446 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
2447 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
2448 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
2449 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
2450 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
2451 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
2452 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
2453 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
2454              
2455 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
2456 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
2457              
2458 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
2459 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
2460              
2461 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
2462 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
2463              
2464 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
2465 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
2466              
2467 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
2468 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
2469              
2470 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
2471 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
2472              
2473 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
2474 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
2475              
2476 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
2477 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
2478              
2479 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
2480 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
2481              
2482              
2483             PDL_COMMENT("THREADLOOPBEGIN")
2484 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
2485 0           do { register PDL_Indx __tind1=0,__tind2=0;
2486 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
2487 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
2488 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
2489 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
2490 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
2491 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2492 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2493 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2494 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2495 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2496 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2497 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2498 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2499 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2500 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2501 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2502 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2503 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2504 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2505 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2506 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2507 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
2508 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
2509 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
2510 0           ptr_datap += __offsp[0];
2511 0           rowids_datap += __offsp[1];
2512 0           nzvals_datap += __offsp[2];
2513 0           m_datap += __offsp[3];
2514 0           iterations_datap += __offsp[4];
2515 0           end_datap += __offsp[5];
2516 0           kappa_datap += __offsp[6];
2517 0           ut_datap += __offsp[7];
2518 0           s_datap += __offsp[8];
2519 0           vt_datap += __offsp[9];
2520 0 0         for( __tind2 = 0 ;
2521             __tind2 < __tdims1 ;
2522 0           __tind2++
2523 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
2524 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
2525 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
2526 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
2527 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
2528 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
2529 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
2530 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
2531 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
2532 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
2533             )
2534             {
2535 0 0         for( __tind1 = 0 ;
2536             __tind1 < __tdims0 ;
2537 0           __tind1++
2538 0           ,ptr_datap += __tinc0_0
2539 0           ,rowids_datap += __tinc0_1
2540 0           ,nzvals_datap += __tinc0_2
2541 0           ,m_datap += __tinc0_3
2542 0           ,iterations_datap += __tinc0_4
2543 0           ,end_datap += __tinc0_5
2544 0           ,kappa_datap += __tinc0_6
2545 0           ,ut_datap += __tinc0_7
2546 0           ,s_datap += __tinc0_8
2547 0           ,vt_datap += __tinc0_9
2548             )
2549 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
2550 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
2551 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
2552 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
2553 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
2554 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
2555 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
2556 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
2557 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
2558              
2559              
2560             struct smat sm;
2561             SVDRec svdr;
2562              
2563             /*-- setup sparse matrix --*/
2564 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
2565 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
2566 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
2567 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
2568 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
2569 0           sm.value = (double *)nzvals_datap;
2570              
2571             /*-- view decoded stuff --*/
2572             #ifdef DEBUG_CODE
2573             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
2574             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
2575             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
2576             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
2577             printf("--\n");
2578             #endif
2579              
2580             /*-- run SVD --*/
2581 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
2582 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
2583              
2584             /*-- output some stats (debug) --*/
2585             #ifdef DEBUG_CODE
2586             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
2587             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
2588             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
2589             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
2590             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
2591             #endif
2592              
2593             /*-- pre-cleanup --*/
2594 0           sm.pointr = NULL;
2595 0           sm.rowind = NULL;
2596 0           sm.value = NULL;
2597              
2598             /*-- cleanup --*/
2599 0 0         if (svdr) svdFreeSVDRec(svdr);
2600              
2601             }
2602             PDL_COMMENT("THREADLOOPEND")
2603             }
2604             }
2605 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
2606 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
2607 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
2608 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
2609 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
2610 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
2611 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
2612 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
2613 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
2614 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
2615 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
2616 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
2617 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
2618              
2619 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
2620 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
2621              
2622 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
2623 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
2624              
2625 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
2626 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
2627              
2628 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
2629 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
2630              
2631 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
2632 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
2633              
2634 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
2635 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
2636              
2637 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
2638 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
2639              
2640 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
2641 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
2642              
2643 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
2644 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
2645              
2646              
2647             PDL_COMMENT("THREADLOOPBEGIN")
2648 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
2649 0           do { register PDL_Indx __tind1=0,__tind2=0;
2650 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
2651 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
2652 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
2653 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
2654 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
2655 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2656 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2657 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2658 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2659 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2660 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2661 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2662 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2663 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2664 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2665 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2666 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2667 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2668 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2669 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2670 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2671 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
2672 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
2673 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
2674 0           ptr_datap += __offsp[0];
2675 0           rowids_datap += __offsp[1];
2676 0           nzvals_datap += __offsp[2];
2677 0           m_datap += __offsp[3];
2678 0           iterations_datap += __offsp[4];
2679 0           end_datap += __offsp[5];
2680 0           kappa_datap += __offsp[6];
2681 0           ut_datap += __offsp[7];
2682 0           s_datap += __offsp[8];
2683 0           vt_datap += __offsp[9];
2684 0 0         for( __tind2 = 0 ;
2685             __tind2 < __tdims1 ;
2686 0           __tind2++
2687 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
2688 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
2689 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
2690 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
2691 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
2692 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
2693 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
2694 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
2695 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
2696 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
2697             )
2698             {
2699 0 0         for( __tind1 = 0 ;
2700             __tind1 < __tdims0 ;
2701 0           __tind1++
2702 0           ,ptr_datap += __tinc0_0
2703 0           ,rowids_datap += __tinc0_1
2704 0           ,nzvals_datap += __tinc0_2
2705 0           ,m_datap += __tinc0_3
2706 0           ,iterations_datap += __tinc0_4
2707 0           ,end_datap += __tinc0_5
2708 0           ,kappa_datap += __tinc0_6
2709 0           ,ut_datap += __tinc0_7
2710 0           ,s_datap += __tinc0_8
2711 0           ,vt_datap += __tinc0_9
2712             )
2713 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
2714 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
2715 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
2716 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
2717 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
2718 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
2719 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
2720 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
2721 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
2722              
2723              
2724             struct smat sm;
2725             SVDRec svdr;
2726              
2727             /*-- setup sparse matrix --*/
2728 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
2729 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
2730 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
2731 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
2732 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
2733 0           sm.value = (double *)nzvals_datap;
2734              
2735             /*-- view decoded stuff --*/
2736             #ifdef DEBUG_CODE
2737             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
2738             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
2739             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
2740             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
2741             printf("--\n");
2742             #endif
2743              
2744             /*-- run SVD --*/
2745 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
2746 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
2747              
2748             /*-- output some stats (debug) --*/
2749             #ifdef DEBUG_CODE
2750             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
2751             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
2752             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
2753             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
2754             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
2755             #endif
2756              
2757             /*-- pre-cleanup --*/
2758 0           sm.pointr = NULL;
2759 0           sm.rowind = NULL;
2760 0           sm.value = NULL;
2761              
2762             /*-- cleanup --*/
2763 0 0         if (svdr) svdFreeSVDRec(svdr);
2764              
2765             }
2766             PDL_COMMENT("THREADLOOPEND")
2767             }
2768             }
2769 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
2770 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
2771 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
2772 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
2773 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
2774 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
2775 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
2776 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
2777 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
2778 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
2779 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
2780 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
2781 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
2782              
2783 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
2784 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
2785              
2786 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
2787 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
2788              
2789 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
2790 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
2791              
2792 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
2793 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
2794              
2795 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
2796 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
2797              
2798 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
2799 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
2800              
2801 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
2802 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
2803              
2804 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
2805 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
2806              
2807 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
2808 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
2809              
2810              
2811             PDL_COMMENT("THREADLOOPBEGIN")
2812 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
2813 0           do { register PDL_Indx __tind1=0,__tind2=0;
2814 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
2815 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
2816 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
2817 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
2818 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
2819 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2820 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2821 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2822 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2823 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2824 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2825 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2826 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2827 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2828 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2829 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2830 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2831 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2832 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2833 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2834 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2835 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
2836 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
2837 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
2838 0           ptr_datap += __offsp[0];
2839 0           rowids_datap += __offsp[1];
2840 0           nzvals_datap += __offsp[2];
2841 0           m_datap += __offsp[3];
2842 0           iterations_datap += __offsp[4];
2843 0           end_datap += __offsp[5];
2844 0           kappa_datap += __offsp[6];
2845 0           ut_datap += __offsp[7];
2846 0           s_datap += __offsp[8];
2847 0           vt_datap += __offsp[9];
2848 0 0         for( __tind2 = 0 ;
2849             __tind2 < __tdims1 ;
2850 0           __tind2++
2851 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
2852 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
2853 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
2854 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
2855 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
2856 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
2857 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
2858 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
2859 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
2860 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
2861             )
2862             {
2863 0 0         for( __tind1 = 0 ;
2864             __tind1 < __tdims0 ;
2865 0           __tind1++
2866 0           ,ptr_datap += __tinc0_0
2867 0           ,rowids_datap += __tinc0_1
2868 0           ,nzvals_datap += __tinc0_2
2869 0           ,m_datap += __tinc0_3
2870 0           ,iterations_datap += __tinc0_4
2871 0           ,end_datap += __tinc0_5
2872 0           ,kappa_datap += __tinc0_6
2873 0           ,ut_datap += __tinc0_7
2874 0           ,s_datap += __tinc0_8
2875 0           ,vt_datap += __tinc0_9
2876             )
2877 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
2878 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
2879 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
2880 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
2881 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
2882 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
2883 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
2884 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
2885 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
2886              
2887              
2888             struct smat sm;
2889             SVDRec svdr;
2890              
2891             /*-- setup sparse matrix --*/
2892 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
2893 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
2894 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
2895 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
2896 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
2897 0           sm.value = (double *)nzvals_datap;
2898              
2899             /*-- view decoded stuff --*/
2900             #ifdef DEBUG_CODE
2901             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
2902             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
2903             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
2904             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
2905             printf("--\n");
2906             #endif
2907              
2908             /*-- run SVD --*/
2909 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
2910 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
2911              
2912             /*-- output some stats (debug) --*/
2913             #ifdef DEBUG_CODE
2914             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
2915             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
2916             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
2917             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
2918             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
2919             #endif
2920              
2921             /*-- pre-cleanup --*/
2922 0           sm.pointr = NULL;
2923 0           sm.rowind = NULL;
2924 0           sm.value = NULL;
2925              
2926             /*-- cleanup --*/
2927 0 0         if (svdr) svdFreeSVDRec(svdr);
2928              
2929             }
2930             PDL_COMMENT("THREADLOOPEND")
2931             }
2932             }
2933 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
2934 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
2935 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
2936 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
2937 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
2938 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
2939 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
2940 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
2941 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
2942 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
2943 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
2944 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
2945 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
2946              
2947 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
2948 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
2949              
2950 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
2951 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
2952              
2953 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
2954 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
2955              
2956 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
2957 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
2958              
2959 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
2960 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
2961              
2962 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
2963 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
2964              
2965 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
2966 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
2967              
2968 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
2969 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
2970              
2971 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
2972 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
2973              
2974              
2975             PDL_COMMENT("THREADLOOPBEGIN")
2976 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
2977 0           do { register PDL_Indx __tind1=0,__tind2=0;
2978 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
2979 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
2980 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
2981 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
2982 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
2983 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
2984 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
2985 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
2986 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
2987 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
2988 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
2989 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
2990 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
2991 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
2992 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
2993 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
2994 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
2995 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
2996 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
2997 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
2998 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
2999 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
3000 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
3001 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
3002 0           ptr_datap += __offsp[0];
3003 0           rowids_datap += __offsp[1];
3004 0           nzvals_datap += __offsp[2];
3005 0           m_datap += __offsp[3];
3006 0           iterations_datap += __offsp[4];
3007 0           end_datap += __offsp[5];
3008 0           kappa_datap += __offsp[6];
3009 0           ut_datap += __offsp[7];
3010 0           s_datap += __offsp[8];
3011 0           vt_datap += __offsp[9];
3012 0 0         for( __tind2 = 0 ;
3013             __tind2 < __tdims1 ;
3014 0           __tind2++
3015 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
3016 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
3017 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
3018 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
3019 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
3020 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
3021 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
3022 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
3023 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
3024 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
3025             )
3026             {
3027 0 0         for( __tind1 = 0 ;
3028             __tind1 < __tdims0 ;
3029 0           __tind1++
3030 0           ,ptr_datap += __tinc0_0
3031 0           ,rowids_datap += __tinc0_1
3032 0           ,nzvals_datap += __tinc0_2
3033 0           ,m_datap += __tinc0_3
3034 0           ,iterations_datap += __tinc0_4
3035 0           ,end_datap += __tinc0_5
3036 0           ,kappa_datap += __tinc0_6
3037 0           ,ut_datap += __tinc0_7
3038 0           ,s_datap += __tinc0_8
3039 0           ,vt_datap += __tinc0_9
3040             )
3041 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3042 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3043 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3044 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3045 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3046 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
3047 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3048 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3049 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
3050              
3051              
3052             struct smat sm;
3053             SVDRec svdr;
3054              
3055             /*-- setup sparse matrix --*/
3056 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
3057 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
3058 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
3059 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
3060 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
3061 0           sm.value = (double *)nzvals_datap;
3062              
3063             /*-- view decoded stuff --*/
3064             #ifdef DEBUG_CODE
3065             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
3066             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
3067             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
3068             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
3069             printf("--\n");
3070             #endif
3071              
3072             /*-- run SVD --*/
3073 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
3074 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
3075              
3076             /*-- output some stats (debug) --*/
3077             #ifdef DEBUG_CODE
3078             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
3079             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
3080             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
3081             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
3082             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
3083             #endif
3084              
3085             /*-- pre-cleanup --*/
3086 0           sm.pointr = NULL;
3087 0           sm.rowind = NULL;
3088 0           sm.value = NULL;
3089              
3090             /*-- cleanup --*/
3091 0 0         if (svdr) svdFreeSVDRec(svdr);
3092              
3093             }
3094             PDL_COMMENT("THREADLOOPEND")
3095             }
3096             }
3097 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
3098 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
3099 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
3100 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
3101 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
3102 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
3103 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
3104 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
3105 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
3106 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
3107 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
3108 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3109 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3110              
3111 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3112 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
3113              
3114 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3115 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
3116              
3117 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3118 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3119              
3120 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3121 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3122              
3123 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3124 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3125              
3126 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3127 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3128              
3129 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3130 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3131              
3132 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3133 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3134              
3135 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3136 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3137              
3138              
3139             PDL_COMMENT("THREADLOOPBEGIN")
3140 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
3141 0           do { register PDL_Indx __tind1=0,__tind2=0;
3142 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
3143 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
3144 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
3145 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
3146 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
3147 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
3148 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
3149 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
3150 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
3151 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
3152 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
3153 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
3154 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
3155 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
3156 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
3157 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
3158 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
3159 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
3160 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
3161 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
3162 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
3163 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
3164 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
3165 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
3166 0           ptr_datap += __offsp[0];
3167 0           rowids_datap += __offsp[1];
3168 0           nzvals_datap += __offsp[2];
3169 0           m_datap += __offsp[3];
3170 0           iterations_datap += __offsp[4];
3171 0           end_datap += __offsp[5];
3172 0           kappa_datap += __offsp[6];
3173 0           ut_datap += __offsp[7];
3174 0           s_datap += __offsp[8];
3175 0           vt_datap += __offsp[9];
3176 0 0         for( __tind2 = 0 ;
3177             __tind2 < __tdims1 ;
3178 0           __tind2++
3179 0           ,ptr_datap += __tinc1_0 - __tinc0_0 * __tdims0
3180 0           ,rowids_datap += __tinc1_1 - __tinc0_1 * __tdims0
3181 0           ,nzvals_datap += __tinc1_2 - __tinc0_2 * __tdims0
3182 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
3183 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
3184 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
3185 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
3186 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
3187 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
3188 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
3189             )
3190             {
3191 0 0         for( __tind1 = 0 ;
3192             __tind1 < __tdims0 ;
3193 0           __tind1++
3194 0           ,ptr_datap += __tinc0_0
3195 0           ,rowids_datap += __tinc0_1
3196 0           ,nzvals_datap += __tinc0_2
3197 0           ,m_datap += __tinc0_3
3198 0           ,iterations_datap += __tinc0_4
3199 0           ,end_datap += __tinc0_5
3200 0           ,kappa_datap += __tinc0_6
3201 0           ,ut_datap += __tinc0_7
3202 0           ,s_datap += __tinc0_8
3203 0           ,vt_datap += __tinc0_9
3204             )
3205 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3206 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3207 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3208 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3209 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3210 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
3211 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3212 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3213 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
3214              
3215              
3216             struct smat sm;
3217             SVDRec svdr;
3218              
3219             /*-- setup sparse matrix --*/
3220 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
3221 0           sm.cols = (__SVDLIBC_LONG) __privtrans->__n_size;
3222 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
3223 0           sm.pointr = (__SVDLIBC_LONG *)ptr_datap;
3224 0           sm.rowind = (__SVDLIBC_LONG *)rowids_datap;
3225 0           sm.value = (double *)nzvals_datap;
3226              
3227             /*-- view decoded stuff --*/
3228             #ifdef DEBUG_CODE
3229             printf("sm: rows=%ld; cols=%ld; vals=%ld\n", sm.rows, sm.cols, sm.vals);
3230             showpp_indx("sm.pointr", 1, sm.cols+1, &sm.pointr);
3231             showpp_indx("sm.rowind", 1, sm.vals, &sm.rowind);
3232             showpp_dbl ("sm.value", 1, sm.vals, &sm.value);
3233             printf("--\n");
3234             #endif
3235              
3236             /*-- run SVD --*/
3237 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
3238 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
3239              
3240             /*-- output some stats (debug) --*/
3241             #ifdef DEBUG_CODE
3242             printf("svdrec.d=%d ~ d=%d\n", svdr->d, __privtrans->__d_size);
3243             printf("svdrec.Ut.rows=%ld ~ d=%d\n", svdr->Ut->rows, __privtrans->__d_size);
3244             printf("svdrec.Ut.cols=%ld ~ m=%d\n", svdr->Ut->cols, __privtrans->__m_size);
3245             printf("svdrec.Vt.rows=%ld ~ n=%d\n", svdr->Vt->cols, __privtrans->__n_size);
3246             printf("svdrec.Vt.cols=%ld ~ d=%d !~ n=%d\n", svdr->Vt->cols, __privtrans->__d_size, __privtrans->__n_size);
3247             #endif
3248              
3249             /*-- pre-cleanup --*/
3250 0           sm.pointr = NULL;
3251 0           sm.rowind = NULL;
3252 0           sm.value = NULL;
3253              
3254             /*-- cleanup --*/
3255 0 0         if (svdr) svdFreeSVDRec(svdr);
3256              
3257             }
3258             PDL_COMMENT("THREADLOOPEND")
3259             }
3260             }
3261 0           ptr_datap -= __tinc1_0 * __tdims1 + __offsp[0];
3262 0           rowids_datap -= __tinc1_1 * __tdims1 + __offsp[1];
3263 0           nzvals_datap -= __tinc1_2 * __tdims1 + __offsp[2];
3264 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
3265 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
3266 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
3267 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
3268 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
3269 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
3270 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
3271 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
3272 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
3273             }
3274             }
3275             }
3276            
3277              
3278              
3279              
3280 3           void pdl_svdlas2_free(pdl_trans *__tr ) {
3281             int __dim;
3282 3           pdl_svdlas2_struct *__privtrans = (pdl_svdlas2_struct *) __tr;
3283            
3284             {
3285            
3286 3           PDL_TR_CLRMAGIC(__privtrans);
3287            
3288 3 50         if(__privtrans->__ddone) {
3289 3           PDL->freethreadloop(&(__privtrans->__pdlthread));
3290             ;;;;;;;;;;;;;;;;
3291             }
3292            
3293             }
3294 3           }
3295            
3296              
3297              
3298              
3299             static char pdl_svdlas2_vtable_flags[] =
3300             { 0,0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,0,0,0};
3301             pdl_transvtable pdl_svdlas2_vtable = {
3302             0,0, 7, 10, pdl_svdlas2_vtable_flags,
3303             pdl_svdlas2_redodims, pdl_svdlas2_readdata, NULL,
3304             pdl_svdlas2_free,NULL,NULL,pdl_svdlas2_copy,
3305             sizeof(pdl_svdlas2_struct),"pdl_svdlas2_vtable"
3306             };
3307              
3308             typedef struct pdl_svdlas2w_struct {
3309             PDL_TRANS_START(10);
3310             pdl_thread __pdlthread;PDL_Indx __inc_whichi_nnz;PDL_Indx __inc_whichi_Two;PDL_Indx __inc_nzvals_nnz;PDL_Indx __inc_end_2;PDL_Indx __inc_ut_m;PDL_Indx __inc_ut_d;PDL_Indx __inc_s_d;PDL_Indx __inc_vt_n;PDL_Indx __inc_vt_d;PDL_Indx __Two_size;PDL_Indx __nnz_size;PDL_Indx __d_size;PDL_Indx __n_size;PDL_Indx __m_size;PDL_Indx __2_size;
3311            
3312             char __ddone; PDL_COMMENT("Dims done")
3313             } pdl_svdlas2w_struct;
3314              
3315 4           void pdl_svdlas2w_redodims(pdl_trans *__tr ) {
3316             int __dim;
3317 4           pdl_svdlas2w_struct *__privtrans = (pdl_svdlas2w_struct *) __tr;
3318            
3319             {
3320             PDL_Indx __creating[10];
3321 4           __privtrans->__Two_size = -1;
3322 4           __privtrans->__nnz_size = -1;
3323 4           __privtrans->__d_size = -1;
3324 4           __privtrans->__n_size = -1;
3325 4           __privtrans->__m_size = -1;
3326 4           __privtrans->__2_size = -1;
3327 4           __creating[0] = 0;
3328 4           __creating[1] = 0;
3329 4           __creating[2] = 0;
3330 4           __creating[3] = 0;
3331 4           __creating[4] = 0;
3332 4           __creating[5] = 0;
3333 4           __creating[6] = 0;
3334 4 50         __creating[7] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[7]);
    0          
3335 4 50         __creating[8] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[8]);
    0          
3336 4 50         __creating[9] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[9]);
    0          
3337             {
3338             {PDL_COMMENT("Start generic loop")
3339              
3340 4           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
3341 0           } break; case PDL_B: {
3342 4 50         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
3343 4           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3344              
3345 4 50         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3346 4           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3347              
3348 4 50         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3349 4           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3350              
3351 4 50         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3352 4           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3353              
3354 4 50         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3355 4           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3356              
3357 4 50         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3358 4           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3359              
3360 4 50         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3361 4           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3362              
3363 4 50         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3364 4           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3365              
3366 4 50         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3367 4           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3368              
3369 4 50         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3370 4           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3371              
3372 4           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3373 4           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3374 4           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3375 4           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3376 4           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3377 4           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3378 4           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3379 4           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3380 4           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3381              
3382             PDL_COMMENT("none")
3383 4           } } break; case PDL_S: {
3384 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3385 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3386              
3387 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3388 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3389              
3390 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3391 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3392              
3393 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3394 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3395              
3396 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3397 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3398              
3399 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3400 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3401              
3402 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3403 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3404              
3405 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3406 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3407              
3408 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3409 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3410              
3411 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3412 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3413              
3414 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3415 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3416 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3417 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3418 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3419 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3420 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3421 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3422 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3423              
3424             PDL_COMMENT("none")
3425 0           } } break; case PDL_US: {
3426 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3427 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3428              
3429 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3430 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3431              
3432 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3433 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3434              
3435 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3436 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3437              
3438 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3439 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3440              
3441 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3442 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3443              
3444 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3445 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3446              
3447 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3448 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3449              
3450 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3451 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3452              
3453 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3454 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3455              
3456 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3457 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3458 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3459 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3460 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3461 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3462 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3463 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3464 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3465              
3466             PDL_COMMENT("none")
3467 0           } } break; case PDL_L: {
3468 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3469 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3470              
3471 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3472 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3473              
3474 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3475 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3476              
3477 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3478 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3479              
3480 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3481 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3482              
3483 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3484 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3485              
3486 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3487 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3488              
3489 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3490 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3491              
3492 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3493 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3494              
3495 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3496 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3497              
3498 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3499 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3500 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3501 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3502 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3503 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3504 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3505 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3506 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3507              
3508             PDL_COMMENT("none")
3509 0           } } break; case PDL_IND: {
3510 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3511 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3512              
3513 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3514 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3515              
3516 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3517 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3518              
3519 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3520 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3521              
3522 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3523 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3524              
3525 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3526 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3527              
3528 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3529 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3530              
3531 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3532 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3533              
3534 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3535 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3536              
3537 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3538 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3539              
3540 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3541 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3542 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3543 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3544 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3545 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3546 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3547 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3548 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3549              
3550             PDL_COMMENT("none")
3551 0           } } break; case PDL_LL: {
3552 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3553 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3554              
3555 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3556 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3557              
3558 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3559 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3560              
3561 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3562 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3563              
3564 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3565 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3566              
3567 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3568 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3569              
3570 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3571 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3572              
3573 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3574 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3575              
3576 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3577 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3578              
3579 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3580 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3581              
3582 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3583 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3584 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3585 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3586 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3587 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3588 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3589 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3590 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3591              
3592             PDL_COMMENT("none")
3593 0           } } break; case PDL_F: {
3594 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3595 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3596              
3597 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3598 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3599              
3600 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3601 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3602              
3603 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3604 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3605              
3606 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3607 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3608              
3609 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3610 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3611              
3612 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3613 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3614              
3615 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3616 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3617              
3618 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3619 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3620              
3621 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3622 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3623              
3624 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3625 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3626 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3627 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3628 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3629 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3630 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3631 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3632 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3633              
3634             PDL_COMMENT("none")
3635 0           } } break; case PDL_D: {
3636 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
3637 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3638              
3639 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3640 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
3641              
3642 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
3643 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
3644              
3645 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
3646 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
3647              
3648 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
3649 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
3650              
3651 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
3652 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
3653              
3654 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
3655 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
3656              
3657 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
3658 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
3659              
3660 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
3661 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
3662              
3663 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
3664 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
3665              
3666 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
3667 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
3668 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
3669 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
3670 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
3671 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
3672 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
3673 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
3674 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
3675              
3676             PDL_COMMENT("none")
3677 0           } break;}
3678 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
3679             }
3680             }
3681             {
3682             static char *__parnames[] = {"whichi","nzvals","n","m","iterations","end","kappa","ut","s","vt"};
3683             static PDL_Indx __realdims[] = {2,1,0,0,0,1,0,2,1,2};
3684             static char __funcname[] = "PDL::SVDLIBC::svdlas2w";
3685             static pdl_errorinfo __einfo = {
3686             __funcname, __parnames, 10
3687             };
3688            
3689 4           PDL->initthreadstruct(2,__privtrans->pdls,
3690             __realdims,__creating,10,
3691             &__einfo,&(__privtrans->__pdlthread),
3692 4           __privtrans->vtable->per_pdl_flags,
3693             0 );
3694             }
3695 4 50         if(((__privtrans->pdls[0]))->ndims < 2) {
3696 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
3697 0 0         if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__Two_size <= 1) __privtrans->__Two_size = 1;
    0          
3698             }
3699 4 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
3700 4           __privtrans->__nnz_size = ((__privtrans->pdls[0]))->dims[0];
3701 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
3702 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
3703 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3704             }
3705             }
3706 4 50         if(__privtrans->__Two_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__Two_size == 1)) {
    0          
    0          
3707 4           __privtrans->__Two_size = ((__privtrans->pdls[0]))->dims[1];
3708 0 0         } else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__Two_size != ((__privtrans->pdls[0]))->dims[1]) {
    0          
3709 0 0         if(((__privtrans->pdls[0]))->dims[1] != 1) {
3710 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3711             }
3712             }
3713 4           PDL->make_physical(((__privtrans->pdls[0])));
3714 4 50         if(((__privtrans->pdls[1]))->ndims < 1) {
3715 0 0         if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
3716             }
3717 4 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    50          
    50          
3718 0           __privtrans->__nnz_size = ((__privtrans->pdls[1]))->dims[0];
3719 4 50         } else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[1]))->dims[0]) {
    50          
3720 0 0         if(((__privtrans->pdls[1]))->dims[0] != 1) {
3721 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3722             }
3723             }
3724 4           PDL->make_physical(((__privtrans->pdls[1])));
3725 4 50         if(((__privtrans->pdls[5]))->ndims < 1) {
3726 0 0         if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1;
    0          
3727             }
3728 4 50         if(__privtrans->__2_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__2_size == 1)) {
    0          
    0          
3729 4           __privtrans->__2_size = ((__privtrans->pdls[5]))->dims[0];
3730 0 0         } else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[5]))->dims[0]) {
    0          
3731 0 0         if(((__privtrans->pdls[5]))->dims[0] != 1) {
3732 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3733             }
3734             }
3735 4           PDL->make_physical(((__privtrans->pdls[5])));
3736 4 50         if(!__creating[7]) {
3737 4 50         if(((__privtrans->pdls[7]))->ndims < 2) {
3738 0 0         if (((__privtrans->pdls[7]))->ndims < 1 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
3739 0 0         if (((__privtrans->pdls[7]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
3740             }
3741 4 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__m_size == 1)) {
    0          
    0          
3742 4           __privtrans->__m_size = ((__privtrans->pdls[7]))->dims[0];
3743 0 0         } else if(((__privtrans->pdls[7]))->ndims > 0 && __privtrans->__m_size != ((__privtrans->pdls[7]))->dims[0]) {
    0          
3744 0 0         if(((__privtrans->pdls[7]))->dims[0] != 1) {
3745 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3746             }
3747             }
3748 4 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__d_size == 1)) {
    0          
    0          
3749 4           __privtrans->__d_size = ((__privtrans->pdls[7]))->dims[1];
3750 0 0         } else if(((__privtrans->pdls[7]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[7]))->dims[1]) {
    0          
3751 0 0         if(((__privtrans->pdls[7]))->dims[1] != 1) {
3752 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3753             }
3754             }
3755 4           PDL->make_physical(((__privtrans->pdls[7])));
3756             } else {
3757 0           PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__m_size;dims[1] = __privtrans->__d_size;
3758 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,7,dims,0);
3759 4 50         }if(!__creating[8]) {
3760 4 50         if(((__privtrans->pdls[8]))->ndims < 1) {
3761 0 0         if (((__privtrans->pdls[8]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
3762             }
3763 4 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[8]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
3764 0           __privtrans->__d_size = ((__privtrans->pdls[8]))->dims[0];
3765 4 50         } else if(((__privtrans->pdls[8]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[8]))->dims[0]) {
    50          
3766 0 0         if(((__privtrans->pdls[8]))->dims[0] != 1) {
3767 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3768             }
3769             }
3770 4           PDL->make_physical(((__privtrans->pdls[8])));
3771             } else {
3772 0           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;
3773 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,8,dims,0);
3774 4 50         }if(!__creating[9]) {
3775 4 50         if(((__privtrans->pdls[9]))->ndims < 2) {
3776 0 0         if (((__privtrans->pdls[9]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
3777 0 0         if (((__privtrans->pdls[9]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
3778             }
3779 4 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[9]))->ndims > 0 && __privtrans->__n_size == 1)) {
    0          
    0          
3780 4           __privtrans->__n_size = ((__privtrans->pdls[9]))->dims[0];
3781 0 0         } else if(((__privtrans->pdls[9]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[9]))->dims[0]) {
    0          
3782 0 0         if(((__privtrans->pdls[9]))->dims[0] != 1) {
3783 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3784             }
3785             }
3786 4 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[9]))->ndims > 1 && __privtrans->__d_size == 1)) {
    50          
    50          
3787 0           __privtrans->__d_size = ((__privtrans->pdls[9]))->dims[1];
3788 4 50         } else if(((__privtrans->pdls[9]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[9]))->dims[1]) {
    50          
3789 0 0         if(((__privtrans->pdls[9]))->dims[1] != 1) {
3790 0           PDL->pdl_barf("Error in svdlas2w:" "Wrong dims\n");
3791             }
3792             }
3793 4           PDL->make_physical(((__privtrans->pdls[9])));
3794             } else {
3795 0           PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size;dims[1] = __privtrans->__d_size;
3796 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,9,dims,0);
3797             }
3798             { PDL_COMMENT("convenience block")
3799 4           void *hdrp = NULL;
3800 4           char propagate_hdrcpy = 0;
3801 4           SV *hdr_copy = NULL;
3802 4 50         if(!hdrp &&
    50          
3803 0 0         __privtrans->pdls[0]->hdrsv &&
3804 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
3805             ) {
3806 0           hdrp = __privtrans->pdls[0]->hdrsv;
3807 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
3808             }
3809 4 50         if(!hdrp &&
    50          
3810 0 0         __privtrans->pdls[1]->hdrsv &&
3811 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
3812             ) {
3813 0           hdrp = __privtrans->pdls[1]->hdrsv;
3814 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
3815             }
3816 4 50         if(!hdrp &&
    50          
3817 0 0         __privtrans->pdls[2]->hdrsv &&
3818 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
3819             ) {
3820 0           hdrp = __privtrans->pdls[2]->hdrsv;
3821 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
3822             }
3823 4 50         if(!hdrp &&
    50          
3824 0 0         __privtrans->pdls[3]->hdrsv &&
3825 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
3826             ) {
3827 0           hdrp = __privtrans->pdls[3]->hdrsv;
3828 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
3829             }
3830 4 50         if(!hdrp &&
    50          
3831 0 0         __privtrans->pdls[4]->hdrsv &&
3832 0           (__privtrans->pdls[4]->state & PDL_HDRCPY)
3833             ) {
3834 0           hdrp = __privtrans->pdls[4]->hdrsv;
3835 0           propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0);
3836             }
3837 4 50         if(!hdrp &&
    50          
3838 0 0         __privtrans->pdls[5]->hdrsv &&
3839 0           (__privtrans->pdls[5]->state & PDL_HDRCPY)
3840             ) {
3841 0           hdrp = __privtrans->pdls[5]->hdrsv;
3842 0           propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0);
3843             }
3844 4 50         if(!hdrp &&
    50          
3845 0 0         __privtrans->pdls[6]->hdrsv &&
3846 0           (__privtrans->pdls[6]->state & PDL_HDRCPY)
3847             ) {
3848 0           hdrp = __privtrans->pdls[6]->hdrsv;
3849 0           propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0);
3850             }
3851 4 50         if(!hdrp &&
    50          
3852 4 50         !__creating[7] &&
3853 0 0         __privtrans->pdls[7]->hdrsv &&
3854 0           (__privtrans->pdls[7]->state & PDL_HDRCPY)
3855             ) {
3856 0           hdrp = __privtrans->pdls[7]->hdrsv;
3857 0           propagate_hdrcpy = ((__privtrans->pdls[7]->state & PDL_HDRCPY) != 0);
3858             }
3859 4 50         if(!hdrp &&
    50          
3860 4 50         !__creating[8] &&
3861 0 0         __privtrans->pdls[8]->hdrsv &&
3862 0           (__privtrans->pdls[8]->state & PDL_HDRCPY)
3863             ) {
3864 0           hdrp = __privtrans->pdls[8]->hdrsv;
3865 0           propagate_hdrcpy = ((__privtrans->pdls[8]->state & PDL_HDRCPY) != 0);
3866             }
3867 4 50         if(!hdrp &&
    50          
3868 4 50         !__creating[9] &&
3869 0 0         __privtrans->pdls[9]->hdrsv &&
3870 0           (__privtrans->pdls[9]->state & PDL_HDRCPY)
3871             ) {
3872 0           hdrp = __privtrans->pdls[9]->hdrsv;
3873 0           propagate_hdrcpy = ((__privtrans->pdls[9]->state & PDL_HDRCPY) != 0);
3874             }
3875 4 50         if (hdrp) {
3876 0 0         if(hdrp == &PL_sv_undef)
3877 0           hdr_copy = &PL_sv_undef;
3878             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
3879             int count;
3880             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
3881 0           dSP;
3882 0           ENTER ;
3883 0           SAVETMPS ;
3884 0 0         PUSHMARK(SP) ;
3885 0 0         XPUSHs( hdrp );
3886 0           PUTBACK ;
3887 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
3888 0           SPAGAIN ;
3889 0 0         if(count != 1)
3890 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
3891              
3892 0           hdr_copy = (SV *)POPs;
3893              
3894 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
3895 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
3896             }
3897              
3898 0 0         FREETMPS ;
3899 0           LEAVE ;
3900              
3901              
3902             } PDL_COMMENT("end of callback block")
3903              
3904 0 0         if ( __privtrans->pdls[7]->hdrsv != hdrp ){
3905 0 0         if( __privtrans->pdls[7]->hdrsv && __privtrans->pdls[7]->hdrsv != &PL_sv_undef)
    0          
3906 0           (void)SvREFCNT_dec( __privtrans->pdls[7]->hdrsv );
3907 0 0         if( hdr_copy != &PL_sv_undef )
3908 0           (void)SvREFCNT_inc(hdr_copy);
3909 0           __privtrans->pdls[7]->hdrsv = hdr_copy;
3910             }
3911 0 0         if(propagate_hdrcpy)
3912 0           __privtrans->pdls[7]->state |= PDL_HDRCPY;
3913 0 0         if ( __privtrans->pdls[8]->hdrsv != hdrp ){
3914 0 0         if( __privtrans->pdls[8]->hdrsv && __privtrans->pdls[8]->hdrsv != &PL_sv_undef)
    0          
3915 0           (void)SvREFCNT_dec( __privtrans->pdls[8]->hdrsv );
3916 0 0         if( hdr_copy != &PL_sv_undef )
3917 0           (void)SvREFCNT_inc(hdr_copy);
3918 0           __privtrans->pdls[8]->hdrsv = hdr_copy;
3919             }
3920 0 0         if(propagate_hdrcpy)
3921 0           __privtrans->pdls[8]->state |= PDL_HDRCPY;
3922 0 0         if ( __privtrans->pdls[9]->hdrsv != hdrp ){
3923 0 0         if( __privtrans->pdls[9]->hdrsv && __privtrans->pdls[9]->hdrsv != &PL_sv_undef)
    0          
3924 0           (void)SvREFCNT_dec( __privtrans->pdls[9]->hdrsv );
3925 0 0         if( hdr_copy != &PL_sv_undef )
3926 0           (void)SvREFCNT_inc(hdr_copy);
3927 0           __privtrans->pdls[9]->hdrsv = hdr_copy;
3928             }
3929 0 0         if(propagate_hdrcpy)
3930 0           __privtrans->pdls[9]->state |= PDL_HDRCPY;
3931              
3932 0 0         if(hdr_copy != &PL_sv_undef)
3933 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
3934             } PDL_COMMENT("end of if(hdrp) block")
3935             } PDL_COMMENT("end of conv. block")
3936 4 50         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    50          
3937 0           __privtrans->__inc_whichi_nnz = 0; else
3938 4 50         __privtrans->__inc_whichi_nnz = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1)
    50          
3939 0           __privtrans->__inc_whichi_Two = 0; else
3940 4 50         __privtrans->__inc_whichi_Two = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1)
    50          
3941 0           __privtrans->__inc_nzvals_nnz = 0; else
3942 4 50         __privtrans->__inc_nzvals_nnz = __privtrans->pdls[1]->dimincs[0];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1)
    50          
3943 0           __privtrans->__inc_end_2 = 0; else
3944 4 50         __privtrans->__inc_end_2 = __privtrans->pdls[5]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 0 || __privtrans->pdls[7]->dims[0] <= 1)
    50          
3945 0           __privtrans->__inc_ut_m = 0; else
3946 4 50         __privtrans->__inc_ut_m = __privtrans->pdls[7]->dimincs[0];if(__privtrans->pdls[7]->ndims <= 1 || __privtrans->pdls[7]->dims[1] <= 1)
    50          
3947 0           __privtrans->__inc_ut_d = 0; else
3948 4 50         __privtrans->__inc_ut_d = __privtrans->pdls[7]->dimincs[1];if(__privtrans->pdls[8]->ndims <= 0 || __privtrans->pdls[8]->dims[0] <= 1)
    50          
3949 0           __privtrans->__inc_s_d = 0; else
3950 4 50         __privtrans->__inc_s_d = __privtrans->pdls[8]->dimincs[0];if(__privtrans->pdls[9]->ndims <= 0 || __privtrans->pdls[9]->dims[0] <= 1)
    50          
3951 0           __privtrans->__inc_vt_n = 0; else
3952 4 50         __privtrans->__inc_vt_n = __privtrans->pdls[9]->dimincs[0];if(__privtrans->pdls[9]->ndims <= 1 || __privtrans->pdls[9]->dims[1] <= 1)
    50          
3953 0           __privtrans->__inc_vt_d = 0; else
3954 4           __privtrans->__inc_vt_d = __privtrans->pdls[9]->dimincs[1]; __privtrans->__ddone = 1;
3955             }
3956 4           }
3957            
3958              
3959 0           pdl_trans * pdl_svdlas2w_copy(pdl_trans *__tr ) {
3960             int __dim;
3961 0           pdl_svdlas2w_struct *__privtrans = (pdl_svdlas2w_struct *) __tr;
3962            
3963             {
3964 0           pdl_svdlas2w_struct *__copy = malloc(sizeof(pdl_svdlas2w_struct));
3965 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
3966 0           __copy->has_badvalue = __privtrans->has_badvalue;
3967 0           __copy->badvalue = __privtrans->badvalue;
3968 0           __copy->flags = __privtrans->flags;
3969 0           __copy->vtable = __privtrans->vtable;
3970 0           __copy->__datatype = __privtrans->__datatype;
3971 0           __copy->freeproc = NULL;
3972 0           __copy->__ddone = __privtrans->__ddone;
3973             {int i;
3974 0 0         for(i=0; i<__copy->vtable->npdls; i++)
3975 0           __copy->pdls[i] = __privtrans->pdls[i];
3976             }
3977            
3978 0 0         if(__copy->__ddone) {
3979 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_whichi_nnz=__copy->__inc_whichi_nnz;__privtrans->__inc_whichi_Two=__copy->__inc_whichi_Two;__privtrans->__inc_nzvals_nnz=__copy->__inc_nzvals_nnz;__privtrans->__inc_end_2=__copy->__inc_end_2;__privtrans->__inc_ut_m=__copy->__inc_ut_m;__privtrans->__inc_ut_d=__copy->__inc_ut_d;__privtrans->__inc_s_d=__copy->__inc_s_d;__privtrans->__inc_vt_n=__copy->__inc_vt_n;__privtrans->__inc_vt_d=__copy->__inc_vt_d;__copy->__Two_size=__privtrans->__Two_size;__copy->__nnz_size=__privtrans->__nnz_size;__copy->__d_size=__privtrans->__d_size;__copy->__n_size=__privtrans->__n_size;__copy->__m_size=__privtrans->__m_size;__copy->__2_size=__privtrans->__2_size;
3980             }
3981 0           return (pdl_trans*)__copy;
3982             }
3983             }
3984            
3985              
3986 4           void pdl_svdlas2w_readdata(pdl_trans *__tr ) {
3987             int __dim;
3988 4           pdl_svdlas2w_struct *__privtrans = (pdl_svdlas2w_struct *) __tr;
3989            
3990             {
3991             {PDL_COMMENT("Start generic loop")
3992              
3993 4           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
3994 0           } break; case PDL_B: {
3995 4 50         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
3996 4           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
3997              
3998 4 50         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
3999 4           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
4000              
4001 4 50         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
4002 4           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
4003              
4004 4 50         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
4005 4           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
4006              
4007 4 50         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
4008 4           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
4009              
4010 4 50         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
4011 4           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
4012              
4013 4 50         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
4014 4           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
4015              
4016 4 50         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
4017 4           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
4018              
4019 4 50         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
4020 4           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
4021              
4022 4 50         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
4023 4           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
4024              
4025              
4026             PDL_COMMENT("THREADLOOPBEGIN")
4027 4 50         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
4028 4           do { register PDL_Indx __tind1=0,__tind2=0;
4029 4           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
4030 4           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
4031 4           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
4032 4           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
4033 4           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
4034 4           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
4035 4           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
4036 4           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
4037 4           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
4038 4           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
4039 4           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
4040 4           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
4041 4           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
4042 4           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
4043 4           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
4044 4           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
4045 4           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
4046 4           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
4047 4           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
4048 4           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
4049 4           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
4050 4           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
4051 4           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
4052 4           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
4053 4           whichi_datap += __offsp[0];
4054 4           nzvals_datap += __offsp[1];
4055 4           n_datap += __offsp[2];
4056 4           m_datap += __offsp[3];
4057 4           iterations_datap += __offsp[4];
4058 4           end_datap += __offsp[5];
4059 4           kappa_datap += __offsp[6];
4060 4           ut_datap += __offsp[7];
4061 4           s_datap += __offsp[8];
4062 4           vt_datap += __offsp[9];
4063 8 100         for( __tind2 = 0 ;
4064             __tind2 < __tdims1 ;
4065 4           __tind2++
4066 4           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
4067 4           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
4068 4           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
4069 4           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
4070 4           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
4071 4           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
4072 4           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
4073 4           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
4074 4           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
4075 4           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
4076             )
4077             {
4078 8 100         for( __tind1 = 0 ;
4079             __tind1 < __tdims0 ;
4080 4           __tind1++
4081 4           ,whichi_datap += __tinc0_0
4082 4           ,nzvals_datap += __tinc0_1
4083 4           ,n_datap += __tinc0_2
4084 4           ,m_datap += __tinc0_3
4085 4           ,iterations_datap += __tinc0_4
4086 4           ,end_datap += __tinc0_5
4087 4           ,kappa_datap += __tinc0_6
4088 4           ,ut_datap += __tinc0_7
4089 4           ,s_datap += __tinc0_8
4090 4           ,vt_datap += __tinc0_9
4091             )
4092 4           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
4093 4           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
4094 4           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
4095 4           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
4096 4           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
4097 4           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
4098 4           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
4099 4           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
4100 4           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
4101              
4102              
4103             struct smat sm;
4104             SVDRec svdr;
4105 4           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
4106              
4107             /*-- setup sparse matrix --*/
4108 4           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
4109 4           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
4110 4           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
4111 4           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
4112 4           sm.value = (double *) nzvals_datap;
4113              
4114             /*-- sanity check: dimension "Two" --*/
4115 4 50         if (__privtrans->__Two_size != 2) {
4116 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
4117             }
4118              
4119             /*-- sanity check: sorted whichi() --*/
4120 92 100         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4121 88 50         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    50          
4122 88 50         if ( nzc < ci )
4123 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
4124 88           ci = nzc;
4125             }
4126              
4127             /*-- construct ptr() --*/
4128 4           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
4129 92 100         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4130 88 50         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    50          
4131 116 100         for ( ; ci <= nzc; ++ci) {
4132 28           sm.pointr[ci] = nzi;
4133             }
4134             }
4135 8 100         for ( ; ci <= dimN; ++ci) {
4136 4           sm.pointr[ci] = __privtrans->__nnz_size;
4137             }
4138              
4139             /*-- run SVD --*/
4140 4           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
4141 4           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
4142              
4143             /*-- pre-cleanup --*/
4144 4 50         if (sm.pointr) free(sm.pointr);
4145 4           sm.pointr = NULL;
4146 4           sm.rowind = NULL;
4147 4           sm.value = NULL;
4148              
4149             /*-- cleanup --*/
4150 4 50         if (svdr) svdFreeSVDRec(svdr);
4151              
4152             }
4153             PDL_COMMENT("THREADLOOPEND")
4154             }
4155             }
4156 4           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
4157 4           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
4158 4           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
4159 4           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
4160 4           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
4161 4           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
4162 4           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
4163 4           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
4164 4           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
4165 4           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
4166 4 50         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
4167 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
4168 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
4169              
4170 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
4171 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
4172              
4173 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
4174 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
4175              
4176 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
4177 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
4178              
4179 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
4180 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
4181              
4182 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
4183 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
4184              
4185 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
4186 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
4187              
4188 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
4189 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
4190              
4191 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
4192 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
4193              
4194 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
4195 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
4196              
4197              
4198             PDL_COMMENT("THREADLOOPBEGIN")
4199 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
4200 0           do { register PDL_Indx __tind1=0,__tind2=0;
4201 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
4202 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
4203 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
4204 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
4205 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
4206 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
4207 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
4208 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
4209 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
4210 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
4211 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
4212 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
4213 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
4214 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
4215 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
4216 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
4217 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
4218 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
4219 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
4220 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
4221 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
4222 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
4223 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
4224 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
4225 0           whichi_datap += __offsp[0];
4226 0           nzvals_datap += __offsp[1];
4227 0           n_datap += __offsp[2];
4228 0           m_datap += __offsp[3];
4229 0           iterations_datap += __offsp[4];
4230 0           end_datap += __offsp[5];
4231 0           kappa_datap += __offsp[6];
4232 0           ut_datap += __offsp[7];
4233 0           s_datap += __offsp[8];
4234 0           vt_datap += __offsp[9];
4235 0 0         for( __tind2 = 0 ;
4236             __tind2 < __tdims1 ;
4237 0           __tind2++
4238 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
4239 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
4240 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
4241 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
4242 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
4243 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
4244 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
4245 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
4246 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
4247 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
4248             )
4249             {
4250 0 0         for( __tind1 = 0 ;
4251             __tind1 < __tdims0 ;
4252 0           __tind1++
4253 0           ,whichi_datap += __tinc0_0
4254 0           ,nzvals_datap += __tinc0_1
4255 0           ,n_datap += __tinc0_2
4256 0           ,m_datap += __tinc0_3
4257 0           ,iterations_datap += __tinc0_4
4258 0           ,end_datap += __tinc0_5
4259 0           ,kappa_datap += __tinc0_6
4260 0           ,ut_datap += __tinc0_7
4261 0           ,s_datap += __tinc0_8
4262 0           ,vt_datap += __tinc0_9
4263             )
4264 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
4265 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
4266 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
4267 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
4268 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
4269 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
4270 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
4271 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
4272 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
4273              
4274              
4275             struct smat sm;
4276             SVDRec svdr;
4277 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
4278              
4279             /*-- setup sparse matrix --*/
4280 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
4281 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
4282 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
4283 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
4284 0           sm.value = (double *) nzvals_datap;
4285              
4286             /*-- sanity check: dimension "Two" --*/
4287 0 0         if (__privtrans->__Two_size != 2) {
4288 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
4289             }
4290              
4291             /*-- sanity check: sorted whichi() --*/
4292 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4293 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4294 0 0         if ( nzc < ci )
4295 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
4296 0           ci = nzc;
4297             }
4298              
4299             /*-- construct ptr() --*/
4300 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
4301 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4302 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4303 0 0         for ( ; ci <= nzc; ++ci) {
4304 0           sm.pointr[ci] = nzi;
4305             }
4306             }
4307 0 0         for ( ; ci <= dimN; ++ci) {
4308 0           sm.pointr[ci] = __privtrans->__nnz_size;
4309             }
4310              
4311             /*-- run SVD --*/
4312 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
4313 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
4314              
4315             /*-- pre-cleanup --*/
4316 0 0         if (sm.pointr) free(sm.pointr);
4317 0           sm.pointr = NULL;
4318 0           sm.rowind = NULL;
4319 0           sm.value = NULL;
4320              
4321             /*-- cleanup --*/
4322 0 0         if (svdr) svdFreeSVDRec(svdr);
4323              
4324             }
4325             PDL_COMMENT("THREADLOOPEND")
4326             }
4327             }
4328 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
4329 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
4330 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
4331 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
4332 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
4333 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
4334 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
4335 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
4336 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
4337 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
4338 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
4339 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
4340 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
4341              
4342 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
4343 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
4344              
4345 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
4346 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
4347              
4348 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
4349 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
4350              
4351 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
4352 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
4353              
4354 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
4355 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
4356              
4357 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
4358 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
4359              
4360 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
4361 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
4362              
4363 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
4364 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
4365              
4366 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
4367 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
4368              
4369              
4370             PDL_COMMENT("THREADLOOPBEGIN")
4371 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
4372 0           do { register PDL_Indx __tind1=0,__tind2=0;
4373 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
4374 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
4375 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
4376 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
4377 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
4378 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
4379 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
4380 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
4381 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
4382 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
4383 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
4384 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
4385 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
4386 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
4387 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
4388 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
4389 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
4390 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
4391 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
4392 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
4393 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
4394 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
4395 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
4396 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
4397 0           whichi_datap += __offsp[0];
4398 0           nzvals_datap += __offsp[1];
4399 0           n_datap += __offsp[2];
4400 0           m_datap += __offsp[3];
4401 0           iterations_datap += __offsp[4];
4402 0           end_datap += __offsp[5];
4403 0           kappa_datap += __offsp[6];
4404 0           ut_datap += __offsp[7];
4405 0           s_datap += __offsp[8];
4406 0           vt_datap += __offsp[9];
4407 0 0         for( __tind2 = 0 ;
4408             __tind2 < __tdims1 ;
4409 0           __tind2++
4410 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
4411 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
4412 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
4413 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
4414 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
4415 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
4416 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
4417 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
4418 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
4419 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
4420             )
4421             {
4422 0 0         for( __tind1 = 0 ;
4423             __tind1 < __tdims0 ;
4424 0           __tind1++
4425 0           ,whichi_datap += __tinc0_0
4426 0           ,nzvals_datap += __tinc0_1
4427 0           ,n_datap += __tinc0_2
4428 0           ,m_datap += __tinc0_3
4429 0           ,iterations_datap += __tinc0_4
4430 0           ,end_datap += __tinc0_5
4431 0           ,kappa_datap += __tinc0_6
4432 0           ,ut_datap += __tinc0_7
4433 0           ,s_datap += __tinc0_8
4434 0           ,vt_datap += __tinc0_9
4435             )
4436 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
4437 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
4438 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
4439 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
4440 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
4441 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
4442 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
4443 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
4444 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
4445              
4446              
4447             struct smat sm;
4448             SVDRec svdr;
4449 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
4450              
4451             /*-- setup sparse matrix --*/
4452 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
4453 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
4454 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
4455 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
4456 0           sm.value = (double *) nzvals_datap;
4457              
4458             /*-- sanity check: dimension "Two" --*/
4459 0 0         if (__privtrans->__Two_size != 2) {
4460 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
4461             }
4462              
4463             /*-- sanity check: sorted whichi() --*/
4464 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4465 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4466 0 0         if ( nzc < ci )
4467 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
4468 0           ci = nzc;
4469             }
4470              
4471             /*-- construct ptr() --*/
4472 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
4473 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4474 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4475 0 0         for ( ; ci <= nzc; ++ci) {
4476 0           sm.pointr[ci] = nzi;
4477             }
4478             }
4479 0 0         for ( ; ci <= dimN; ++ci) {
4480 0           sm.pointr[ci] = __privtrans->__nnz_size;
4481             }
4482              
4483             /*-- run SVD --*/
4484 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
4485 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
4486              
4487             /*-- pre-cleanup --*/
4488 0 0         if (sm.pointr) free(sm.pointr);
4489 0           sm.pointr = NULL;
4490 0           sm.rowind = NULL;
4491 0           sm.value = NULL;
4492              
4493             /*-- cleanup --*/
4494 0 0         if (svdr) svdFreeSVDRec(svdr);
4495              
4496             }
4497             PDL_COMMENT("THREADLOOPEND")
4498             }
4499             }
4500 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
4501 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
4502 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
4503 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
4504 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
4505 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
4506 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
4507 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
4508 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
4509 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
4510 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
4511 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
4512 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
4513              
4514 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
4515 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
4516              
4517 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
4518 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
4519              
4520 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
4521 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
4522              
4523 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
4524 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
4525              
4526 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
4527 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
4528              
4529 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
4530 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
4531              
4532 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
4533 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
4534              
4535 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
4536 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
4537              
4538 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
4539 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
4540              
4541              
4542             PDL_COMMENT("THREADLOOPBEGIN")
4543 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
4544 0           do { register PDL_Indx __tind1=0,__tind2=0;
4545 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
4546 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
4547 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
4548 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
4549 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
4550 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
4551 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
4552 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
4553 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
4554 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
4555 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
4556 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
4557 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
4558 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
4559 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
4560 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
4561 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
4562 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
4563 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
4564 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
4565 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
4566 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
4567 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
4568 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
4569 0           whichi_datap += __offsp[0];
4570 0           nzvals_datap += __offsp[1];
4571 0           n_datap += __offsp[2];
4572 0           m_datap += __offsp[3];
4573 0           iterations_datap += __offsp[4];
4574 0           end_datap += __offsp[5];
4575 0           kappa_datap += __offsp[6];
4576 0           ut_datap += __offsp[7];
4577 0           s_datap += __offsp[8];
4578 0           vt_datap += __offsp[9];
4579 0 0         for( __tind2 = 0 ;
4580             __tind2 < __tdims1 ;
4581 0           __tind2++
4582 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
4583 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
4584 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
4585 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
4586 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
4587 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
4588 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
4589 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
4590 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
4591 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
4592             )
4593             {
4594 0 0         for( __tind1 = 0 ;
4595             __tind1 < __tdims0 ;
4596 0           __tind1++
4597 0           ,whichi_datap += __tinc0_0
4598 0           ,nzvals_datap += __tinc0_1
4599 0           ,n_datap += __tinc0_2
4600 0           ,m_datap += __tinc0_3
4601 0           ,iterations_datap += __tinc0_4
4602 0           ,end_datap += __tinc0_5
4603 0           ,kappa_datap += __tinc0_6
4604 0           ,ut_datap += __tinc0_7
4605 0           ,s_datap += __tinc0_8
4606 0           ,vt_datap += __tinc0_9
4607             )
4608 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
4609 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
4610 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
4611 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
4612 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
4613 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
4614 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
4615 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
4616 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
4617              
4618              
4619             struct smat sm;
4620             SVDRec svdr;
4621 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
4622              
4623             /*-- setup sparse matrix --*/
4624 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
4625 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
4626 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
4627 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
4628 0           sm.value = (double *) nzvals_datap;
4629              
4630             /*-- sanity check: dimension "Two" --*/
4631 0 0         if (__privtrans->__Two_size != 2) {
4632 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
4633             }
4634              
4635             /*-- sanity check: sorted whichi() --*/
4636 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4637 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4638 0 0         if ( nzc < ci )
4639 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
4640 0           ci = nzc;
4641             }
4642              
4643             /*-- construct ptr() --*/
4644 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
4645 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4646 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4647 0 0         for ( ; ci <= nzc; ++ci) {
4648 0           sm.pointr[ci] = nzi;
4649             }
4650             }
4651 0 0         for ( ; ci <= dimN; ++ci) {
4652 0           sm.pointr[ci] = __privtrans->__nnz_size;
4653             }
4654              
4655             /*-- run SVD --*/
4656 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
4657 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
4658              
4659             /*-- pre-cleanup --*/
4660 0 0         if (sm.pointr) free(sm.pointr);
4661 0           sm.pointr = NULL;
4662 0           sm.rowind = NULL;
4663 0           sm.value = NULL;
4664              
4665             /*-- cleanup --*/
4666 0 0         if (svdr) svdFreeSVDRec(svdr);
4667              
4668             }
4669             PDL_COMMENT("THREADLOOPEND")
4670             }
4671             }
4672 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
4673 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
4674 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
4675 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
4676 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
4677 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
4678 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
4679 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
4680 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
4681 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
4682 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
4683 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
4684 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
4685              
4686 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
4687 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
4688              
4689 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
4690 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
4691              
4692 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
4693 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
4694              
4695 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
4696 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
4697              
4698 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
4699 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
4700              
4701 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
4702 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
4703              
4704 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
4705 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
4706              
4707 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
4708 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
4709              
4710 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
4711 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
4712              
4713              
4714             PDL_COMMENT("THREADLOOPBEGIN")
4715 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
4716 0           do { register PDL_Indx __tind1=0,__tind2=0;
4717 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
4718 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
4719 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
4720 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
4721 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
4722 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
4723 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
4724 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
4725 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
4726 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
4727 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
4728 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
4729 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
4730 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
4731 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
4732 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
4733 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
4734 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
4735 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
4736 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
4737 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
4738 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
4739 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
4740 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
4741 0           whichi_datap += __offsp[0];
4742 0           nzvals_datap += __offsp[1];
4743 0           n_datap += __offsp[2];
4744 0           m_datap += __offsp[3];
4745 0           iterations_datap += __offsp[4];
4746 0           end_datap += __offsp[5];
4747 0           kappa_datap += __offsp[6];
4748 0           ut_datap += __offsp[7];
4749 0           s_datap += __offsp[8];
4750 0           vt_datap += __offsp[9];
4751 0 0         for( __tind2 = 0 ;
4752             __tind2 < __tdims1 ;
4753 0           __tind2++
4754 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
4755 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
4756 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
4757 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
4758 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
4759 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
4760 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
4761 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
4762 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
4763 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
4764             )
4765             {
4766 0 0         for( __tind1 = 0 ;
4767             __tind1 < __tdims0 ;
4768 0           __tind1++
4769 0           ,whichi_datap += __tinc0_0
4770 0           ,nzvals_datap += __tinc0_1
4771 0           ,n_datap += __tinc0_2
4772 0           ,m_datap += __tinc0_3
4773 0           ,iterations_datap += __tinc0_4
4774 0           ,end_datap += __tinc0_5
4775 0           ,kappa_datap += __tinc0_6
4776 0           ,ut_datap += __tinc0_7
4777 0           ,s_datap += __tinc0_8
4778 0           ,vt_datap += __tinc0_9
4779             )
4780 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
4781 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
4782 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
4783 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
4784 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
4785 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
4786 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
4787 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
4788 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
4789              
4790              
4791             struct smat sm;
4792             SVDRec svdr;
4793 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
4794              
4795             /*-- setup sparse matrix --*/
4796 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
4797 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
4798 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
4799 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
4800 0           sm.value = (double *) nzvals_datap;
4801              
4802             /*-- sanity check: dimension "Two" --*/
4803 0 0         if (__privtrans->__Two_size != 2) {
4804 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
4805             }
4806              
4807             /*-- sanity check: sorted whichi() --*/
4808 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4809 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4810 0 0         if ( nzc < ci )
4811 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
4812 0           ci = nzc;
4813             }
4814              
4815             /*-- construct ptr() --*/
4816 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
4817 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4818 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4819 0 0         for ( ; ci <= nzc; ++ci) {
4820 0           sm.pointr[ci] = nzi;
4821             }
4822             }
4823 0 0         for ( ; ci <= dimN; ++ci) {
4824 0           sm.pointr[ci] = __privtrans->__nnz_size;
4825             }
4826              
4827             /*-- run SVD --*/
4828 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
4829 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
4830              
4831             /*-- pre-cleanup --*/
4832 0 0         if (sm.pointr) free(sm.pointr);
4833 0           sm.pointr = NULL;
4834 0           sm.rowind = NULL;
4835 0           sm.value = NULL;
4836              
4837             /*-- cleanup --*/
4838 0 0         if (svdr) svdFreeSVDRec(svdr);
4839              
4840             }
4841             PDL_COMMENT("THREADLOOPEND")
4842             }
4843             }
4844 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
4845 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
4846 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
4847 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
4848 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
4849 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
4850 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
4851 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
4852 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
4853 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
4854 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
4855 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
4856 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
4857              
4858 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
4859 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
4860              
4861 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
4862 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
4863              
4864 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
4865 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
4866              
4867 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
4868 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
4869              
4870 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
4871 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
4872              
4873 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
4874 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
4875              
4876 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
4877 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
4878              
4879 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
4880 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
4881              
4882 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
4883 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
4884              
4885              
4886             PDL_COMMENT("THREADLOOPBEGIN")
4887 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
4888 0           do { register PDL_Indx __tind1=0,__tind2=0;
4889 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
4890 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
4891 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
4892 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
4893 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
4894 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
4895 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
4896 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
4897 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
4898 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
4899 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
4900 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
4901 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
4902 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
4903 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
4904 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
4905 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
4906 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
4907 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
4908 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
4909 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
4910 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
4911 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
4912 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
4913 0           whichi_datap += __offsp[0];
4914 0           nzvals_datap += __offsp[1];
4915 0           n_datap += __offsp[2];
4916 0           m_datap += __offsp[3];
4917 0           iterations_datap += __offsp[4];
4918 0           end_datap += __offsp[5];
4919 0           kappa_datap += __offsp[6];
4920 0           ut_datap += __offsp[7];
4921 0           s_datap += __offsp[8];
4922 0           vt_datap += __offsp[9];
4923 0 0         for( __tind2 = 0 ;
4924             __tind2 < __tdims1 ;
4925 0           __tind2++
4926 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
4927 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
4928 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
4929 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
4930 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
4931 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
4932 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
4933 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
4934 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
4935 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
4936             )
4937             {
4938 0 0         for( __tind1 = 0 ;
4939             __tind1 < __tdims0 ;
4940 0           __tind1++
4941 0           ,whichi_datap += __tinc0_0
4942 0           ,nzvals_datap += __tinc0_1
4943 0           ,n_datap += __tinc0_2
4944 0           ,m_datap += __tinc0_3
4945 0           ,iterations_datap += __tinc0_4
4946 0           ,end_datap += __tinc0_5
4947 0           ,kappa_datap += __tinc0_6
4948 0           ,ut_datap += __tinc0_7
4949 0           ,s_datap += __tinc0_8
4950 0           ,vt_datap += __tinc0_9
4951             )
4952 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
4953 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
4954 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
4955 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
4956 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
4957 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
4958 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
4959 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
4960 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
4961              
4962              
4963             struct smat sm;
4964             SVDRec svdr;
4965 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
4966              
4967             /*-- setup sparse matrix --*/
4968 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
4969 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
4970 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
4971 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
4972 0           sm.value = (double *) nzvals_datap;
4973              
4974             /*-- sanity check: dimension "Two" --*/
4975 0 0         if (__privtrans->__Two_size != 2) {
4976 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
4977             }
4978              
4979             /*-- sanity check: sorted whichi() --*/
4980 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4981 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4982 0 0         if ( nzc < ci )
4983 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
4984 0           ci = nzc;
4985             }
4986              
4987             /*-- construct ptr() --*/
4988 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
4989 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
4990 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
4991 0 0         for ( ; ci <= nzc; ++ci) {
4992 0           sm.pointr[ci] = nzi;
4993             }
4994             }
4995 0 0         for ( ; ci <= dimN; ++ci) {
4996 0           sm.pointr[ci] = __privtrans->__nnz_size;
4997             }
4998              
4999             /*-- run SVD --*/
5000 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
5001 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
5002              
5003             /*-- pre-cleanup --*/
5004 0 0         if (sm.pointr) free(sm.pointr);
5005 0           sm.pointr = NULL;
5006 0           sm.rowind = NULL;
5007 0           sm.value = NULL;
5008              
5009             /*-- cleanup --*/
5010 0 0         if (svdr) svdFreeSVDRec(svdr);
5011              
5012             }
5013             PDL_COMMENT("THREADLOOPEND")
5014             }
5015             }
5016 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
5017 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
5018 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
5019 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
5020 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
5021 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
5022 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
5023 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
5024 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
5025 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
5026 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
5027 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5028 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
5029              
5030 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5031 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
5032              
5033 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5034 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
5035              
5036 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5037 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
5038              
5039 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5040 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
5041              
5042 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5043 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5044              
5045 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5046 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5047              
5048 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
5049 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
5050              
5051 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
5052 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
5053              
5054 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
5055 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
5056              
5057              
5058             PDL_COMMENT("THREADLOOPBEGIN")
5059 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
5060 0           do { register PDL_Indx __tind1=0,__tind2=0;
5061 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
5062 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
5063 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
5064 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
5065 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
5066 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
5067 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
5068 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
5069 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
5070 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
5071 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
5072 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
5073 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
5074 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
5075 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
5076 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
5077 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
5078 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
5079 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
5080 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
5081 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
5082 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
5083 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
5084 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
5085 0           whichi_datap += __offsp[0];
5086 0           nzvals_datap += __offsp[1];
5087 0           n_datap += __offsp[2];
5088 0           m_datap += __offsp[3];
5089 0           iterations_datap += __offsp[4];
5090 0           end_datap += __offsp[5];
5091 0           kappa_datap += __offsp[6];
5092 0           ut_datap += __offsp[7];
5093 0           s_datap += __offsp[8];
5094 0           vt_datap += __offsp[9];
5095 0 0         for( __tind2 = 0 ;
5096             __tind2 < __tdims1 ;
5097 0           __tind2++
5098 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
5099 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
5100 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
5101 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
5102 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
5103 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
5104 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
5105 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
5106 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
5107 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
5108             )
5109             {
5110 0 0         for( __tind1 = 0 ;
5111             __tind1 < __tdims0 ;
5112 0           __tind1++
5113 0           ,whichi_datap += __tinc0_0
5114 0           ,nzvals_datap += __tinc0_1
5115 0           ,n_datap += __tinc0_2
5116 0           ,m_datap += __tinc0_3
5117 0           ,iterations_datap += __tinc0_4
5118 0           ,end_datap += __tinc0_5
5119 0           ,kappa_datap += __tinc0_6
5120 0           ,ut_datap += __tinc0_7
5121 0           ,s_datap += __tinc0_8
5122 0           ,vt_datap += __tinc0_9
5123             )
5124 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5125 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
5126 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
5127 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5128 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5129 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5130 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5131 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5132 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
5133              
5134              
5135             struct smat sm;
5136             SVDRec svdr;
5137 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
5138              
5139             /*-- setup sparse matrix --*/
5140 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
5141 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
5142 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
5143 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
5144 0           sm.value = (double *) nzvals_datap;
5145              
5146             /*-- sanity check: dimension "Two" --*/
5147 0 0         if (__privtrans->__Two_size != 2) {
5148 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
5149             }
5150              
5151             /*-- sanity check: sorted whichi() --*/
5152 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
5153 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
5154 0 0         if ( nzc < ci )
5155 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
5156 0           ci = nzc;
5157             }
5158              
5159             /*-- construct ptr() --*/
5160 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
5161 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
5162 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
5163 0 0         for ( ; ci <= nzc; ++ci) {
5164 0           sm.pointr[ci] = nzi;
5165             }
5166             }
5167 0 0         for ( ; ci <= dimN; ++ci) {
5168 0           sm.pointr[ci] = __privtrans->__nnz_size;
5169             }
5170              
5171             /*-- run SVD --*/
5172 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
5173 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
5174              
5175             /*-- pre-cleanup --*/
5176 0 0         if (sm.pointr) free(sm.pointr);
5177 0           sm.pointr = NULL;
5178 0           sm.rowind = NULL;
5179 0           sm.value = NULL;
5180              
5181             /*-- cleanup --*/
5182 0 0         if (svdr) svdFreeSVDRec(svdr);
5183              
5184             }
5185             PDL_COMMENT("THREADLOOPEND")
5186             }
5187             }
5188 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
5189 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
5190 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
5191 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
5192 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
5193 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
5194 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
5195 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
5196 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
5197 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
5198 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
5199 0 0         PDL_Indx * whichi_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5200 0           PDL_Indx * whichi_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
5201              
5202 0 0         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5203 0           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
5204              
5205 0 0         PDL_Indx * n_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5206 0           PDL_Indx * n_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
5207              
5208 0 0         PDL_Indx * m_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5209 0           PDL_Indx * m_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
5210              
5211 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5212 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
5213              
5214 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5215 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5216              
5217 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5218 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5219              
5220 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[7]),(__privtrans->vtable->per_pdl_flags[7]))));
    0          
5221 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[7])->data));
5222              
5223 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[8]),(__privtrans->vtable->per_pdl_flags[8]))));
    0          
5224 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[8])->data));
5225              
5226 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[9]),(__privtrans->vtable->per_pdl_flags[9]))));
    0          
5227 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[9])->data));
5228              
5229              
5230             PDL_COMMENT("THREADLOOPBEGIN")
5231 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
5232 0           do { register PDL_Indx __tind1=0,__tind2=0;
5233 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
5234 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
5235 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
5236 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
5237 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
5238 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
5239 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
5240 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
5241 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
5242 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
5243 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
5244 0           register PDL_Indx __tinc0_7 = __privtrans->__pdlthread.incs[7];
5245 0           register PDL_Indx __tinc0_8 = __privtrans->__pdlthread.incs[8];
5246 0           register PDL_Indx __tinc0_9 = __privtrans->__pdlthread.incs[9];
5247 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
5248 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
5249 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
5250 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
5251 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
5252 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
5253 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
5254 0           register PDL_Indx __tinc1_7 = __privtrans->__pdlthread.incs[__tnpdls+7];
5255 0           register PDL_Indx __tinc1_8 = __privtrans->__pdlthread.incs[__tnpdls+8];
5256 0           register PDL_Indx __tinc1_9 = __privtrans->__pdlthread.incs[__tnpdls+9];
5257 0           whichi_datap += __offsp[0];
5258 0           nzvals_datap += __offsp[1];
5259 0           n_datap += __offsp[2];
5260 0           m_datap += __offsp[3];
5261 0           iterations_datap += __offsp[4];
5262 0           end_datap += __offsp[5];
5263 0           kappa_datap += __offsp[6];
5264 0           ut_datap += __offsp[7];
5265 0           s_datap += __offsp[8];
5266 0           vt_datap += __offsp[9];
5267 0 0         for( __tind2 = 0 ;
5268             __tind2 < __tdims1 ;
5269 0           __tind2++
5270 0           ,whichi_datap += __tinc1_0 - __tinc0_0 * __tdims0
5271 0           ,nzvals_datap += __tinc1_1 - __tinc0_1 * __tdims0
5272 0           ,n_datap += __tinc1_2 - __tinc0_2 * __tdims0
5273 0           ,m_datap += __tinc1_3 - __tinc0_3 * __tdims0
5274 0           ,iterations_datap += __tinc1_4 - __tinc0_4 * __tdims0
5275 0           ,end_datap += __tinc1_5 - __tinc0_5 * __tdims0
5276 0           ,kappa_datap += __tinc1_6 - __tinc0_6 * __tdims0
5277 0           ,ut_datap += __tinc1_7 - __tinc0_7 * __tdims0
5278 0           ,s_datap += __tinc1_8 - __tinc0_8 * __tdims0
5279 0           ,vt_datap += __tinc1_9 - __tinc0_9 * __tdims0
5280             )
5281             {
5282 0 0         for( __tind1 = 0 ;
5283             __tind1 < __tdims0 ;
5284 0           __tind1++
5285 0           ,whichi_datap += __tinc0_0
5286 0           ,nzvals_datap += __tinc0_1
5287 0           ,n_datap += __tinc0_2
5288 0           ,m_datap += __tinc0_3
5289 0           ,iterations_datap += __tinc0_4
5290 0           ,end_datap += __tinc0_5
5291 0           ,kappa_datap += __tinc0_6
5292 0           ,ut_datap += __tinc0_7
5293 0           ,s_datap += __tinc0_8
5294 0           ,vt_datap += __tinc0_9
5295             )
5296 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5297 0           register PDL_Indx __inc_whichi_nnz = __privtrans->__inc_whichi_nnz;
5298 0           register PDL_Indx __inc_whichi_Two = __privtrans->__inc_whichi_Two;
5299 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5300 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5301 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5302 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5303 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5304 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
5305              
5306              
5307             struct smat sm;
5308             SVDRec svdr;
5309 0           __SVDLIBC_LONG ci,nzi,nzc, dimN=(n_datap)[0] PDL_COMMENT("ACCESS()") ;
5310              
5311             /*-- setup sparse matrix --*/
5312 0           sm.rows = (__SVDLIBC_LONG) (m_datap)[0] PDL_COMMENT("ACCESS()") ;
5313 0           sm.cols = (__SVDLIBC_LONG) (n_datap)[0] PDL_COMMENT("ACCESS()") ;
5314 0           sm.vals = (__SVDLIBC_LONG) __privtrans->__nnz_size;
5315 0           sm.rowind = (__SVDLIBC_LONG *) (whichi_datap + __privtrans->__nnz_size);
5316 0           sm.value = (double *) nzvals_datap;
5317              
5318             /*-- sanity check: dimension "Two" --*/
5319 0 0         if (__privtrans->__Two_size != 2) {
5320 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
5321             }
5322              
5323             /*-- sanity check: sorted whichi() --*/
5324 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
5325 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
5326 0 0         if ( nzc < ci )
5327 0           croak("svdlas2w(): input indices whichi() are not sorted at nzi=%ld, nzc=%ld, current ci=%ld!", nzi, nzc, ci);
5328 0           ci = nzc;
5329             }
5330              
5331             /*-- construct ptr() --*/
5332 0           sm.pointr = (__SVDLIBC_LONG *) malloc((1+dimN)*sizeof(__SVDLIBC_LONG));
5333 0 0         for (ci=0,nzi=0; nzi < __privtrans->__nnz_size; ++nzi) {
5334 0 0         nzc = (whichi_datap)[0+(__inc_whichi_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))+(__inc_whichi_Two*PP_INDTERM(__privtrans->__Two_size, 0))] PDL_COMMENT("ACCESS()") ;
    0          
5335 0 0         for ( ; ci <= nzc; ++ci) {
5336 0           sm.pointr[ci] = nzi;
5337             }
5338             }
5339 0 0         for ( ; ci <= dimN; ++ci) {
5340 0           sm.pointr[ci] = __privtrans->__nnz_size;
5341             }
5342              
5343             /*-- run SVD --*/
5344 0           svdr = svdLAS2(&sm, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
5345 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
5346              
5347             /*-- pre-cleanup --*/
5348 0 0         if (sm.pointr) free(sm.pointr);
5349 0           sm.pointr = NULL;
5350 0           sm.rowind = NULL;
5351 0           sm.value = NULL;
5352              
5353             /*-- cleanup --*/
5354 0 0         if (svdr) svdFreeSVDRec(svdr);
5355              
5356             }
5357             PDL_COMMENT("THREADLOOPEND")
5358             }
5359             }
5360 0           whichi_datap -= __tinc1_0 * __tdims1 + __offsp[0];
5361 0           nzvals_datap -= __tinc1_1 * __tdims1 + __offsp[1];
5362 0           n_datap -= __tinc1_2 * __tdims1 + __offsp[2];
5363 0           m_datap -= __tinc1_3 * __tdims1 + __offsp[3];
5364 0           iterations_datap -= __tinc1_4 * __tdims1 + __offsp[4];
5365 0           end_datap -= __tinc1_5 * __tdims1 + __offsp[5];
5366 0           kappa_datap -= __tinc1_6 * __tdims1 + __offsp[6];
5367 0           ut_datap -= __tinc1_7 * __tdims1 + __offsp[7];
5368 0           s_datap -= __tinc1_8 * __tdims1 + __offsp[8];
5369 0           vt_datap -= __tinc1_9 * __tdims1 + __offsp[9];
5370 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
5371 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
5372             }
5373             }
5374             }
5375            
5376              
5377              
5378              
5379 4           void pdl_svdlas2w_free(pdl_trans *__tr ) {
5380             int __dim;
5381 4           pdl_svdlas2w_struct *__privtrans = (pdl_svdlas2w_struct *) __tr;
5382            
5383             {
5384            
5385 4           PDL_TR_CLRMAGIC(__privtrans);
5386            
5387 4 50         if(__privtrans->__ddone) {
5388 4           PDL->freethreadloop(&(__privtrans->__pdlthread));
5389             ;;;;;;;;;;;;;;;;
5390             }
5391            
5392             }
5393 4           }
5394            
5395              
5396              
5397              
5398             static char pdl_svdlas2w_vtable_flags[] =
5399             { 0,0,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,0,0,0};
5400             pdl_transvtable pdl_svdlas2w_vtable = {
5401             0,0, 7, 10, pdl_svdlas2w_vtable_flags,
5402             pdl_svdlas2w_redodims, pdl_svdlas2w_readdata, NULL,
5403             pdl_svdlas2w_free,NULL,NULL,pdl_svdlas2w_copy,
5404             sizeof(pdl_svdlas2w_struct),"pdl_svdlas2w_vtable"
5405             };
5406              
5407             typedef struct pdl_svdlas2d_struct {
5408             PDL_TRANS_START(7);
5409             pdl_thread __pdlthread;PDL_Indx __inc_a_n;PDL_Indx __inc_a_m;PDL_Indx __inc_end_2;PDL_Indx __inc_ut_m;PDL_Indx __inc_ut_d;PDL_Indx __inc_s_d;PDL_Indx __inc_vt_n;PDL_Indx __inc_vt_d;PDL_Indx __n_size;PDL_Indx __m_size;PDL_Indx __d_size;PDL_Indx __2_size;
5410            
5411             char __ddone; PDL_COMMENT("Dims done")
5412             } pdl_svdlas2d_struct;
5413              
5414 3           void pdl_svdlas2d_redodims(pdl_trans *__tr ) {
5415             int __dim;
5416 3           pdl_svdlas2d_struct *__privtrans = (pdl_svdlas2d_struct *) __tr;
5417            
5418             {
5419             PDL_Indx __creating[7];
5420 3           __privtrans->__n_size = -1;
5421 3           __privtrans->__m_size = -1;
5422 3           __privtrans->__d_size = -1;
5423 3           __privtrans->__2_size = -1;
5424 3           __creating[0] = 0;
5425 3           __creating[1] = 0;
5426 3           __creating[2] = 0;
5427 3           __creating[3] = 0;
5428 3 50         __creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]);
    0          
5429 3 50         __creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]);
    0          
5430 3 50         __creating[6] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[6]);
    0          
5431             {
5432             {PDL_COMMENT("Start generic loop")
5433              
5434 3           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
5435 0           } break; case PDL_B: {
5436 3 50         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5437 3           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5438              
5439 3 50         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5440 3           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5441              
5442 3 50         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5443 3           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5444              
5445 3 50         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5446 3           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5447              
5448 3 50         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5449 3           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5450              
5451 3 50         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5452 3           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5453              
5454 3 50         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5455 3           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5456              
5457 3           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5458 3           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5459 3           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5460 3           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5461 3           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5462 3           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5463 3           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5464 3           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5465              
5466             PDL_COMMENT("none")
5467 3           } } break; case PDL_S: {
5468 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5469 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5470              
5471 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5472 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5473              
5474 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5475 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5476              
5477 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5478 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5479              
5480 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5481 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5482              
5483 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5484 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5485              
5486 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5487 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5488              
5489 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5490 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5491 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5492 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5493 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5494 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5495 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5496 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5497              
5498             PDL_COMMENT("none")
5499 0           } } break; case PDL_US: {
5500 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5501 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5502              
5503 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5504 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5505              
5506 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5507 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5508              
5509 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5510 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5511              
5512 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5513 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5514              
5515 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5516 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5517              
5518 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5519 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5520              
5521 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5522 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5523 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5524 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5525 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5526 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5527 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5528 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5529              
5530             PDL_COMMENT("none")
5531 0           } } break; case PDL_L: {
5532 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5533 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5534              
5535 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5536 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5537              
5538 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5539 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5540              
5541 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5542 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5543              
5544 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5545 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5546              
5547 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5548 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5549              
5550 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5551 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5552              
5553 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5554 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5555 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5556 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5557 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5558 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5559 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5560 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5561              
5562             PDL_COMMENT("none")
5563 0           } } break; case PDL_IND: {
5564 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5565 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5566              
5567 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5568 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5569              
5570 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5571 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5572              
5573 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5574 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5575              
5576 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5577 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5578              
5579 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5580 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5581              
5582 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5583 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5584              
5585 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5586 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5587 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5588 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5589 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5590 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5591 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5592 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5593              
5594             PDL_COMMENT("none")
5595 0           } } break; case PDL_LL: {
5596 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5597 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5598              
5599 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5600 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5601              
5602 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5603 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5604              
5605 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5606 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5607              
5608 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5609 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5610              
5611 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5612 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5613              
5614 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5615 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5616              
5617 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5618 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5619 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5620 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5621 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5622 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5623 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5624 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5625              
5626             PDL_COMMENT("none")
5627 0           } } break; case PDL_F: {
5628 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5629 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5630              
5631 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5632 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5633              
5634 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5635 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5636              
5637 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5638 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5639              
5640 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5641 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5642              
5643 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5644 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5645              
5646 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5647 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5648              
5649 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5650 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5651 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5652 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5653 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5654 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5655 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5656 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5657              
5658             PDL_COMMENT("none")
5659 0           } } break; case PDL_D: {
5660 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5661 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5662              
5663 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5664 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5665              
5666 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5667 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5668              
5669 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5670 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5671              
5672 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5673 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5674              
5675 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5676 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5677              
5678 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5679 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5680              
5681 0           {register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
5682 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
5683 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
5684 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
5685 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
5686 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
5687 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
5688 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
5689              
5690             PDL_COMMENT("none")
5691 0           } break;}
5692 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
5693             }
5694             }
5695             {
5696             static char *__parnames[] = {"a","iterations","end","kappa","ut","s","vt"};
5697             static PDL_Indx __realdims[] = {2,0,1,0,2,1,2};
5698             static char __funcname[] = "PDL::SVDLIBC::svdlas2d";
5699             static pdl_errorinfo __einfo = {
5700             __funcname, __parnames, 7
5701             };
5702            
5703 3           PDL->initthreadstruct(2,__privtrans->pdls,
5704             __realdims,__creating,7,
5705             &__einfo,&(__privtrans->__pdlthread),
5706 3           __privtrans->vtable->per_pdl_flags,
5707             0 );
5708             }
5709 3 50         if(((__privtrans->pdls[0]))->ndims < 2) {
5710 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
5711 0 0         if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
5712             }
5713 3 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size == 1)) {
    0          
    0          
5714 3           __privtrans->__n_size = ((__privtrans->pdls[0]))->dims[0];
5715 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
5716 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
5717 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5718             }
5719             }
5720 3 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size == 1)) {
    0          
    0          
5721 3           __privtrans->__m_size = ((__privtrans->pdls[0]))->dims[1];
5722 0 0         } else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size != ((__privtrans->pdls[0]))->dims[1]) {
    0          
5723 0 0         if(((__privtrans->pdls[0]))->dims[1] != 1) {
5724 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5725             }
5726             }
5727 3           PDL->make_physical(((__privtrans->pdls[0])));
5728 3 50         if(((__privtrans->pdls[2]))->ndims < 1) {
5729 0 0         if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__2_size <= 1) __privtrans->__2_size = 1;
    0          
5730             }
5731 3 50         if(__privtrans->__2_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__2_size == 1)) {
    0          
    0          
5732 3           __privtrans->__2_size = ((__privtrans->pdls[2]))->dims[0];
5733 0 0         } else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__2_size != ((__privtrans->pdls[2]))->dims[0]) {
    0          
5734 0 0         if(((__privtrans->pdls[2]))->dims[0] != 1) {
5735 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5736             }
5737             }
5738 3           PDL->make_physical(((__privtrans->pdls[2])));
5739 3 50         if(!__creating[4]) {
5740 3 50         if(((__privtrans->pdls[4]))->ndims < 2) {
5741 0 0         if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
5742 0 0         if (((__privtrans->pdls[4]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
5743             }
5744 3 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__m_size == 1)) {
    50          
    50          
5745 0           __privtrans->__m_size = ((__privtrans->pdls[4]))->dims[0];
5746 3 50         } else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__m_size != ((__privtrans->pdls[4]))->dims[0]) {
    50          
5747 0 0         if(((__privtrans->pdls[4]))->dims[0] != 1) {
5748 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5749             }
5750             }
5751 3 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__d_size == 1)) {
    0          
    0          
5752 3           __privtrans->__d_size = ((__privtrans->pdls[4]))->dims[1];
5753 0 0         } else if(((__privtrans->pdls[4]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[4]))->dims[1]) {
    0          
5754 0 0         if(((__privtrans->pdls[4]))->dims[1] != 1) {
5755 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5756             }
5757             }
5758 3           PDL->make_physical(((__privtrans->pdls[4])));
5759             } else {
5760 0           PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__m_size;dims[1] = __privtrans->__d_size;
5761 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0);
5762 3 50         }if(!__creating[5]) {
5763 3 50         if(((__privtrans->pdls[5]))->ndims < 1) {
5764 0 0         if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
5765             }
5766 3 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
5767 0           __privtrans->__d_size = ((__privtrans->pdls[5]))->dims[0];
5768 3 50         } else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[5]))->dims[0]) {
    50          
5769 0 0         if(((__privtrans->pdls[5]))->dims[0] != 1) {
5770 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5771             }
5772             }
5773 3           PDL->make_physical(((__privtrans->pdls[5])));
5774             } else {
5775 0           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__d_size;
5776 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0);
5777 3 50         }if(!__creating[6]) {
5778 3 50         if(((__privtrans->pdls[6]))->ndims < 2) {
5779 0 0         if (((__privtrans->pdls[6]))->ndims < 1 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
5780 0 0         if (((__privtrans->pdls[6]))->ndims < 2 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
5781             }
5782 3 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__n_size == 1)) {
    50          
    50          
5783 0           __privtrans->__n_size = ((__privtrans->pdls[6]))->dims[0];
5784 3 50         } else if(((__privtrans->pdls[6]))->ndims > 0 && __privtrans->__n_size != ((__privtrans->pdls[6]))->dims[0]) {
    50          
5785 0 0         if(((__privtrans->pdls[6]))->dims[0] != 1) {
5786 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5787             }
5788             }
5789 3 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[6]))->ndims > 1 && __privtrans->__d_size == 1)) {
    50          
    50          
5790 0           __privtrans->__d_size = ((__privtrans->pdls[6]))->dims[1];
5791 3 50         } else if(((__privtrans->pdls[6]))->ndims > 1 && __privtrans->__d_size != ((__privtrans->pdls[6]))->dims[1]) {
    50          
5792 0 0         if(((__privtrans->pdls[6]))->dims[1] != 1) {
5793 0           PDL->pdl_barf("Error in svdlas2d:" "Wrong dims\n");
5794             }
5795             }
5796 3           PDL->make_physical(((__privtrans->pdls[6])));
5797             } else {
5798 0           PDL_Indx dims[3]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__n_size;dims[1] = __privtrans->__d_size;
5799 0           PDL->thread_create_parameter(&__privtrans->__pdlthread,6,dims,0);
5800             }
5801             { PDL_COMMENT("convenience block")
5802 3           void *hdrp = NULL;
5803 3           char propagate_hdrcpy = 0;
5804 3           SV *hdr_copy = NULL;
5805 3 50         if(!hdrp &&
    50          
5806 0 0         __privtrans->pdls[0]->hdrsv &&
5807 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
5808             ) {
5809 0           hdrp = __privtrans->pdls[0]->hdrsv;
5810 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
5811             }
5812 3 50         if(!hdrp &&
    50          
5813 0 0         __privtrans->pdls[1]->hdrsv &&
5814 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
5815             ) {
5816 0           hdrp = __privtrans->pdls[1]->hdrsv;
5817 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
5818             }
5819 3 50         if(!hdrp &&
    50          
5820 0 0         __privtrans->pdls[2]->hdrsv &&
5821 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
5822             ) {
5823 0           hdrp = __privtrans->pdls[2]->hdrsv;
5824 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
5825             }
5826 3 50         if(!hdrp &&
    50          
5827 0 0         __privtrans->pdls[3]->hdrsv &&
5828 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
5829             ) {
5830 0           hdrp = __privtrans->pdls[3]->hdrsv;
5831 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
5832             }
5833 3 50         if(!hdrp &&
    50          
5834 3 50         !__creating[4] &&
5835 0 0         __privtrans->pdls[4]->hdrsv &&
5836 0           (__privtrans->pdls[4]->state & PDL_HDRCPY)
5837             ) {
5838 0           hdrp = __privtrans->pdls[4]->hdrsv;
5839 0           propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0);
5840             }
5841 3 50         if(!hdrp &&
    50          
5842 3 50         !__creating[5] &&
5843 0 0         __privtrans->pdls[5]->hdrsv &&
5844 0           (__privtrans->pdls[5]->state & PDL_HDRCPY)
5845             ) {
5846 0           hdrp = __privtrans->pdls[5]->hdrsv;
5847 0           propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0);
5848             }
5849 3 50         if(!hdrp &&
    50          
5850 3 50         !__creating[6] &&
5851 0 0         __privtrans->pdls[6]->hdrsv &&
5852 0           (__privtrans->pdls[6]->state & PDL_HDRCPY)
5853             ) {
5854 0           hdrp = __privtrans->pdls[6]->hdrsv;
5855 0           propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0);
5856             }
5857 3 50         if (hdrp) {
5858 0 0         if(hdrp == &PL_sv_undef)
5859 0           hdr_copy = &PL_sv_undef;
5860             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
5861             int count;
5862             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
5863 0           dSP;
5864 0           ENTER ;
5865 0           SAVETMPS ;
5866 0 0         PUSHMARK(SP) ;
5867 0 0         XPUSHs( hdrp );
5868 0           PUTBACK ;
5869 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
5870 0           SPAGAIN ;
5871 0 0         if(count != 1)
5872 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
5873              
5874 0           hdr_copy = (SV *)POPs;
5875              
5876 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
5877 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
5878             }
5879              
5880 0 0         FREETMPS ;
5881 0           LEAVE ;
5882              
5883              
5884             } PDL_COMMENT("end of callback block")
5885              
5886 0 0         if ( __privtrans->pdls[4]->hdrsv != hdrp ){
5887 0 0         if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef)
    0          
5888 0           (void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv );
5889 0 0         if( hdr_copy != &PL_sv_undef )
5890 0           (void)SvREFCNT_inc(hdr_copy);
5891 0           __privtrans->pdls[4]->hdrsv = hdr_copy;
5892             }
5893 0 0         if(propagate_hdrcpy)
5894 0           __privtrans->pdls[4]->state |= PDL_HDRCPY;
5895 0 0         if ( __privtrans->pdls[5]->hdrsv != hdrp ){
5896 0 0         if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef)
    0          
5897 0           (void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv );
5898 0 0         if( hdr_copy != &PL_sv_undef )
5899 0           (void)SvREFCNT_inc(hdr_copy);
5900 0           __privtrans->pdls[5]->hdrsv = hdr_copy;
5901             }
5902 0 0         if(propagate_hdrcpy)
5903 0           __privtrans->pdls[5]->state |= PDL_HDRCPY;
5904 0 0         if ( __privtrans->pdls[6]->hdrsv != hdrp ){
5905 0 0         if( __privtrans->pdls[6]->hdrsv && __privtrans->pdls[6]->hdrsv != &PL_sv_undef)
    0          
5906 0           (void)SvREFCNT_dec( __privtrans->pdls[6]->hdrsv );
5907 0 0         if( hdr_copy != &PL_sv_undef )
5908 0           (void)SvREFCNT_inc(hdr_copy);
5909 0           __privtrans->pdls[6]->hdrsv = hdr_copy;
5910             }
5911 0 0         if(propagate_hdrcpy)
5912 0           __privtrans->pdls[6]->state |= PDL_HDRCPY;
5913              
5914 0 0         if(hdr_copy != &PL_sv_undef)
5915 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
5916             } PDL_COMMENT("end of if(hdrp) block")
5917             } PDL_COMMENT("end of conv. block")
5918 3 50         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    50          
5919 0           __privtrans->__inc_a_n = 0; else
5920 3 50         __privtrans->__inc_a_n = __privtrans->pdls[0]->dimincs[0];if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1)
    50          
5921 0           __privtrans->__inc_a_m = 0; else
5922 3 50         __privtrans->__inc_a_m = __privtrans->pdls[0]->dimincs[1];if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1)
    50          
5923 0           __privtrans->__inc_end_2 = 0; else
5924 3 50         __privtrans->__inc_end_2 = __privtrans->pdls[2]->dimincs[0];if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1)
    50          
5925 0           __privtrans->__inc_ut_m = 0; else
5926 3 50         __privtrans->__inc_ut_m = __privtrans->pdls[4]->dimincs[0];if(__privtrans->pdls[4]->ndims <= 1 || __privtrans->pdls[4]->dims[1] <= 1)
    50          
5927 0           __privtrans->__inc_ut_d = 0; else
5928 3 50         __privtrans->__inc_ut_d = __privtrans->pdls[4]->dimincs[1];if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1)
    50          
5929 0           __privtrans->__inc_s_d = 0; else
5930 3 50         __privtrans->__inc_s_d = __privtrans->pdls[5]->dimincs[0];if(__privtrans->pdls[6]->ndims <= 0 || __privtrans->pdls[6]->dims[0] <= 1)
    50          
5931 0           __privtrans->__inc_vt_n = 0; else
5932 3 50         __privtrans->__inc_vt_n = __privtrans->pdls[6]->dimincs[0];if(__privtrans->pdls[6]->ndims <= 1 || __privtrans->pdls[6]->dims[1] <= 1)
    50          
5933 0           __privtrans->__inc_vt_d = 0; else
5934 3           __privtrans->__inc_vt_d = __privtrans->pdls[6]->dimincs[1]; __privtrans->__ddone = 1;
5935             }
5936 3           }
5937            
5938              
5939 0           pdl_trans * pdl_svdlas2d_copy(pdl_trans *__tr ) {
5940             int __dim;
5941 0           pdl_svdlas2d_struct *__privtrans = (pdl_svdlas2d_struct *) __tr;
5942            
5943             {
5944 0           pdl_svdlas2d_struct *__copy = malloc(sizeof(pdl_svdlas2d_struct));
5945 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
5946 0           __copy->has_badvalue = __privtrans->has_badvalue;
5947 0           __copy->badvalue = __privtrans->badvalue;
5948 0           __copy->flags = __privtrans->flags;
5949 0           __copy->vtable = __privtrans->vtable;
5950 0           __copy->__datatype = __privtrans->__datatype;
5951 0           __copy->freeproc = NULL;
5952 0           __copy->__ddone = __privtrans->__ddone;
5953             {int i;
5954 0 0         for(i=0; i<__copy->vtable->npdls; i++)
5955 0           __copy->pdls[i] = __privtrans->pdls[i];
5956             }
5957            
5958 0 0         if(__copy->__ddone) {
5959 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_a_n=__copy->__inc_a_n;__privtrans->__inc_a_m=__copy->__inc_a_m;__privtrans->__inc_end_2=__copy->__inc_end_2;__privtrans->__inc_ut_m=__copy->__inc_ut_m;__privtrans->__inc_ut_d=__copy->__inc_ut_d;__privtrans->__inc_s_d=__copy->__inc_s_d;__privtrans->__inc_vt_n=__copy->__inc_vt_n;__privtrans->__inc_vt_d=__copy->__inc_vt_d;__copy->__n_size=__privtrans->__n_size;__copy->__m_size=__privtrans->__m_size;__copy->__d_size=__privtrans->__d_size;__copy->__2_size=__privtrans->__2_size;
5960             }
5961 0           return (pdl_trans*)__copy;
5962             }
5963             }
5964            
5965              
5966 3           void pdl_svdlas2d_readdata(pdl_trans *__tr ) {
5967             int __dim;
5968 3           pdl_svdlas2d_struct *__privtrans = (pdl_svdlas2d_struct *) __tr;
5969            
5970             {
5971             {PDL_COMMENT("Start generic loop")
5972              
5973 3           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
5974 0           } break; case PDL_B: {
5975 3 50         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
5976 3           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
5977              
5978 3 50         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
5979 3           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
5980              
5981 3 50         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
5982 3           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
5983              
5984 3 50         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
5985 3           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
5986              
5987 3 50         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
5988 3           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
5989              
5990 3 50         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
5991 3           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
5992              
5993 3 50         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
5994 3           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
5995              
5996              
5997             PDL_COMMENT("THREADLOOPBEGIN")
5998 3 50         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
5999 3           do { register PDL_Indx __tind1=0,__tind2=0;
6000 3           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6001 3           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6002 3           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6003 3           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6004 3           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6005 3           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6006 3           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6007 3           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6008 3           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6009 3           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6010 3           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6011 3           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6012 3           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6013 3           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6014 3           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6015 3           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6016 3           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6017 3           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6018 3           a_datap += __offsp[0];
6019 3           iterations_datap += __offsp[1];
6020 3           end_datap += __offsp[2];
6021 3           kappa_datap += __offsp[3];
6022 3           ut_datap += __offsp[4];
6023 3           s_datap += __offsp[5];
6024 3           vt_datap += __offsp[6];
6025 6 100         for( __tind2 = 0 ;
6026             __tind2 < __tdims1 ;
6027 3           __tind2++
6028 3           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6029 3           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6030 3           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6031 3           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6032 3           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6033 3           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6034 3           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6035             )
6036             {
6037 6 100         for( __tind1 = 0 ;
6038             __tind1 < __tdims0 ;
6039 3           __tind1++
6040 3           ,a_datap += __tinc0_0
6041 3           ,iterations_datap += __tinc0_1
6042 3           ,end_datap += __tinc0_2
6043 3           ,kappa_datap += __tinc0_3
6044 3           ,ut_datap += __tinc0_4
6045 3           ,s_datap += __tinc0_5
6046 3           ,vt_datap += __tinc0_6
6047             )
6048 3           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6049 3           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6050 3           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6051 3           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6052 3           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6053 3           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6054 3           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6055 3           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6056              
6057              
6058             struct dmat dm;
6059             SMat smp;
6060             SVDRec svdr;
6061              
6062             /*-- setup dense matrix --*/
6063 3           dm.rows = __privtrans->__m_size;
6064 3           dm.cols = __privtrans->__n_size;
6065 3           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6066              
6067             /*-- generate sparse matrix --*/
6068 3           smp = svdConvertDtoS(&dm);
6069              
6070             /*-- compute svd --*/
6071 3           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6072 3           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6073              
6074             /*-- cleanup --*/
6075 3 50         if (svdr) svdFreeSVDRec(svdr);
6076 3 50         if (smp) svdFreeSMat(smp);
6077 3 50         if (dm.value) free(dm.value);
6078              
6079             }
6080             PDL_COMMENT("THREADLOOPEND")
6081             }
6082             }
6083 3           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6084 3           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6085 3           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6086 3           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6087 3           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6088 3           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6089 3           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6090 3 50         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
6091 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6092 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6093              
6094 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6095 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6096              
6097 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6098 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6099              
6100 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6101 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6102              
6103 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6104 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6105              
6106 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6107 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6108              
6109 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6110 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6111              
6112              
6113             PDL_COMMENT("THREADLOOPBEGIN")
6114 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6115 0           do { register PDL_Indx __tind1=0,__tind2=0;
6116 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6117 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6118 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6119 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6120 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6121 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6122 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6123 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6124 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6125 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6126 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6127 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6128 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6129 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6130 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6131 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6132 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6133 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6134 0           a_datap += __offsp[0];
6135 0           iterations_datap += __offsp[1];
6136 0           end_datap += __offsp[2];
6137 0           kappa_datap += __offsp[3];
6138 0           ut_datap += __offsp[4];
6139 0           s_datap += __offsp[5];
6140 0           vt_datap += __offsp[6];
6141 0 0         for( __tind2 = 0 ;
6142             __tind2 < __tdims1 ;
6143 0           __tind2++
6144 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6145 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6146 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6147 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6148 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6149 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6150 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6151             )
6152             {
6153 0 0         for( __tind1 = 0 ;
6154             __tind1 < __tdims0 ;
6155 0           __tind1++
6156 0           ,a_datap += __tinc0_0
6157 0           ,iterations_datap += __tinc0_1
6158 0           ,end_datap += __tinc0_2
6159 0           ,kappa_datap += __tinc0_3
6160 0           ,ut_datap += __tinc0_4
6161 0           ,s_datap += __tinc0_5
6162 0           ,vt_datap += __tinc0_6
6163             )
6164 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6165 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6166 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6167 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6168 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6169 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6170 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6171 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6172              
6173              
6174             struct dmat dm;
6175             SMat smp;
6176             SVDRec svdr;
6177              
6178             /*-- setup dense matrix --*/
6179 0           dm.rows = __privtrans->__m_size;
6180 0           dm.cols = __privtrans->__n_size;
6181 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6182              
6183             /*-- generate sparse matrix --*/
6184 0           smp = svdConvertDtoS(&dm);
6185              
6186             /*-- compute svd --*/
6187 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6188 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6189              
6190             /*-- cleanup --*/
6191 0 0         if (svdr) svdFreeSVDRec(svdr);
6192 0 0         if (smp) svdFreeSMat(smp);
6193 0 0         if (dm.value) free(dm.value);
6194              
6195             }
6196             PDL_COMMENT("THREADLOOPEND")
6197             }
6198             }
6199 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6200 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6201 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6202 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6203 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6204 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6205 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6206 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
6207 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6208 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6209              
6210 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6211 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6212              
6213 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6214 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6215              
6216 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6217 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6218              
6219 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6220 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6221              
6222 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6223 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6224              
6225 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6226 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6227              
6228              
6229             PDL_COMMENT("THREADLOOPBEGIN")
6230 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6231 0           do { register PDL_Indx __tind1=0,__tind2=0;
6232 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6233 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6234 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6235 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6236 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6237 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6238 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6239 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6240 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6241 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6242 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6243 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6244 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6245 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6246 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6247 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6248 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6249 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6250 0           a_datap += __offsp[0];
6251 0           iterations_datap += __offsp[1];
6252 0           end_datap += __offsp[2];
6253 0           kappa_datap += __offsp[3];
6254 0           ut_datap += __offsp[4];
6255 0           s_datap += __offsp[5];
6256 0           vt_datap += __offsp[6];
6257 0 0         for( __tind2 = 0 ;
6258             __tind2 < __tdims1 ;
6259 0           __tind2++
6260 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6261 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6262 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6263 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6264 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6265 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6266 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6267             )
6268             {
6269 0 0         for( __tind1 = 0 ;
6270             __tind1 < __tdims0 ;
6271 0           __tind1++
6272 0           ,a_datap += __tinc0_0
6273 0           ,iterations_datap += __tinc0_1
6274 0           ,end_datap += __tinc0_2
6275 0           ,kappa_datap += __tinc0_3
6276 0           ,ut_datap += __tinc0_4
6277 0           ,s_datap += __tinc0_5
6278 0           ,vt_datap += __tinc0_6
6279             )
6280 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6281 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6282 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6283 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6284 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6285 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6286 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6287 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6288              
6289              
6290             struct dmat dm;
6291             SMat smp;
6292             SVDRec svdr;
6293              
6294             /*-- setup dense matrix --*/
6295 0           dm.rows = __privtrans->__m_size;
6296 0           dm.cols = __privtrans->__n_size;
6297 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6298              
6299             /*-- generate sparse matrix --*/
6300 0           smp = svdConvertDtoS(&dm);
6301              
6302             /*-- compute svd --*/
6303 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6304 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6305              
6306             /*-- cleanup --*/
6307 0 0         if (svdr) svdFreeSVDRec(svdr);
6308 0 0         if (smp) svdFreeSMat(smp);
6309 0 0         if (dm.value) free(dm.value);
6310              
6311             }
6312             PDL_COMMENT("THREADLOOPEND")
6313             }
6314             }
6315 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6316 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6317 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6318 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6319 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6320 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6321 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6322 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
6323 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6324 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6325              
6326 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6327 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6328              
6329 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6330 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6331              
6332 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6333 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6334              
6335 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6336 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6337              
6338 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6339 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6340              
6341 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6342 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6343              
6344              
6345             PDL_COMMENT("THREADLOOPBEGIN")
6346 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6347 0           do { register PDL_Indx __tind1=0,__tind2=0;
6348 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6349 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6350 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6351 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6352 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6353 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6354 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6355 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6356 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6357 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6358 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6359 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6360 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6361 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6362 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6363 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6364 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6365 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6366 0           a_datap += __offsp[0];
6367 0           iterations_datap += __offsp[1];
6368 0           end_datap += __offsp[2];
6369 0           kappa_datap += __offsp[3];
6370 0           ut_datap += __offsp[4];
6371 0           s_datap += __offsp[5];
6372 0           vt_datap += __offsp[6];
6373 0 0         for( __tind2 = 0 ;
6374             __tind2 < __tdims1 ;
6375 0           __tind2++
6376 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6377 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6378 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6379 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6380 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6381 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6382 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6383             )
6384             {
6385 0 0         for( __tind1 = 0 ;
6386             __tind1 < __tdims0 ;
6387 0           __tind1++
6388 0           ,a_datap += __tinc0_0
6389 0           ,iterations_datap += __tinc0_1
6390 0           ,end_datap += __tinc0_2
6391 0           ,kappa_datap += __tinc0_3
6392 0           ,ut_datap += __tinc0_4
6393 0           ,s_datap += __tinc0_5
6394 0           ,vt_datap += __tinc0_6
6395             )
6396 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6397 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6398 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6399 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6400 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6401 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6402 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6403 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6404              
6405              
6406             struct dmat dm;
6407             SMat smp;
6408             SVDRec svdr;
6409              
6410             /*-- setup dense matrix --*/
6411 0           dm.rows = __privtrans->__m_size;
6412 0           dm.cols = __privtrans->__n_size;
6413 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6414              
6415             /*-- generate sparse matrix --*/
6416 0           smp = svdConvertDtoS(&dm);
6417              
6418             /*-- compute svd --*/
6419 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6420 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6421              
6422             /*-- cleanup --*/
6423 0 0         if (svdr) svdFreeSVDRec(svdr);
6424 0 0         if (smp) svdFreeSMat(smp);
6425 0 0         if (dm.value) free(dm.value);
6426              
6427             }
6428             PDL_COMMENT("THREADLOOPEND")
6429             }
6430             }
6431 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6432 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6433 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6434 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6435 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6436 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6437 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6438 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
6439 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6440 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6441              
6442 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6443 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6444              
6445 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6446 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6447              
6448 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6449 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6450              
6451 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6452 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6453              
6454 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6455 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6456              
6457 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6458 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6459              
6460              
6461             PDL_COMMENT("THREADLOOPBEGIN")
6462 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6463 0           do { register PDL_Indx __tind1=0,__tind2=0;
6464 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6465 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6466 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6467 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6468 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6469 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6470 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6471 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6472 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6473 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6474 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6475 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6476 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6477 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6478 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6479 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6480 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6481 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6482 0           a_datap += __offsp[0];
6483 0           iterations_datap += __offsp[1];
6484 0           end_datap += __offsp[2];
6485 0           kappa_datap += __offsp[3];
6486 0           ut_datap += __offsp[4];
6487 0           s_datap += __offsp[5];
6488 0           vt_datap += __offsp[6];
6489 0 0         for( __tind2 = 0 ;
6490             __tind2 < __tdims1 ;
6491 0           __tind2++
6492 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6493 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6494 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6495 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6496 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6497 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6498 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6499             )
6500             {
6501 0 0         for( __tind1 = 0 ;
6502             __tind1 < __tdims0 ;
6503 0           __tind1++
6504 0           ,a_datap += __tinc0_0
6505 0           ,iterations_datap += __tinc0_1
6506 0           ,end_datap += __tinc0_2
6507 0           ,kappa_datap += __tinc0_3
6508 0           ,ut_datap += __tinc0_4
6509 0           ,s_datap += __tinc0_5
6510 0           ,vt_datap += __tinc0_6
6511             )
6512 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6513 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6514 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6515 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6516 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6517 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6518 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6519 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6520              
6521              
6522             struct dmat dm;
6523             SMat smp;
6524             SVDRec svdr;
6525              
6526             /*-- setup dense matrix --*/
6527 0           dm.rows = __privtrans->__m_size;
6528 0           dm.cols = __privtrans->__n_size;
6529 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6530              
6531             /*-- generate sparse matrix --*/
6532 0           smp = svdConvertDtoS(&dm);
6533              
6534             /*-- compute svd --*/
6535 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6536 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6537              
6538             /*-- cleanup --*/
6539 0 0         if (svdr) svdFreeSVDRec(svdr);
6540 0 0         if (smp) svdFreeSMat(smp);
6541 0 0         if (dm.value) free(dm.value);
6542              
6543             }
6544             PDL_COMMENT("THREADLOOPEND")
6545             }
6546             }
6547 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6548 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6549 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6550 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6551 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6552 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6553 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6554 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
6555 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6556 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6557              
6558 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6559 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6560              
6561 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6562 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6563              
6564 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6565 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6566              
6567 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6568 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6569              
6570 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6571 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6572              
6573 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6574 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6575              
6576              
6577             PDL_COMMENT("THREADLOOPBEGIN")
6578 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6579 0           do { register PDL_Indx __tind1=0,__tind2=0;
6580 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6581 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6582 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6583 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6584 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6585 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6586 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6587 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6588 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6589 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6590 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6591 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6592 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6593 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6594 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6595 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6596 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6597 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6598 0           a_datap += __offsp[0];
6599 0           iterations_datap += __offsp[1];
6600 0           end_datap += __offsp[2];
6601 0           kappa_datap += __offsp[3];
6602 0           ut_datap += __offsp[4];
6603 0           s_datap += __offsp[5];
6604 0           vt_datap += __offsp[6];
6605 0 0         for( __tind2 = 0 ;
6606             __tind2 < __tdims1 ;
6607 0           __tind2++
6608 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6609 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6610 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6611 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6612 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6613 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6614 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6615             )
6616             {
6617 0 0         for( __tind1 = 0 ;
6618             __tind1 < __tdims0 ;
6619 0           __tind1++
6620 0           ,a_datap += __tinc0_0
6621 0           ,iterations_datap += __tinc0_1
6622 0           ,end_datap += __tinc0_2
6623 0           ,kappa_datap += __tinc0_3
6624 0           ,ut_datap += __tinc0_4
6625 0           ,s_datap += __tinc0_5
6626 0           ,vt_datap += __tinc0_6
6627             )
6628 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6629 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6630 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6631 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6632 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6633 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6634 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6635 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6636              
6637              
6638             struct dmat dm;
6639             SMat smp;
6640             SVDRec svdr;
6641              
6642             /*-- setup dense matrix --*/
6643 0           dm.rows = __privtrans->__m_size;
6644 0           dm.cols = __privtrans->__n_size;
6645 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6646              
6647             /*-- generate sparse matrix --*/
6648 0           smp = svdConvertDtoS(&dm);
6649              
6650             /*-- compute svd --*/
6651 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6652 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6653              
6654             /*-- cleanup --*/
6655 0 0         if (svdr) svdFreeSVDRec(svdr);
6656 0 0         if (smp) svdFreeSMat(smp);
6657 0 0         if (dm.value) free(dm.value);
6658              
6659             }
6660             PDL_COMMENT("THREADLOOPEND")
6661             }
6662             }
6663 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6664 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6665 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6666 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6667 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6668 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6669 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6670 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
6671 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6672 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6673              
6674 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6675 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6676              
6677 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6678 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6679              
6680 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6681 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6682              
6683 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6684 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6685              
6686 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6687 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6688              
6689 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6690 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6691              
6692              
6693             PDL_COMMENT("THREADLOOPBEGIN")
6694 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6695 0           do { register PDL_Indx __tind1=0,__tind2=0;
6696 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6697 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6698 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6699 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6700 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6701 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6702 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6703 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6704 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6705 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6706 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6707 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6708 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6709 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6710 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6711 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6712 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6713 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6714 0           a_datap += __offsp[0];
6715 0           iterations_datap += __offsp[1];
6716 0           end_datap += __offsp[2];
6717 0           kappa_datap += __offsp[3];
6718 0           ut_datap += __offsp[4];
6719 0           s_datap += __offsp[5];
6720 0           vt_datap += __offsp[6];
6721 0 0         for( __tind2 = 0 ;
6722             __tind2 < __tdims1 ;
6723 0           __tind2++
6724 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6725 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6726 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6727 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6728 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6729 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6730 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6731             )
6732             {
6733 0 0         for( __tind1 = 0 ;
6734             __tind1 < __tdims0 ;
6735 0           __tind1++
6736 0           ,a_datap += __tinc0_0
6737 0           ,iterations_datap += __tinc0_1
6738 0           ,end_datap += __tinc0_2
6739 0           ,kappa_datap += __tinc0_3
6740 0           ,ut_datap += __tinc0_4
6741 0           ,s_datap += __tinc0_5
6742 0           ,vt_datap += __tinc0_6
6743             )
6744 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6745 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6746 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6747 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6748 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6749 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6750 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6751 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6752              
6753              
6754             struct dmat dm;
6755             SMat smp;
6756             SVDRec svdr;
6757              
6758             /*-- setup dense matrix --*/
6759 0           dm.rows = __privtrans->__m_size;
6760 0           dm.cols = __privtrans->__n_size;
6761 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6762              
6763             /*-- generate sparse matrix --*/
6764 0           smp = svdConvertDtoS(&dm);
6765              
6766             /*-- compute svd --*/
6767 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6768 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6769              
6770             /*-- cleanup --*/
6771 0 0         if (svdr) svdFreeSVDRec(svdr);
6772 0 0         if (smp) svdFreeSMat(smp);
6773 0 0         if (dm.value) free(dm.value);
6774              
6775             }
6776             PDL_COMMENT("THREADLOOPEND")
6777             }
6778             }
6779 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6780 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6781 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6782 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6783 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6784 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6785 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6786 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
6787 0 0         PDL_Double * a_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6788 0           PDL_Double * a_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
6789              
6790 0 0         PDL_Long * iterations_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6791 0           PDL_Long * iterations_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
6792              
6793 0 0         PDL_Double * end_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6794 0           PDL_Double * end_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
6795              
6796 0 0         PDL_Double * kappa_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6797 0           PDL_Double * kappa_physdatap = ((PDL_Double *)((__privtrans->pdls[3])->data));
6798              
6799 0 0         PDL_Double * ut_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6800 0           PDL_Double * ut_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
6801              
6802 0 0         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
6803 0           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
6804              
6805 0 0         PDL_Double * vt_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
6806 0           PDL_Double * vt_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
6807              
6808              
6809             PDL_COMMENT("THREADLOOPBEGIN")
6810 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
6811 0           do { register PDL_Indx __tind1=0,__tind2=0;
6812 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
6813 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
6814 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
6815 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
6816 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
6817 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
6818 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
6819 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
6820 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
6821 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
6822 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
6823 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
6824 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
6825 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
6826 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
6827 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
6828 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
6829 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
6830 0           a_datap += __offsp[0];
6831 0           iterations_datap += __offsp[1];
6832 0           end_datap += __offsp[2];
6833 0           kappa_datap += __offsp[3];
6834 0           ut_datap += __offsp[4];
6835 0           s_datap += __offsp[5];
6836 0           vt_datap += __offsp[6];
6837 0 0         for( __tind2 = 0 ;
6838             __tind2 < __tdims1 ;
6839 0           __tind2++
6840 0           ,a_datap += __tinc1_0 - __tinc0_0 * __tdims0
6841 0           ,iterations_datap += __tinc1_1 - __tinc0_1 * __tdims0
6842 0           ,end_datap += __tinc1_2 - __tinc0_2 * __tdims0
6843 0           ,kappa_datap += __tinc1_3 - __tinc0_3 * __tdims0
6844 0           ,ut_datap += __tinc1_4 - __tinc0_4 * __tdims0
6845 0           ,s_datap += __tinc1_5 - __tinc0_5 * __tdims0
6846 0           ,vt_datap += __tinc1_6 - __tinc0_6 * __tdims0
6847             )
6848             {
6849 0 0         for( __tind1 = 0 ;
6850             __tind1 < __tdims0 ;
6851 0           __tind1++
6852 0           ,a_datap += __tinc0_0
6853 0           ,iterations_datap += __tinc0_1
6854 0           ,end_datap += __tinc0_2
6855 0           ,kappa_datap += __tinc0_3
6856 0           ,ut_datap += __tinc0_4
6857 0           ,s_datap += __tinc0_5
6858 0           ,vt_datap += __tinc0_6
6859             )
6860 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_a_n = __privtrans->__inc_a_n;
6861 0           register PDL_Indx __inc_a_m = __privtrans->__inc_a_m;
6862 0           register PDL_Indx __inc_vt_n = __privtrans->__inc_vt_n;
6863 0           register PDL_Indx __inc_vt_d = __privtrans->__inc_vt_d;
6864 0           register PDL_Indx __inc_ut_m = __privtrans->__inc_ut_m;
6865 0           register PDL_Indx __inc_ut_d = __privtrans->__inc_ut_d;
6866 0           register PDL_Indx __inc_end_2 = __privtrans->__inc_end_2;
6867 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6868              
6869              
6870             struct dmat dm;
6871             SMat smp;
6872             SVDRec svdr;
6873              
6874             /*-- setup dense matrix --*/
6875 0           dm.rows = __privtrans->__m_size;
6876 0           dm.cols = __privtrans->__n_size;
6877 0           dm.value = p2pp_dbl(__privtrans->__m_size, __privtrans->__n_size, a_datap);
6878              
6879             /*-- generate sparse matrix --*/
6880 0           smp = svdConvertDtoS(&dm);
6881              
6882             /*-- compute svd --*/
6883 0           svdr = svdLAS2(smp, __privtrans->__d_size, (iterations_datap)[0] PDL_COMMENT("ACCESS()") , end_datap, (kappa_datap)[0] PDL_COMMENT("ACCESS()") );
6884 0           svdrec2pdls(svdr, ut_datap, s_datap, vt_datap);
6885              
6886             /*-- cleanup --*/
6887 0 0         if (svdr) svdFreeSVDRec(svdr);
6888 0 0         if (smp) svdFreeSMat(smp);
6889 0 0         if (dm.value) free(dm.value);
6890              
6891             }
6892             PDL_COMMENT("THREADLOOPEND")
6893             }
6894             }
6895 0           a_datap -= __tinc1_0 * __tdims1 + __offsp[0];
6896 0           iterations_datap -= __tinc1_1 * __tdims1 + __offsp[1];
6897 0           end_datap -= __tinc1_2 * __tdims1 + __offsp[2];
6898 0           kappa_datap -= __tinc1_3 * __tdims1 + __offsp[3];
6899 0           ut_datap -= __tinc1_4 * __tdims1 + __offsp[4];
6900 0           s_datap -= __tinc1_5 * __tdims1 + __offsp[5];
6901 0           vt_datap -= __tinc1_6 * __tdims1 + __offsp[6];
6902 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
6903 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
6904             }
6905             }
6906             }
6907            
6908              
6909              
6910              
6911 3           void pdl_svdlas2d_free(pdl_trans *__tr ) {
6912             int __dim;
6913 3           pdl_svdlas2d_struct *__privtrans = (pdl_svdlas2d_struct *) __tr;
6914            
6915             {
6916            
6917 3           PDL_TR_CLRMAGIC(__privtrans);
6918            
6919 3 50         if(__privtrans->__ddone) {
6920 3           PDL->freethreadloop(&(__privtrans->__pdlthread));
6921             ;;;;;;;;;;;;;
6922             }
6923            
6924             }
6925 3           }
6926            
6927              
6928              
6929              
6930             static char pdl_svdlas2d_vtable_flags[] =
6931             { 0,PDL_TPDL_VAFFINE_OK,0,PDL_TPDL_VAFFINE_OK,0,0,0};
6932             pdl_transvtable pdl_svdlas2d_vtable = {
6933             0,0, 4, 7, pdl_svdlas2d_vtable_flags,
6934             pdl_svdlas2d_redodims, pdl_svdlas2d_readdata, NULL,
6935             pdl_svdlas2d_free,NULL,NULL,pdl_svdlas2d_copy,
6936             sizeof(pdl_svdlas2d_struct),"pdl_svdlas2d_vtable"
6937             };
6938              
6939             typedef struct pdl_svdindexND_struct {
6940             PDL_TRANS_START(5);
6941             pdl_thread __pdlthread;PDL_Indx __inc_u_d;PDL_Indx __inc_u_m;PDL_Indx __inc_s_d;PDL_Indx __inc_v_d;PDL_Indx __inc_v_n;PDL_Indx __inc_which_Two;PDL_Indx __inc_which_nnz;PDL_Indx __inc_vals_nnz;PDL_Indx __m_size;PDL_Indx __n_size;PDL_Indx __nnz_size;PDL_Indx __d_size;PDL_Indx __Two_size;
6942            
6943             char __ddone; PDL_COMMENT("Dims done")
6944             } pdl_svdindexND_struct;
6945              
6946 4           void pdl_svdindexND_redodims(pdl_trans *__tr ) {
6947             int __dim;
6948 4           pdl_svdindexND_struct *__privtrans = (pdl_svdindexND_struct *) __tr;
6949            
6950             {
6951             PDL_Indx __creating[5];
6952 4           __privtrans->__m_size = -1;
6953 4           __privtrans->__n_size = -1;
6954 4           __privtrans->__nnz_size = -1;
6955 4           __privtrans->__d_size = -1;
6956 4           __privtrans->__Two_size = -1;
6957 4           __creating[0] = 0;
6958 4           __creating[1] = 0;
6959 4           __creating[2] = 0;
6960 4           __creating[3] = 0;
6961 4 50         __creating[4] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[4]);
    50          
6962             {
6963             {PDL_COMMENT("Start generic loop")
6964              
6965 4           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
6966 0           } break; case PDL_B: {
6967 0 0         PDL_Byte * u_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6968 0           PDL_Byte * u_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data));
6969              
6970 0 0         PDL_Byte * s_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6971 0           PDL_Byte * s_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data));
6972              
6973 0 0         PDL_Byte * v_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
6974 0           PDL_Byte * v_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data));
6975              
6976 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
6977 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
6978              
6979 0 0         PDL_Byte * vals_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
6980 0           PDL_Byte * vals_physdatap = ((PDL_Byte *)((__privtrans->pdls[4])->data));
6981              
6982 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
6983 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
6984 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
6985 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
6986 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
6987 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
6988 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
6989 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
6990              
6991             PDL_COMMENT("none")
6992 0           } } break; case PDL_S: {
6993 0 0         PDL_Short * u_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
6994 0           PDL_Short * u_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data));
6995              
6996 0 0         PDL_Short * s_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
6997 0           PDL_Short * s_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data));
6998              
6999 0 0         PDL_Short * v_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7000 0           PDL_Short * v_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data));
7001              
7002 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7003 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7004              
7005 0 0         PDL_Short * vals_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7006 0           PDL_Short * vals_physdatap = ((PDL_Short *)((__privtrans->pdls[4])->data));
7007              
7008 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7009 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7010 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7011 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7012 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7013 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7014 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7015 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7016              
7017             PDL_COMMENT("none")
7018 0           } } break; case PDL_US: {
7019 0 0         PDL_Ushort * u_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7020 0           PDL_Ushort * u_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data));
7021              
7022 0 0         PDL_Ushort * s_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7023 0           PDL_Ushort * s_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data));
7024              
7025 0 0         PDL_Ushort * v_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7026 0           PDL_Ushort * v_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data));
7027              
7028 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7029 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7030              
7031 0 0         PDL_Ushort * vals_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7032 0           PDL_Ushort * vals_physdatap = ((PDL_Ushort *)((__privtrans->pdls[4])->data));
7033              
7034 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7035 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7036 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7037 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7038 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7039 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7040 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7041 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7042              
7043             PDL_COMMENT("none")
7044 0           } } break; case PDL_L: {
7045 0 0         PDL_Long * u_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7046 0           PDL_Long * u_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data));
7047              
7048 0 0         PDL_Long * s_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7049 0           PDL_Long * s_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
7050              
7051 0 0         PDL_Long * v_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7052 0           PDL_Long * v_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data));
7053              
7054 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7055 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7056              
7057 0 0         PDL_Long * vals_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7058 0           PDL_Long * vals_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
7059              
7060 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7061 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7062 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7063 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7064 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7065 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7066 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7067 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7068              
7069             PDL_COMMENT("none")
7070 0           } } break; case PDL_IND: {
7071 0 0         PDL_Indx * u_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7072 0           PDL_Indx * u_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
7073              
7074 0 0         PDL_Indx * s_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7075 0           PDL_Indx * s_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
7076              
7077 0 0         PDL_Indx * v_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7078 0           PDL_Indx * v_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
7079              
7080 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7081 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7082              
7083 0 0         PDL_Indx * vals_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7084 0           PDL_Indx * vals_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
7085              
7086 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7087 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7088 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7089 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7090 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7091 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7092 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7093 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7094              
7095             PDL_COMMENT("none")
7096 0           } } break; case PDL_LL: {
7097 0 0         PDL_LongLong * u_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7098 0           PDL_LongLong * u_physdatap = ((PDL_LongLong *)((__privtrans->pdls[0])->data));
7099              
7100 0 0         PDL_LongLong * s_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7101 0           PDL_LongLong * s_physdatap = ((PDL_LongLong *)((__privtrans->pdls[1])->data));
7102              
7103 0 0         PDL_LongLong * v_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7104 0           PDL_LongLong * v_physdatap = ((PDL_LongLong *)((__privtrans->pdls[2])->data));
7105              
7106 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7107 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7108              
7109 0 0         PDL_LongLong * vals_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7110 0           PDL_LongLong * vals_physdatap = ((PDL_LongLong *)((__privtrans->pdls[4])->data));
7111              
7112 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7113 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7114 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7115 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7116 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7117 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7118 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7119 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7120              
7121             PDL_COMMENT("none")
7122 0           } } break; case PDL_F: {
7123 0 0         PDL_Float * u_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7124 0           PDL_Float * u_physdatap = ((PDL_Float *)((__privtrans->pdls[0])->data));
7125              
7126 0 0         PDL_Float * s_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7127 0           PDL_Float * s_physdatap = ((PDL_Float *)((__privtrans->pdls[1])->data));
7128              
7129 0 0         PDL_Float * v_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7130 0           PDL_Float * v_physdatap = ((PDL_Float *)((__privtrans->pdls[2])->data));
7131              
7132 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7133 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7134              
7135 0 0         PDL_Float * vals_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7136 0           PDL_Float * vals_physdatap = ((PDL_Float *)((__privtrans->pdls[4])->data));
7137              
7138 0           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7139 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7140 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7141 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7142 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7143 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7144 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7145 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7146              
7147             PDL_COMMENT("none")
7148 0           } } break; case PDL_D: {
7149 4 100         PDL_Double * u_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
7150 4           PDL_Double * u_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
7151              
7152 4 100         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    50          
7153 4           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
7154              
7155 4 100         PDL_Double * v_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    50          
7156 4           PDL_Double * v_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
7157              
7158 4 50         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7159 4           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7160              
7161 4 50         PDL_Double * vals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7162 4           PDL_Double * vals_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
7163              
7164 4           {register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7165 4           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7166 4           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7167 4           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7168 4           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7169 4           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7170 4           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7171 4           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7172              
7173             PDL_COMMENT("none")
7174 4           } break;}
7175 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
7176             }
7177             }
7178             {
7179             static char *__parnames[] = {"u","s","v","which","vals"};
7180             static PDL_Indx __realdims[] = {2,1,2,2,1};
7181             static char __funcname[] = "PDL::SVDLIBC::svdindexND";
7182             static pdl_errorinfo __einfo = {
7183             __funcname, __parnames, 5
7184             };
7185            
7186 4           PDL->initthreadstruct(2,__privtrans->pdls,
7187             __realdims,__creating,5,
7188             &__einfo,&(__privtrans->__pdlthread),
7189 4           __privtrans->vtable->per_pdl_flags,
7190             0 );
7191             }
7192 4 50         if(((__privtrans->pdls[0]))->ndims < 2) {
7193 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
7194 0 0         if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
7195             }
7196 4 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) {
    0          
    0          
7197 4           __privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0];
7198 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
7199 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
7200 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7201             }
7202             }
7203 4 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size == 1)) {
    0          
    0          
7204 4           __privtrans->__m_size = ((__privtrans->pdls[0]))->dims[1];
7205 0 0         } else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size != ((__privtrans->pdls[0]))->dims[1]) {
    0          
7206 0 0         if(((__privtrans->pdls[0]))->dims[1] != 1) {
7207 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7208             }
7209             }
7210 4 50         if(((__privtrans->pdls[1]))->ndims < 1) {
7211 0 0         if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
7212             }
7213 4 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
7214 0           __privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0];
7215 4 50         } else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) {
    50          
7216 0 0         if(((__privtrans->pdls[1]))->dims[0] != 1) {
7217 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7218             }
7219             }
7220 4 50         if(((__privtrans->pdls[2]))->ndims < 2) {
7221 0 0         if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
7222 0 0         if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
7223             }
7224 4 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
7225 0           __privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0];
7226 4 50         } else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) {
    50          
7227 0 0         if(((__privtrans->pdls[2]))->dims[0] != 1) {
7228 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7229             }
7230             }
7231 4 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size == 1)) {
    0          
    0          
7232 4           __privtrans->__n_size = ((__privtrans->pdls[2]))->dims[1];
7233 0 0         } else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[1]) {
    0          
7234 0 0         if(((__privtrans->pdls[2]))->dims[1] != 1) {
7235 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7236             }
7237             }
7238 4 50         if(((__privtrans->pdls[3]))->ndims < 2) {
7239 0 0         if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__Two_size <= 1) __privtrans->__Two_size = 1;
    0          
7240 0 0         if (((__privtrans->pdls[3]))->ndims < 2 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
7241             }
7242 4 50         if(__privtrans->__Two_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__Two_size == 1)) {
    0          
    0          
7243 4           __privtrans->__Two_size = ((__privtrans->pdls[3]))->dims[0];
7244 0 0         } else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__Two_size != ((__privtrans->pdls[3]))->dims[0]) {
    0          
7245 0 0         if(((__privtrans->pdls[3]))->dims[0] != 1) {
7246 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7247             }
7248             }
7249 4 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__nnz_size == 1)) {
    0          
    0          
7250 4           __privtrans->__nnz_size = ((__privtrans->pdls[3]))->dims[1];
7251 0 0         } else if(((__privtrans->pdls[3]))->ndims > 1 && __privtrans->__nnz_size != ((__privtrans->pdls[3]))->dims[1]) {
    0          
7252 0 0         if(((__privtrans->pdls[3]))->dims[1] != 1) {
7253 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7254             }
7255             }
7256 4 50         if(!__creating[4]) {
7257 0 0         if(((__privtrans->pdls[4]))->ndims < 1) {
7258 0 0         if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
7259             }
7260 0 0         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
7261 0           __privtrans->__nnz_size = ((__privtrans->pdls[4]))->dims[0];
7262 0 0         } else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[4]))->dims[0]) {
    0          
7263 0 0         if(((__privtrans->pdls[4]))->dims[0] != 1) {
7264 0           PDL->pdl_barf("Error in svdindexND:" "Wrong dims\n");
7265             }
7266             }
7267             } else {
7268 4           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nnz_size;
7269 4           PDL->thread_create_parameter(&__privtrans->__pdlthread,4,dims,0);
7270             }
7271             { PDL_COMMENT("convenience block")
7272 4           void *hdrp = NULL;
7273 4           char propagate_hdrcpy = 0;
7274 4           SV *hdr_copy = NULL;
7275 4 50         if(!hdrp &&
    50          
7276 0 0         __privtrans->pdls[0]->hdrsv &&
7277 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
7278             ) {
7279 0           hdrp = __privtrans->pdls[0]->hdrsv;
7280 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
7281             }
7282 4 50         if(!hdrp &&
    50          
7283 0 0         __privtrans->pdls[1]->hdrsv &&
7284 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
7285             ) {
7286 0           hdrp = __privtrans->pdls[1]->hdrsv;
7287 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
7288             }
7289 4 50         if(!hdrp &&
    50          
7290 0 0         __privtrans->pdls[2]->hdrsv &&
7291 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
7292             ) {
7293 0           hdrp = __privtrans->pdls[2]->hdrsv;
7294 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
7295             }
7296 4 50         if(!hdrp &&
    50          
7297 0 0         __privtrans->pdls[3]->hdrsv &&
7298 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
7299             ) {
7300 0           hdrp = __privtrans->pdls[3]->hdrsv;
7301 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
7302             }
7303 4 50         if(!hdrp &&
    50          
7304 0 0         !__creating[4] &&
7305 0 0         __privtrans->pdls[4]->hdrsv &&
7306 0           (__privtrans->pdls[4]->state & PDL_HDRCPY)
7307             ) {
7308 0           hdrp = __privtrans->pdls[4]->hdrsv;
7309 0           propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0);
7310             }
7311 4 50         if (hdrp) {
7312 0 0         if(hdrp == &PL_sv_undef)
7313 0           hdr_copy = &PL_sv_undef;
7314             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
7315             int count;
7316             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
7317 0           dSP;
7318 0           ENTER ;
7319 0           SAVETMPS ;
7320 0 0         PUSHMARK(SP) ;
7321 0 0         XPUSHs( hdrp );
7322 0           PUTBACK ;
7323 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
7324 0           SPAGAIN ;
7325 0 0         if(count != 1)
7326 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
7327              
7328 0           hdr_copy = (SV *)POPs;
7329              
7330 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
7331 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
7332             }
7333              
7334 0 0         FREETMPS ;
7335 0           LEAVE ;
7336              
7337              
7338             } PDL_COMMENT("end of callback block")
7339              
7340 0 0         if ( __privtrans->pdls[4]->hdrsv != hdrp ){
7341 0 0         if( __privtrans->pdls[4]->hdrsv && __privtrans->pdls[4]->hdrsv != &PL_sv_undef)
    0          
7342 0           (void)SvREFCNT_dec( __privtrans->pdls[4]->hdrsv );
7343 0 0         if( hdr_copy != &PL_sv_undef )
7344 0           (void)SvREFCNT_inc(hdr_copy);
7345 0           __privtrans->pdls[4]->hdrsv = hdr_copy;
7346             }
7347 0 0         if(propagate_hdrcpy)
7348 0           __privtrans->pdls[4]->state |= PDL_HDRCPY;
7349              
7350 0 0         if(hdr_copy != &PL_sv_undef)
7351 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
7352             } PDL_COMMENT("end of if(hdrp) block")
7353             } PDL_COMMENT("end of conv. block")
7354 4 50         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    50          
7355 0           __privtrans->__inc_u_d = 0; else
7356 4 100         __privtrans->__inc_u_d = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1)
    50          
    50          
7357 0           __privtrans->__inc_u_m = 0; else
7358 4 100         __privtrans->__inc_u_m = PDL_REPRINC(__privtrans->pdls[0],1);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1)
    50          
    50          
7359 0           __privtrans->__inc_s_d = 0; else
7360 4 100         __privtrans->__inc_s_d = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1)
    50          
    50          
7361 0           __privtrans->__inc_v_d = 0; else
7362 4 100         __privtrans->__inc_v_d = PDL_REPRINC(__privtrans->pdls[2],0);if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1)
    50          
    50          
7363 0           __privtrans->__inc_v_n = 0; else
7364 4 100         __privtrans->__inc_v_n = PDL_REPRINC(__privtrans->pdls[2],1);if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1)
    50          
    50          
7365 0           __privtrans->__inc_which_Two = 0; else
7366 4 50         __privtrans->__inc_which_Two = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[3]->ndims <= 1 || __privtrans->pdls[3]->dims[1] <= 1)
    50          
    50          
7367 0           __privtrans->__inc_which_nnz = 0; else
7368 4 50         __privtrans->__inc_which_nnz = PDL_REPRINC(__privtrans->pdls[3],1);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1)
    50          
    50          
7369 0           __privtrans->__inc_vals_nnz = 0; else
7370 4 50         __privtrans->__inc_vals_nnz = PDL_REPRINC(__privtrans->pdls[4],0); __privtrans->__ddone = 1;
7371             }
7372 4           }
7373            
7374              
7375 0           pdl_trans * pdl_svdindexND_copy(pdl_trans *__tr ) {
7376             int __dim;
7377 0           pdl_svdindexND_struct *__privtrans = (pdl_svdindexND_struct *) __tr;
7378            
7379             {
7380 0           pdl_svdindexND_struct *__copy = malloc(sizeof(pdl_svdindexND_struct));
7381 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
7382 0           __copy->has_badvalue = __privtrans->has_badvalue;
7383 0           __copy->badvalue = __privtrans->badvalue;
7384 0           __copy->flags = __privtrans->flags;
7385 0           __copy->vtable = __privtrans->vtable;
7386 0           __copy->__datatype = __privtrans->__datatype;
7387 0           __copy->freeproc = NULL;
7388 0           __copy->__ddone = __privtrans->__ddone;
7389             {int i;
7390 0 0         for(i=0; i<__copy->vtable->npdls; i++)
7391 0           __copy->pdls[i] = __privtrans->pdls[i];
7392             }
7393            
7394 0 0         if(__copy->__ddone) {
7395 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_u_d=__copy->__inc_u_d;__privtrans->__inc_u_m=__copy->__inc_u_m;__privtrans->__inc_s_d=__copy->__inc_s_d;__privtrans->__inc_v_d=__copy->__inc_v_d;__privtrans->__inc_v_n=__copy->__inc_v_n;__privtrans->__inc_which_Two=__copy->__inc_which_Two;__privtrans->__inc_which_nnz=__copy->__inc_which_nnz;__privtrans->__inc_vals_nnz=__copy->__inc_vals_nnz;__copy->__m_size=__privtrans->__m_size;__copy->__n_size=__privtrans->__n_size;__copy->__nnz_size=__privtrans->__nnz_size;__copy->__d_size=__privtrans->__d_size;__copy->__Two_size=__privtrans->__Two_size;
7396             }
7397 0           return (pdl_trans*)__copy;
7398             }
7399             }
7400            
7401              
7402 4           void pdl_svdindexND_readdata(pdl_trans *__tr ) {
7403             int __dim;
7404 4           pdl_svdindexND_struct *__privtrans = (pdl_svdindexND_struct *) __tr;
7405            
7406             {
7407 4           {register PDL_Indx __d_size = __privtrans->__d_size;
7408 4           register PDL_Indx __nnz_size = __privtrans->__nnz_size;
7409             PDL_COMMENT("Start generic loop")
7410              
7411 4           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
7412 0           } break; case PDL_B: {
7413 0 0         PDL_Byte * u_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7414 0           PDL_Byte * u_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data));
7415              
7416 0 0         PDL_Byte * s_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7417 0           PDL_Byte * s_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data));
7418              
7419 0 0         PDL_Byte * v_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7420 0           PDL_Byte * v_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data));
7421              
7422 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7423 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7424              
7425 0 0         PDL_Byte * vals_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7426 0           PDL_Byte * vals_physdatap = ((PDL_Byte *)((__privtrans->pdls[4])->data));
7427              
7428              
7429             PDL_COMMENT("THREADLOOPBEGIN")
7430 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7431 0           do { register PDL_Indx __tind1=0,__tind2=0;
7432 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7433 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7434 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7435 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
7436 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
7437 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
7438 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
7439 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
7440 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
7441 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
7442 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
7443 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
7444 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
7445 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
7446 0           u_datap += __offsp[0];
7447 0           s_datap += __offsp[1];
7448 0           v_datap += __offsp[2];
7449 0           which_datap += __offsp[3];
7450 0           vals_datap += __offsp[4];
7451 0 0         for( __tind2 = 0 ;
7452             __tind2 < __tdims1 ;
7453 0           __tind2++
7454 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
7455 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
7456 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
7457 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
7458 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
7459             )
7460             {
7461 0 0         for( __tind1 = 0 ;
7462             __tind1 < __tdims0 ;
7463 0           __tind1++
7464 0           ,u_datap += __tinc0_0
7465 0           ,s_datap += __tinc0_1
7466 0           ,v_datap += __tinc0_2
7467 0           ,which_datap += __tinc0_3
7468 0           ,vals_datap += __tinc0_4
7469             )
7470 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7471 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7472 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7473 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7474 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7475 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7476 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7477 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7478              
7479              
7480             /*-- sanity check: dimension "Two" --*/
7481 0 0         if (__privtrans->__Two_size != 2) {
7482 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
7483             }
7484              
7485             /*-- guts --*/
7486             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
7487 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
7488 0           PDL_Byte v = 0;
7489             {PDL_COMMENT("Open d") register PDL_Indx d;
7490 0 0         for(d=0; d<(__d_size); d++) {
7491 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
7492 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
7493             }} PDL_COMMENT("Close d")
7494 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
7495             }} PDL_COMMENT("Close nnz")
7496              
7497             }
7498             PDL_COMMENT("THREADLOOPEND")
7499             }
7500             }
7501 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
7502 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
7503 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
7504 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
7505 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
7506 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
7507 0 0         PDL_Short * u_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7508 0           PDL_Short * u_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data));
7509              
7510 0 0         PDL_Short * s_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7511 0           PDL_Short * s_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data));
7512              
7513 0 0         PDL_Short * v_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7514 0           PDL_Short * v_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data));
7515              
7516 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7517 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7518              
7519 0 0         PDL_Short * vals_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7520 0           PDL_Short * vals_physdatap = ((PDL_Short *)((__privtrans->pdls[4])->data));
7521              
7522              
7523             PDL_COMMENT("THREADLOOPBEGIN")
7524 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7525 0           do { register PDL_Indx __tind1=0,__tind2=0;
7526 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7527 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7528 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7529 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
7530 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
7531 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
7532 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
7533 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
7534 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
7535 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
7536 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
7537 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
7538 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
7539 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
7540 0           u_datap += __offsp[0];
7541 0           s_datap += __offsp[1];
7542 0           v_datap += __offsp[2];
7543 0           which_datap += __offsp[3];
7544 0           vals_datap += __offsp[4];
7545 0 0         for( __tind2 = 0 ;
7546             __tind2 < __tdims1 ;
7547 0           __tind2++
7548 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
7549 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
7550 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
7551 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
7552 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
7553             )
7554             {
7555 0 0         for( __tind1 = 0 ;
7556             __tind1 < __tdims0 ;
7557 0           __tind1++
7558 0           ,u_datap += __tinc0_0
7559 0           ,s_datap += __tinc0_1
7560 0           ,v_datap += __tinc0_2
7561 0           ,which_datap += __tinc0_3
7562 0           ,vals_datap += __tinc0_4
7563             )
7564 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7565 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7566 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7567 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7568 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7569 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7570 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7571 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7572              
7573              
7574             /*-- sanity check: dimension "Two" --*/
7575 0 0         if (__privtrans->__Two_size != 2) {
7576 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
7577             }
7578              
7579             /*-- guts --*/
7580             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
7581 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
7582 0           PDL_Short v = 0;
7583             {PDL_COMMENT("Open d") register PDL_Indx d;
7584 0 0         for(d=0; d<(__d_size); d++) {
7585 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
7586 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
7587             }} PDL_COMMENT("Close d")
7588 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
7589             }} PDL_COMMENT("Close nnz")
7590              
7591             }
7592             PDL_COMMENT("THREADLOOPEND")
7593             }
7594             }
7595 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
7596 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
7597 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
7598 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
7599 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
7600 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
7601 0 0         PDL_Ushort * u_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7602 0           PDL_Ushort * u_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data));
7603              
7604 0 0         PDL_Ushort * s_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7605 0           PDL_Ushort * s_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data));
7606              
7607 0 0         PDL_Ushort * v_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7608 0           PDL_Ushort * v_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data));
7609              
7610 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7611 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7612              
7613 0 0         PDL_Ushort * vals_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7614 0           PDL_Ushort * vals_physdatap = ((PDL_Ushort *)((__privtrans->pdls[4])->data));
7615              
7616              
7617             PDL_COMMENT("THREADLOOPBEGIN")
7618 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7619 0           do { register PDL_Indx __tind1=0,__tind2=0;
7620 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7621 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7622 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7623 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
7624 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
7625 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
7626 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
7627 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
7628 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
7629 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
7630 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
7631 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
7632 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
7633 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
7634 0           u_datap += __offsp[0];
7635 0           s_datap += __offsp[1];
7636 0           v_datap += __offsp[2];
7637 0           which_datap += __offsp[3];
7638 0           vals_datap += __offsp[4];
7639 0 0         for( __tind2 = 0 ;
7640             __tind2 < __tdims1 ;
7641 0           __tind2++
7642 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
7643 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
7644 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
7645 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
7646 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
7647             )
7648             {
7649 0 0         for( __tind1 = 0 ;
7650             __tind1 < __tdims0 ;
7651 0           __tind1++
7652 0           ,u_datap += __tinc0_0
7653 0           ,s_datap += __tinc0_1
7654 0           ,v_datap += __tinc0_2
7655 0           ,which_datap += __tinc0_3
7656 0           ,vals_datap += __tinc0_4
7657             )
7658 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7659 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7660 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7661 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7662 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7663 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7664 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7665 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7666              
7667              
7668             /*-- sanity check: dimension "Two" --*/
7669 0 0         if (__privtrans->__Two_size != 2) {
7670 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
7671             }
7672              
7673             /*-- guts --*/
7674             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
7675 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
7676 0           PDL_Ushort v = 0;
7677             {PDL_COMMENT("Open d") register PDL_Indx d;
7678 0 0         for(d=0; d<(__d_size); d++) {
7679 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
7680 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
7681             }} PDL_COMMENT("Close d")
7682 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
7683             }} PDL_COMMENT("Close nnz")
7684              
7685             }
7686             PDL_COMMENT("THREADLOOPEND")
7687             }
7688             }
7689 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
7690 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
7691 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
7692 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
7693 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
7694 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
7695 0 0         PDL_Long * u_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7696 0           PDL_Long * u_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data));
7697              
7698 0 0         PDL_Long * s_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7699 0           PDL_Long * s_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
7700              
7701 0 0         PDL_Long * v_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7702 0           PDL_Long * v_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data));
7703              
7704 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7705 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7706              
7707 0 0         PDL_Long * vals_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7708 0           PDL_Long * vals_physdatap = ((PDL_Long *)((__privtrans->pdls[4])->data));
7709              
7710              
7711             PDL_COMMENT("THREADLOOPBEGIN")
7712 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7713 0           do { register PDL_Indx __tind1=0,__tind2=0;
7714 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7715 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7716 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7717 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
7718 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
7719 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
7720 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
7721 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
7722 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
7723 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
7724 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
7725 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
7726 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
7727 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
7728 0           u_datap += __offsp[0];
7729 0           s_datap += __offsp[1];
7730 0           v_datap += __offsp[2];
7731 0           which_datap += __offsp[3];
7732 0           vals_datap += __offsp[4];
7733 0 0         for( __tind2 = 0 ;
7734             __tind2 < __tdims1 ;
7735 0           __tind2++
7736 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
7737 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
7738 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
7739 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
7740 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
7741             )
7742             {
7743 0 0         for( __tind1 = 0 ;
7744             __tind1 < __tdims0 ;
7745 0           __tind1++
7746 0           ,u_datap += __tinc0_0
7747 0           ,s_datap += __tinc0_1
7748 0           ,v_datap += __tinc0_2
7749 0           ,which_datap += __tinc0_3
7750 0           ,vals_datap += __tinc0_4
7751             )
7752 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7753 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7754 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7755 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7756 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7757 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7758 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7759 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7760              
7761              
7762             /*-- sanity check: dimension "Two" --*/
7763 0 0         if (__privtrans->__Two_size != 2) {
7764 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
7765             }
7766              
7767             /*-- guts --*/
7768             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
7769 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
7770 0           PDL_Long v = 0;
7771             {PDL_COMMENT("Open d") register PDL_Indx d;
7772 0 0         for(d=0; d<(__d_size); d++) {
7773 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
7774 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
7775             }} PDL_COMMENT("Close d")
7776 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
7777             }} PDL_COMMENT("Close nnz")
7778              
7779             }
7780             PDL_COMMENT("THREADLOOPEND")
7781             }
7782             }
7783 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
7784 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
7785 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
7786 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
7787 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
7788 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
7789 0 0         PDL_Indx * u_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7790 0           PDL_Indx * u_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
7791              
7792 0 0         PDL_Indx * s_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7793 0           PDL_Indx * s_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
7794              
7795 0 0         PDL_Indx * v_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7796 0           PDL_Indx * v_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
7797              
7798 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7799 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7800              
7801 0 0         PDL_Indx * vals_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7802 0           PDL_Indx * vals_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
7803              
7804              
7805             PDL_COMMENT("THREADLOOPBEGIN")
7806 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7807 0           do { register PDL_Indx __tind1=0,__tind2=0;
7808 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7809 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7810 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7811 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
7812 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
7813 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
7814 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
7815 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
7816 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
7817 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
7818 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
7819 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
7820 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
7821 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
7822 0           u_datap += __offsp[0];
7823 0           s_datap += __offsp[1];
7824 0           v_datap += __offsp[2];
7825 0           which_datap += __offsp[3];
7826 0           vals_datap += __offsp[4];
7827 0 0         for( __tind2 = 0 ;
7828             __tind2 < __tdims1 ;
7829 0           __tind2++
7830 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
7831 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
7832 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
7833 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
7834 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
7835             )
7836             {
7837 0 0         for( __tind1 = 0 ;
7838             __tind1 < __tdims0 ;
7839 0           __tind1++
7840 0           ,u_datap += __tinc0_0
7841 0           ,s_datap += __tinc0_1
7842 0           ,v_datap += __tinc0_2
7843 0           ,which_datap += __tinc0_3
7844 0           ,vals_datap += __tinc0_4
7845             )
7846 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7847 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7848 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7849 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7850 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7851 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7852 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7853 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7854              
7855              
7856             /*-- sanity check: dimension "Two" --*/
7857 0 0         if (__privtrans->__Two_size != 2) {
7858 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
7859             }
7860              
7861             /*-- guts --*/
7862             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
7863 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
7864 0           PDL_Indx v = 0;
7865             {PDL_COMMENT("Open d") register PDL_Indx d;
7866 0 0         for(d=0; d<(__d_size); d++) {
7867 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
7868 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
7869             }} PDL_COMMENT("Close d")
7870 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
7871             }} PDL_COMMENT("Close nnz")
7872              
7873             }
7874             PDL_COMMENT("THREADLOOPEND")
7875             }
7876             }
7877 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
7878 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
7879 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
7880 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
7881 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
7882 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
7883 0 0         PDL_LongLong * u_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7884 0           PDL_LongLong * u_physdatap = ((PDL_LongLong *)((__privtrans->pdls[0])->data));
7885              
7886 0 0         PDL_LongLong * s_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7887 0           PDL_LongLong * s_physdatap = ((PDL_LongLong *)((__privtrans->pdls[1])->data));
7888              
7889 0 0         PDL_LongLong * v_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7890 0           PDL_LongLong * v_physdatap = ((PDL_LongLong *)((__privtrans->pdls[2])->data));
7891              
7892 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7893 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7894              
7895 0 0         PDL_LongLong * vals_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7896 0           PDL_LongLong * vals_physdatap = ((PDL_LongLong *)((__privtrans->pdls[4])->data));
7897              
7898              
7899             PDL_COMMENT("THREADLOOPBEGIN")
7900 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7901 0           do { register PDL_Indx __tind1=0,__tind2=0;
7902 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7903 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7904 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7905 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
7906 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
7907 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
7908 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
7909 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
7910 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
7911 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
7912 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
7913 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
7914 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
7915 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
7916 0           u_datap += __offsp[0];
7917 0           s_datap += __offsp[1];
7918 0           v_datap += __offsp[2];
7919 0           which_datap += __offsp[3];
7920 0           vals_datap += __offsp[4];
7921 0 0         for( __tind2 = 0 ;
7922             __tind2 < __tdims1 ;
7923 0           __tind2++
7924 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
7925 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
7926 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
7927 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
7928 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
7929             )
7930             {
7931 0 0         for( __tind1 = 0 ;
7932             __tind1 < __tdims0 ;
7933 0           __tind1++
7934 0           ,u_datap += __tinc0_0
7935 0           ,s_datap += __tinc0_1
7936 0           ,v_datap += __tinc0_2
7937 0           ,which_datap += __tinc0_3
7938 0           ,vals_datap += __tinc0_4
7939             )
7940 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
7941 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
7942 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
7943 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
7944 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
7945 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
7946 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
7947 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
7948              
7949              
7950             /*-- sanity check: dimension "Two" --*/
7951 0 0         if (__privtrans->__Two_size != 2) {
7952 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
7953             }
7954              
7955             /*-- guts --*/
7956             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
7957 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
7958 0           PDL_LongLong v = 0;
7959             {PDL_COMMENT("Open d") register PDL_Indx d;
7960 0 0         for(d=0; d<(__d_size); d++) {
7961 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
7962 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
7963             }} PDL_COMMENT("Close d")
7964 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
7965             }} PDL_COMMENT("Close nnz")
7966              
7967             }
7968             PDL_COMMENT("THREADLOOPEND")
7969             }
7970             }
7971 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
7972 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
7973 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
7974 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
7975 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
7976 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
7977 0 0         PDL_Float * u_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
7978 0           PDL_Float * u_physdatap = ((PDL_Float *)((__privtrans->pdls[0])->data));
7979              
7980 0 0         PDL_Float * s_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
7981 0           PDL_Float * s_physdatap = ((PDL_Float *)((__privtrans->pdls[1])->data));
7982              
7983 0 0         PDL_Float * v_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
7984 0           PDL_Float * v_physdatap = ((PDL_Float *)((__privtrans->pdls[2])->data));
7985              
7986 0 0         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
7987 0           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
7988              
7989 0 0         PDL_Float * vals_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
7990 0           PDL_Float * vals_physdatap = ((PDL_Float *)((__privtrans->pdls[4])->data));
7991              
7992              
7993             PDL_COMMENT("THREADLOOPBEGIN")
7994 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
7995 0           do { register PDL_Indx __tind1=0,__tind2=0;
7996 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
7997 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
7998 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
7999 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
8000 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
8001 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
8002 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
8003 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
8004 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
8005 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
8006 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
8007 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
8008 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
8009 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
8010 0           u_datap += __offsp[0];
8011 0           s_datap += __offsp[1];
8012 0           v_datap += __offsp[2];
8013 0           which_datap += __offsp[3];
8014 0           vals_datap += __offsp[4];
8015 0 0         for( __tind2 = 0 ;
8016             __tind2 < __tdims1 ;
8017 0           __tind2++
8018 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
8019 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
8020 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
8021 0           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
8022 0           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
8023             )
8024             {
8025 0 0         for( __tind1 = 0 ;
8026             __tind1 < __tdims0 ;
8027 0           __tind1++
8028 0           ,u_datap += __tinc0_0
8029 0           ,s_datap += __tinc0_1
8030 0           ,v_datap += __tinc0_2
8031 0           ,which_datap += __tinc0_3
8032 0           ,vals_datap += __tinc0_4
8033             )
8034 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8035 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8036 0           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
8037 0           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
8038 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8039 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8040 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8041 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8042              
8043              
8044             /*-- sanity check: dimension "Two" --*/
8045 0 0         if (__privtrans->__Two_size != 2) {
8046 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
8047             }
8048              
8049             /*-- guts --*/
8050             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
8051 0 0         for(nnz=0; nnz<(__nnz_size); nnz++) {
8052 0           PDL_Float v = 0;
8053             {PDL_COMMENT("Open d") register PDL_Indx d;
8054 0 0         for(d=0; d<(__d_size); d++) {
8055 0 0         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
8056 0 0         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    0          
    0          
    0          
    0          
8057             }} PDL_COMMENT("Close d")
8058 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
8059             }} PDL_COMMENT("Close nnz")
8060              
8061             }
8062             PDL_COMMENT("THREADLOOPEND")
8063             }
8064             }
8065 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
8066 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
8067 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
8068 0           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
8069 0           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
8070 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
8071 4 100         PDL_Double * u_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
8072 4           PDL_Double * u_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
8073              
8074 4 100         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    50          
8075 4           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
8076              
8077 4 100         PDL_Double * v_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    50          
8078 4           PDL_Double * v_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
8079              
8080 4 50         PDL_Indx * which_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8081 4           PDL_Indx * which_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8082              
8083 4 50         PDL_Double * vals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8084 4           PDL_Double * vals_physdatap = ((PDL_Double *)((__privtrans->pdls[4])->data));
8085              
8086              
8087             PDL_COMMENT("THREADLOOPBEGIN")
8088 4 50         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
8089 4           do { register PDL_Indx __tind1=0,__tind2=0;
8090 4           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
8091 4           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
8092 4           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
8093 4           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
8094 4           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
8095 4           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
8096 4           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
8097 4           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
8098 4           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
8099 4           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
8100 4           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
8101 4           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
8102 4           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
8103 4           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
8104 4           u_datap += __offsp[0];
8105 4           s_datap += __offsp[1];
8106 4           v_datap += __offsp[2];
8107 4           which_datap += __offsp[3];
8108 4           vals_datap += __offsp[4];
8109 8 100         for( __tind2 = 0 ;
8110             __tind2 < __tdims1 ;
8111 4           __tind2++
8112 4           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
8113 4           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
8114 4           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
8115 4           ,which_datap += __tinc1_3 - __tinc0_3 * __tdims0
8116 4           ,vals_datap += __tinc1_4 - __tinc0_4 * __tdims0
8117             )
8118             {
8119 8 100         for( __tind1 = 0 ;
8120             __tind1 < __tdims0 ;
8121 4           __tind1++
8122 4           ,u_datap += __tinc0_0
8123 4           ,s_datap += __tinc0_1
8124 4           ,v_datap += __tinc0_2
8125 4           ,which_datap += __tinc0_3
8126 4           ,vals_datap += __tinc0_4
8127             )
8128 4           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8129 4           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8130 4           register PDL_Indx __inc_which_Two = __privtrans->__inc_which_Two;
8131 4           register PDL_Indx __inc_which_nnz = __privtrans->__inc_which_nnz;
8132 4           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8133 4           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8134 4           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8135 4           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8136              
8137              
8138             /*-- sanity check: dimension "Two" --*/
8139 4 50         if (__privtrans->__Two_size != 2) {
8140 0           croak("svdlas2w(): bogus input dimension Two=%ld for indices whichi(nnz,Two) must be 2", __privtrans->__Two_size);
8141             }
8142              
8143             /*-- guts --*/
8144             {PDL_COMMENT("Open nnz") register PDL_Indx nnz;
8145 92 100         for(nnz=0; nnz<(__nnz_size); nnz++) {
8146 88           PDL_Double v = 0;
8147             {PDL_COMMENT("Open d") register PDL_Indx d;
8148 572 100         for(d=0; d<(__d_size); d++) {
8149 484 50         __SVDLIBC_LONG ni=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 0))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") , mi=(which_datap)[0+(__inc_which_Two*PP_INDTERM(__privtrans->__Two_size, 1))+(__inc_which_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") ;
    50          
    50          
    50          
8150 484 50         v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, ni))] PDL_COMMENT("ACCESS()") ;
    50          
    50          
    50          
    50          
8151             }} PDL_COMMENT("Close d")
8152 88 50         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nnz))] PDL_COMMENT("ACCESS()") = v;
8153             }} PDL_COMMENT("Close nnz")
8154              
8155             }
8156             PDL_COMMENT("THREADLOOPEND")
8157             }
8158             }
8159 4           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
8160 4           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
8161 4           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
8162 4           which_datap -= __tinc1_3 * __tdims1 + __offsp[3];
8163 4           vals_datap -= __tinc1_4 * __tdims1 + __offsp[4];
8164 4 50         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
8165 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
8166             }
8167             }
8168             }
8169            
8170              
8171              
8172              
8173 4           void pdl_svdindexND_free(pdl_trans *__tr ) {
8174             int __dim;
8175 4           pdl_svdindexND_struct *__privtrans = (pdl_svdindexND_struct *) __tr;
8176            
8177             {
8178            
8179 4           PDL_TR_CLRMAGIC(__privtrans);
8180            
8181 4 50         if(__privtrans->__ddone) {
8182 4           PDL->freethreadloop(&(__privtrans->__pdlthread));
8183             ;;;;;;;;;;;;;;
8184             }
8185            
8186             }
8187 4           }
8188            
8189              
8190              
8191              
8192             static char pdl_svdindexND_vtable_flags[] =
8193             { PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK};
8194             pdl_transvtable pdl_svdindexND_vtable = {
8195             0,0, 4, 5, pdl_svdindexND_vtable_flags,
8196             pdl_svdindexND_redodims, pdl_svdindexND_readdata, NULL,
8197             pdl_svdindexND_free,NULL,NULL,pdl_svdindexND_copy,
8198             sizeof(pdl_svdindexND_struct),"pdl_svdindexND_vtable"
8199             };
8200              
8201             typedef struct pdl_svdindexccs_struct {
8202             PDL_TRANS_START(6);
8203             pdl_thread __pdlthread;PDL_Indx __inc_u_d;PDL_Indx __inc_u_m;PDL_Indx __inc_s_d;PDL_Indx __inc_v_d;PDL_Indx __inc_v_n;PDL_Indx __inc_ptr_nplus1;PDL_Indx __inc_rowids_nnz;PDL_Indx __inc_vals_nnz;PDL_Indx __m_size;PDL_Indx __nplus1_size;PDL_Indx __d_size;PDL_Indx __n_size;PDL_Indx __nnz_size;
8204            
8205             char __ddone; PDL_COMMENT("Dims done")
8206             } pdl_svdindexccs_struct;
8207              
8208 2           void pdl_svdindexccs_redodims(pdl_trans *__tr ) {
8209             int __dim;
8210 2           pdl_svdindexccs_struct *__privtrans = (pdl_svdindexccs_struct *) __tr;
8211            
8212             {
8213             PDL_Indx __creating[6];
8214 2           __privtrans->__m_size = -1;
8215 2           __privtrans->__nplus1_size = -1;
8216 2           __privtrans->__d_size = -1;
8217 2           __privtrans->__n_size = -1;
8218 2           __privtrans->__nnz_size = -1;
8219 2           __creating[0] = 0;
8220 2           __creating[1] = 0;
8221 2           __creating[2] = 0;
8222 2           __creating[3] = 0;
8223 2           __creating[4] = 0;
8224 2 50         __creating[5] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[5]);
    50          
8225             {
8226             {PDL_COMMENT("Start generic loop")
8227              
8228 2           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
8229 0           } break; case PDL_B: {
8230 0 0         PDL_Byte * u_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8231 0           PDL_Byte * u_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data));
8232              
8233 0 0         PDL_Byte * s_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8234 0           PDL_Byte * s_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data));
8235              
8236 0 0         PDL_Byte * v_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8237 0           PDL_Byte * v_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data));
8238              
8239 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8240 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8241              
8242 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8243 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8244              
8245 0 0         PDL_Byte * vals_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8246 0           PDL_Byte * vals_physdatap = ((PDL_Byte *)((__privtrans->pdls[5])->data));
8247              
8248 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8249 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8250 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8251 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8252 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8253 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8254 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8255 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8256              
8257             PDL_COMMENT("none")
8258 0           } } break; case PDL_S: {
8259 0 0         PDL_Short * u_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8260 0           PDL_Short * u_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data));
8261              
8262 0 0         PDL_Short * s_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8263 0           PDL_Short * s_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data));
8264              
8265 0 0         PDL_Short * v_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8266 0           PDL_Short * v_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data));
8267              
8268 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8269 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8270              
8271 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8272 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8273              
8274 0 0         PDL_Short * vals_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8275 0           PDL_Short * vals_physdatap = ((PDL_Short *)((__privtrans->pdls[5])->data));
8276              
8277 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8278 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8279 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8280 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8281 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8282 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8283 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8284 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8285              
8286             PDL_COMMENT("none")
8287 0           } } break; case PDL_US: {
8288 0 0         PDL_Ushort * u_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8289 0           PDL_Ushort * u_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data));
8290              
8291 0 0         PDL_Ushort * s_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8292 0           PDL_Ushort * s_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data));
8293              
8294 0 0         PDL_Ushort * v_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8295 0           PDL_Ushort * v_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data));
8296              
8297 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8298 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8299              
8300 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8301 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8302              
8303 0 0         PDL_Ushort * vals_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8304 0           PDL_Ushort * vals_physdatap = ((PDL_Ushort *)((__privtrans->pdls[5])->data));
8305              
8306 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8307 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8308 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8309 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8310 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8311 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8312 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8313 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8314              
8315             PDL_COMMENT("none")
8316 0           } } break; case PDL_L: {
8317 0 0         PDL_Long * u_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8318 0           PDL_Long * u_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data));
8319              
8320 0 0         PDL_Long * s_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8321 0           PDL_Long * s_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
8322              
8323 0 0         PDL_Long * v_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8324 0           PDL_Long * v_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data));
8325              
8326 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8327 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8328              
8329 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8330 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8331              
8332 0 0         PDL_Long * vals_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8333 0           PDL_Long * vals_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data));
8334              
8335 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8336 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8337 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8338 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8339 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8340 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8341 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8342 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8343              
8344             PDL_COMMENT("none")
8345 0           } } break; case PDL_IND: {
8346 0 0         PDL_Indx * u_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8347 0           PDL_Indx * u_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
8348              
8349 0 0         PDL_Indx * s_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8350 0           PDL_Indx * s_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
8351              
8352 0 0         PDL_Indx * v_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8353 0           PDL_Indx * v_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
8354              
8355 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8356 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8357              
8358 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8359 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8360              
8361 0 0         PDL_Indx * vals_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8362 0           PDL_Indx * vals_physdatap = ((PDL_Indx *)((__privtrans->pdls[5])->data));
8363              
8364 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8365 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8366 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8367 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8368 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8369 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8370 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8371 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8372              
8373             PDL_COMMENT("none")
8374 0           } } break; case PDL_LL: {
8375 0 0         PDL_LongLong * u_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8376 0           PDL_LongLong * u_physdatap = ((PDL_LongLong *)((__privtrans->pdls[0])->data));
8377              
8378 0 0         PDL_LongLong * s_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8379 0           PDL_LongLong * s_physdatap = ((PDL_LongLong *)((__privtrans->pdls[1])->data));
8380              
8381 0 0         PDL_LongLong * v_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8382 0           PDL_LongLong * v_physdatap = ((PDL_LongLong *)((__privtrans->pdls[2])->data));
8383              
8384 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8385 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8386              
8387 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8388 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8389              
8390 0 0         PDL_LongLong * vals_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8391 0           PDL_LongLong * vals_physdatap = ((PDL_LongLong *)((__privtrans->pdls[5])->data));
8392              
8393 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8394 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8395 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8396 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8397 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8398 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8399 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8400 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8401              
8402             PDL_COMMENT("none")
8403 0           } } break; case PDL_F: {
8404 0 0         PDL_Float * u_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8405 0           PDL_Float * u_physdatap = ((PDL_Float *)((__privtrans->pdls[0])->data));
8406              
8407 0 0         PDL_Float * s_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8408 0           PDL_Float * s_physdatap = ((PDL_Float *)((__privtrans->pdls[1])->data));
8409              
8410 0 0         PDL_Float * v_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8411 0           PDL_Float * v_physdatap = ((PDL_Float *)((__privtrans->pdls[2])->data));
8412              
8413 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8414 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8415              
8416 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8417 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8418              
8419 0 0         PDL_Float * vals_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8420 0           PDL_Float * vals_physdatap = ((PDL_Float *)((__privtrans->pdls[5])->data));
8421              
8422 0           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8423 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8424 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8425 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8426 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8427 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8428 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8429 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8430              
8431             PDL_COMMENT("none")
8432 0           } } break; case PDL_D: {
8433 2 100         PDL_Double * u_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
8434 2           PDL_Double * u_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
8435              
8436 2 100         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    50          
8437 2           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
8438              
8439 2 100         PDL_Double * v_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    50          
8440 2           PDL_Double * v_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
8441              
8442 2 50         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8443 2           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8444              
8445 2 50         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8446 2           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8447              
8448 2 50         PDL_Double * vals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8449 2           PDL_Double * vals_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
8450              
8451 2           {register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8452 2           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8453 2           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8454 2           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8455 2           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8456 2           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8457 2           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8458 2           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8459              
8460             PDL_COMMENT("none")
8461 2           } break;}
8462 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
8463             }
8464             }
8465             {
8466             static char *__parnames[] = {"u","s","v","ptr","rowids","vals"};
8467             static PDL_Indx __realdims[] = {2,1,2,1,1,1};
8468             static char __funcname[] = "PDL::SVDLIBC::svdindexccs";
8469             static pdl_errorinfo __einfo = {
8470             __funcname, __parnames, 6
8471             };
8472            
8473 2           PDL->initthreadstruct(2,__privtrans->pdls,
8474             __realdims,__creating,6,
8475             &__einfo,&(__privtrans->__pdlthread),
8476 2           __privtrans->vtable->per_pdl_flags,
8477             0 );
8478             }
8479 2 50         if(((__privtrans->pdls[0]))->ndims < 2) {
8480 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
8481 0 0         if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
8482             }
8483 2 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) {
    0          
    0          
8484 2           __privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0];
8485 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
8486 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
8487 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8488             }
8489             }
8490 2 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size == 1)) {
    0          
    0          
8491 2           __privtrans->__m_size = ((__privtrans->pdls[0]))->dims[1];
8492 0 0         } else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size != ((__privtrans->pdls[0]))->dims[1]) {
    0          
8493 0 0         if(((__privtrans->pdls[0]))->dims[1] != 1) {
8494 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8495             }
8496             }
8497 2 50         if(((__privtrans->pdls[1]))->ndims < 1) {
8498 0 0         if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
8499             }
8500 2 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
8501 0           __privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0];
8502 2 50         } else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) {
    50          
8503 0 0         if(((__privtrans->pdls[1]))->dims[0] != 1) {
8504 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8505             }
8506             }
8507 2 50         if(((__privtrans->pdls[2]))->ndims < 2) {
8508 0 0         if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
8509 0 0         if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
8510             }
8511 2 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
8512 0           __privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0];
8513 2 50         } else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) {
    50          
8514 0 0         if(((__privtrans->pdls[2]))->dims[0] != 1) {
8515 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8516             }
8517             }
8518 2 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size == 1)) {
    0          
    0          
8519 2           __privtrans->__n_size = ((__privtrans->pdls[2]))->dims[1];
8520 0 0         } else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[1]) {
    0          
8521 0 0         if(((__privtrans->pdls[2]))->dims[1] != 1) {
8522 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8523             }
8524             }
8525 2 50         if(((__privtrans->pdls[3]))->ndims < 1) {
8526 0 0         if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__nplus1_size <= 1) __privtrans->__nplus1_size = 1;
    0          
8527             }
8528 2 50         if(__privtrans->__nplus1_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nplus1_size == 1)) {
    0          
    0          
8529 2           __privtrans->__nplus1_size = ((__privtrans->pdls[3]))->dims[0];
8530 0 0         } else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nplus1_size != ((__privtrans->pdls[3]))->dims[0]) {
    0          
8531 0 0         if(((__privtrans->pdls[3]))->dims[0] != 1) {
8532 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8533             }
8534             }
8535 2 50         if(((__privtrans->pdls[4]))->ndims < 1) {
8536 0 0         if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
8537             }
8538 2 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
8539 2           __privtrans->__nnz_size = ((__privtrans->pdls[4]))->dims[0];
8540 0 0         } else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[4]))->dims[0]) {
    0          
8541 0 0         if(((__privtrans->pdls[4]))->dims[0] != 1) {
8542 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8543             }
8544             }
8545 2 50         if(!__creating[5]) {
8546 0 0         if(((__privtrans->pdls[5]))->ndims < 1) {
8547 0 0         if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
8548             }
8549 0 0         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
8550 0           __privtrans->__nnz_size = ((__privtrans->pdls[5]))->dims[0];
8551 0 0         } else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[5]))->dims[0]) {
    0          
8552 0 0         if(((__privtrans->pdls[5]))->dims[0] != 1) {
8553 0           PDL->pdl_barf("Error in svdindexccs:" "Wrong dims\n");
8554             }
8555             }
8556             } else {
8557 2           PDL_Indx dims[2]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")dims[0] = __privtrans->__nnz_size;
8558 2           PDL->thread_create_parameter(&__privtrans->__pdlthread,5,dims,0);
8559             }
8560             { PDL_COMMENT("convenience block")
8561 2           void *hdrp = NULL;
8562 2           char propagate_hdrcpy = 0;
8563 2           SV *hdr_copy = NULL;
8564 2 50         if(!hdrp &&
    50          
8565 0 0         __privtrans->pdls[0]->hdrsv &&
8566 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
8567             ) {
8568 0           hdrp = __privtrans->pdls[0]->hdrsv;
8569 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
8570             }
8571 2 50         if(!hdrp &&
    50          
8572 0 0         __privtrans->pdls[1]->hdrsv &&
8573 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
8574             ) {
8575 0           hdrp = __privtrans->pdls[1]->hdrsv;
8576 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
8577             }
8578 2 50         if(!hdrp &&
    50          
8579 0 0         __privtrans->pdls[2]->hdrsv &&
8580 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
8581             ) {
8582 0           hdrp = __privtrans->pdls[2]->hdrsv;
8583 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
8584             }
8585 2 50         if(!hdrp &&
    50          
8586 0 0         __privtrans->pdls[3]->hdrsv &&
8587 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
8588             ) {
8589 0           hdrp = __privtrans->pdls[3]->hdrsv;
8590 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
8591             }
8592 2 50         if(!hdrp &&
    50          
8593 0 0         __privtrans->pdls[4]->hdrsv &&
8594 0           (__privtrans->pdls[4]->state & PDL_HDRCPY)
8595             ) {
8596 0           hdrp = __privtrans->pdls[4]->hdrsv;
8597 0           propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0);
8598             }
8599 2 50         if(!hdrp &&
    50          
8600 0 0         !__creating[5] &&
8601 0 0         __privtrans->pdls[5]->hdrsv &&
8602 0           (__privtrans->pdls[5]->state & PDL_HDRCPY)
8603             ) {
8604 0           hdrp = __privtrans->pdls[5]->hdrsv;
8605 0           propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0);
8606             }
8607 2 50         if (hdrp) {
8608 0 0         if(hdrp == &PL_sv_undef)
8609 0           hdr_copy = &PL_sv_undef;
8610             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
8611             int count;
8612             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
8613 0           dSP;
8614 0           ENTER ;
8615 0           SAVETMPS ;
8616 0 0         PUSHMARK(SP) ;
8617 0 0         XPUSHs( hdrp );
8618 0           PUTBACK ;
8619 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
8620 0           SPAGAIN ;
8621 0 0         if(count != 1)
8622 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
8623              
8624 0           hdr_copy = (SV *)POPs;
8625              
8626 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
8627 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
8628             }
8629              
8630 0 0         FREETMPS ;
8631 0           LEAVE ;
8632              
8633              
8634             } PDL_COMMENT("end of callback block")
8635              
8636 0 0         if ( __privtrans->pdls[5]->hdrsv != hdrp ){
8637 0 0         if( __privtrans->pdls[5]->hdrsv && __privtrans->pdls[5]->hdrsv != &PL_sv_undef)
    0          
8638 0           (void)SvREFCNT_dec( __privtrans->pdls[5]->hdrsv );
8639 0 0         if( hdr_copy != &PL_sv_undef )
8640 0           (void)SvREFCNT_inc(hdr_copy);
8641 0           __privtrans->pdls[5]->hdrsv = hdr_copy;
8642             }
8643 0 0         if(propagate_hdrcpy)
8644 0           __privtrans->pdls[5]->state |= PDL_HDRCPY;
8645              
8646 0 0         if(hdr_copy != &PL_sv_undef)
8647 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
8648             } PDL_COMMENT("end of if(hdrp) block")
8649             } PDL_COMMENT("end of conv. block")
8650 2 50         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    50          
8651 0           __privtrans->__inc_u_d = 0; else
8652 2 100         __privtrans->__inc_u_d = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1)
    50          
    50          
8653 0           __privtrans->__inc_u_m = 0; else
8654 2 100         __privtrans->__inc_u_m = PDL_REPRINC(__privtrans->pdls[0],1);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1)
    50          
    50          
8655 0           __privtrans->__inc_s_d = 0; else
8656 2 100         __privtrans->__inc_s_d = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1)
    50          
    50          
8657 0           __privtrans->__inc_v_d = 0; else
8658 2 100         __privtrans->__inc_v_d = PDL_REPRINC(__privtrans->pdls[2],0);if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1)
    50          
    50          
8659 0           __privtrans->__inc_v_n = 0; else
8660 2 100         __privtrans->__inc_v_n = PDL_REPRINC(__privtrans->pdls[2],1);if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1)
    50          
    50          
8661 0           __privtrans->__inc_ptr_nplus1 = 0; else
8662 2 50         __privtrans->__inc_ptr_nplus1 = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1)
    50          
    50          
8663 0           __privtrans->__inc_rowids_nnz = 0; else
8664 2 50         __privtrans->__inc_rowids_nnz = PDL_REPRINC(__privtrans->pdls[4],0);if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1)
    50          
    50          
8665 0           __privtrans->__inc_vals_nnz = 0; else
8666 2 50         __privtrans->__inc_vals_nnz = PDL_REPRINC(__privtrans->pdls[5],0); __privtrans->__ddone = 1;
8667             }
8668 2           }
8669            
8670              
8671 0           pdl_trans * pdl_svdindexccs_copy(pdl_trans *__tr ) {
8672             int __dim;
8673 0           pdl_svdindexccs_struct *__privtrans = (pdl_svdindexccs_struct *) __tr;
8674            
8675             {
8676 0           pdl_svdindexccs_struct *__copy = malloc(sizeof(pdl_svdindexccs_struct));
8677 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
8678 0           __copy->has_badvalue = __privtrans->has_badvalue;
8679 0           __copy->badvalue = __privtrans->badvalue;
8680 0           __copy->flags = __privtrans->flags;
8681 0           __copy->vtable = __privtrans->vtable;
8682 0           __copy->__datatype = __privtrans->__datatype;
8683 0           __copy->freeproc = NULL;
8684 0           __copy->__ddone = __privtrans->__ddone;
8685             {int i;
8686 0 0         for(i=0; i<__copy->vtable->npdls; i++)
8687 0           __copy->pdls[i] = __privtrans->pdls[i];
8688             }
8689            
8690 0 0         if(__copy->__ddone) {
8691 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_u_d=__copy->__inc_u_d;__privtrans->__inc_u_m=__copy->__inc_u_m;__privtrans->__inc_s_d=__copy->__inc_s_d;__privtrans->__inc_v_d=__copy->__inc_v_d;__privtrans->__inc_v_n=__copy->__inc_v_n;__privtrans->__inc_ptr_nplus1=__copy->__inc_ptr_nplus1;__privtrans->__inc_rowids_nnz=__copy->__inc_rowids_nnz;__privtrans->__inc_vals_nnz=__copy->__inc_vals_nnz;__copy->__m_size=__privtrans->__m_size;__copy->__nplus1_size=__privtrans->__nplus1_size;__copy->__d_size=__privtrans->__d_size;__copy->__n_size=__privtrans->__n_size;__copy->__nnz_size=__privtrans->__nnz_size;
8692             }
8693 0           return (pdl_trans*)__copy;
8694             }
8695             }
8696            
8697              
8698 2           void pdl_svdindexccs_readdata(pdl_trans *__tr ) {
8699             int __dim;
8700 2           pdl_svdindexccs_struct *__privtrans = (pdl_svdindexccs_struct *) __tr;
8701            
8702             {
8703 2           {register PDL_Indx __d_size = __privtrans->__d_size;
8704 2           register PDL_Indx __n_size = __privtrans->__n_size;
8705             PDL_COMMENT("Start generic loop")
8706              
8707 2           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
8708 0           } break; case PDL_B: {
8709 0 0         PDL_Byte * u_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8710 0           PDL_Byte * u_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data));
8711              
8712 0 0         PDL_Byte * s_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8713 0           PDL_Byte * s_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data));
8714              
8715 0 0         PDL_Byte * v_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8716 0           PDL_Byte * v_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data));
8717              
8718 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8719 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8720              
8721 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8722 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8723              
8724 0 0         PDL_Byte * vals_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8725 0           PDL_Byte * vals_physdatap = ((PDL_Byte *)((__privtrans->pdls[5])->data));
8726              
8727              
8728             PDL_COMMENT("THREADLOOPBEGIN")
8729 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
8730 0           do { register PDL_Indx __tind1=0,__tind2=0;
8731 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
8732 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
8733 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
8734 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
8735 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
8736 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
8737 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
8738 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
8739 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
8740 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
8741 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
8742 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
8743 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
8744 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
8745 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
8746 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
8747 0           u_datap += __offsp[0];
8748 0           s_datap += __offsp[1];
8749 0           v_datap += __offsp[2];
8750 0           ptr_datap += __offsp[3];
8751 0           rowids_datap += __offsp[4];
8752 0           vals_datap += __offsp[5];
8753 0 0         for( __tind2 = 0 ;
8754             __tind2 < __tdims1 ;
8755 0           __tind2++
8756 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
8757 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
8758 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
8759 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
8760 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
8761 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
8762             )
8763             {
8764 0 0         for( __tind1 = 0 ;
8765             __tind1 < __tdims0 ;
8766 0           __tind1++
8767 0           ,u_datap += __tinc0_0
8768 0           ,s_datap += __tinc0_1
8769 0           ,v_datap += __tinc0_2
8770 0           ,ptr_datap += __tinc0_3
8771 0           ,rowids_datap += __tinc0_4
8772 0           ,vals_datap += __tinc0_5
8773             )
8774 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8775 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8776 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8777 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8778 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8779 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8780 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8781 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8782              
8783              
8784             /*-- sanity checks: ptr --*/
8785 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
8786 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
8787             }
8788              
8789             /*-- guts --*/
8790             {PDL_COMMENT("Open n") register PDL_Indx n;
8791 0 0         for(n=0; n<(__n_size); n++) {
8792 0           __SVDLIBC_LONG n1 = n+1;
8793 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
8794 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
8795 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
8796 0           PDL_Byte v=0;
8797             {PDL_COMMENT("Open d") register PDL_Indx d;
8798 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
8799 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
8800             }
8801             }} PDL_COMMENT("Close n")
8802              
8803             }
8804             PDL_COMMENT("THREADLOOPEND")
8805             }
8806             }
8807 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
8808 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
8809 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
8810 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
8811 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
8812 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
8813 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
8814 0 0         PDL_Short * u_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8815 0           PDL_Short * u_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data));
8816              
8817 0 0         PDL_Short * s_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8818 0           PDL_Short * s_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data));
8819              
8820 0 0         PDL_Short * v_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8821 0           PDL_Short * v_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data));
8822              
8823 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8824 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8825              
8826 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8827 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8828              
8829 0 0         PDL_Short * vals_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8830 0           PDL_Short * vals_physdatap = ((PDL_Short *)((__privtrans->pdls[5])->data));
8831              
8832              
8833             PDL_COMMENT("THREADLOOPBEGIN")
8834 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
8835 0           do { register PDL_Indx __tind1=0,__tind2=0;
8836 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
8837 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
8838 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
8839 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
8840 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
8841 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
8842 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
8843 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
8844 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
8845 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
8846 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
8847 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
8848 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
8849 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
8850 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
8851 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
8852 0           u_datap += __offsp[0];
8853 0           s_datap += __offsp[1];
8854 0           v_datap += __offsp[2];
8855 0           ptr_datap += __offsp[3];
8856 0           rowids_datap += __offsp[4];
8857 0           vals_datap += __offsp[5];
8858 0 0         for( __tind2 = 0 ;
8859             __tind2 < __tdims1 ;
8860 0           __tind2++
8861 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
8862 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
8863 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
8864 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
8865 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
8866 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
8867             )
8868             {
8869 0 0         for( __tind1 = 0 ;
8870             __tind1 < __tdims0 ;
8871 0           __tind1++
8872 0           ,u_datap += __tinc0_0
8873 0           ,s_datap += __tinc0_1
8874 0           ,v_datap += __tinc0_2
8875 0           ,ptr_datap += __tinc0_3
8876 0           ,rowids_datap += __tinc0_4
8877 0           ,vals_datap += __tinc0_5
8878             )
8879 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8880 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8881 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8882 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8883 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8884 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8885 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8886 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8887              
8888              
8889             /*-- sanity checks: ptr --*/
8890 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
8891 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
8892             }
8893              
8894             /*-- guts --*/
8895             {PDL_COMMENT("Open n") register PDL_Indx n;
8896 0 0         for(n=0; n<(__n_size); n++) {
8897 0           __SVDLIBC_LONG n1 = n+1;
8898 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
8899 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
8900 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
8901 0           PDL_Short v=0;
8902             {PDL_COMMENT("Open d") register PDL_Indx d;
8903 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
8904 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
8905             }
8906             }} PDL_COMMENT("Close n")
8907              
8908             }
8909             PDL_COMMENT("THREADLOOPEND")
8910             }
8911             }
8912 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
8913 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
8914 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
8915 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
8916 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
8917 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
8918 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
8919 0 0         PDL_Ushort * u_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
8920 0           PDL_Ushort * u_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data));
8921              
8922 0 0         PDL_Ushort * s_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
8923 0           PDL_Ushort * s_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data));
8924              
8925 0 0         PDL_Ushort * v_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
8926 0           PDL_Ushort * v_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data));
8927              
8928 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
8929 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
8930              
8931 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
8932 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
8933              
8934 0 0         PDL_Ushort * vals_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
8935 0           PDL_Ushort * vals_physdatap = ((PDL_Ushort *)((__privtrans->pdls[5])->data));
8936              
8937              
8938             PDL_COMMENT("THREADLOOPBEGIN")
8939 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
8940 0           do { register PDL_Indx __tind1=0,__tind2=0;
8941 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
8942 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
8943 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
8944 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
8945 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
8946 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
8947 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
8948 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
8949 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
8950 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
8951 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
8952 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
8953 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
8954 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
8955 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
8956 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
8957 0           u_datap += __offsp[0];
8958 0           s_datap += __offsp[1];
8959 0           v_datap += __offsp[2];
8960 0           ptr_datap += __offsp[3];
8961 0           rowids_datap += __offsp[4];
8962 0           vals_datap += __offsp[5];
8963 0 0         for( __tind2 = 0 ;
8964             __tind2 < __tdims1 ;
8965 0           __tind2++
8966 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
8967 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
8968 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
8969 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
8970 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
8971 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
8972             )
8973             {
8974 0 0         for( __tind1 = 0 ;
8975             __tind1 < __tdims0 ;
8976 0           __tind1++
8977 0           ,u_datap += __tinc0_0
8978 0           ,s_datap += __tinc0_1
8979 0           ,v_datap += __tinc0_2
8980 0           ,ptr_datap += __tinc0_3
8981 0           ,rowids_datap += __tinc0_4
8982 0           ,vals_datap += __tinc0_5
8983             )
8984 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
8985 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
8986 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
8987 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
8988 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
8989 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
8990 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
8991 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
8992              
8993              
8994             /*-- sanity checks: ptr --*/
8995 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
8996 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
8997             }
8998              
8999             /*-- guts --*/
9000             {PDL_COMMENT("Open n") register PDL_Indx n;
9001 0 0         for(n=0; n<(__n_size); n++) {
9002 0           __SVDLIBC_LONG n1 = n+1;
9003 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
9004 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
9005 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
9006 0           PDL_Ushort v=0;
9007             {PDL_COMMENT("Open d") register PDL_Indx d;
9008 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
9009 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
9010             }
9011             }} PDL_COMMENT("Close n")
9012              
9013             }
9014             PDL_COMMENT("THREADLOOPEND")
9015             }
9016             }
9017 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
9018 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
9019 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
9020 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
9021 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
9022 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
9023 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
9024 0 0         PDL_Long * u_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9025 0           PDL_Long * u_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data));
9026              
9027 0 0         PDL_Long * s_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9028 0           PDL_Long * s_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
9029              
9030 0 0         PDL_Long * v_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9031 0           PDL_Long * v_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data));
9032              
9033 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9034 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9035              
9036 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9037 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9038              
9039 0 0         PDL_Long * vals_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9040 0           PDL_Long * vals_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data));
9041              
9042              
9043             PDL_COMMENT("THREADLOOPBEGIN")
9044 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
9045 0           do { register PDL_Indx __tind1=0,__tind2=0;
9046 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
9047 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
9048 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
9049 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
9050 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
9051 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
9052 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
9053 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
9054 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
9055 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
9056 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
9057 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
9058 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
9059 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
9060 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
9061 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
9062 0           u_datap += __offsp[0];
9063 0           s_datap += __offsp[1];
9064 0           v_datap += __offsp[2];
9065 0           ptr_datap += __offsp[3];
9066 0           rowids_datap += __offsp[4];
9067 0           vals_datap += __offsp[5];
9068 0 0         for( __tind2 = 0 ;
9069             __tind2 < __tdims1 ;
9070 0           __tind2++
9071 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
9072 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
9073 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
9074 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
9075 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
9076 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
9077             )
9078             {
9079 0 0         for( __tind1 = 0 ;
9080             __tind1 < __tdims0 ;
9081 0           __tind1++
9082 0           ,u_datap += __tinc0_0
9083 0           ,s_datap += __tinc0_1
9084 0           ,v_datap += __tinc0_2
9085 0           ,ptr_datap += __tinc0_3
9086 0           ,rowids_datap += __tinc0_4
9087 0           ,vals_datap += __tinc0_5
9088             )
9089 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9090 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9091 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9092 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9093 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9094 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9095 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9096 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
9097              
9098              
9099             /*-- sanity checks: ptr --*/
9100 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
9101 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
9102             }
9103              
9104             /*-- guts --*/
9105             {PDL_COMMENT("Open n") register PDL_Indx n;
9106 0 0         for(n=0; n<(__n_size); n++) {
9107 0           __SVDLIBC_LONG n1 = n+1;
9108 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
9109 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
9110 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
9111 0           PDL_Long v=0;
9112             {PDL_COMMENT("Open d") register PDL_Indx d;
9113 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
9114 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
9115             }
9116             }} PDL_COMMENT("Close n")
9117              
9118             }
9119             PDL_COMMENT("THREADLOOPEND")
9120             }
9121             }
9122 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
9123 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
9124 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
9125 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
9126 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
9127 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
9128 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
9129 0 0         PDL_Indx * u_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9130 0           PDL_Indx * u_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
9131              
9132 0 0         PDL_Indx * s_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9133 0           PDL_Indx * s_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
9134              
9135 0 0         PDL_Indx * v_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9136 0           PDL_Indx * v_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
9137              
9138 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9139 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9140              
9141 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9142 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9143              
9144 0 0         PDL_Indx * vals_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9145 0           PDL_Indx * vals_physdatap = ((PDL_Indx *)((__privtrans->pdls[5])->data));
9146              
9147              
9148             PDL_COMMENT("THREADLOOPBEGIN")
9149 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
9150 0           do { register PDL_Indx __tind1=0,__tind2=0;
9151 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
9152 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
9153 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
9154 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
9155 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
9156 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
9157 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
9158 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
9159 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
9160 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
9161 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
9162 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
9163 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
9164 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
9165 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
9166 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
9167 0           u_datap += __offsp[0];
9168 0           s_datap += __offsp[1];
9169 0           v_datap += __offsp[2];
9170 0           ptr_datap += __offsp[3];
9171 0           rowids_datap += __offsp[4];
9172 0           vals_datap += __offsp[5];
9173 0 0         for( __tind2 = 0 ;
9174             __tind2 < __tdims1 ;
9175 0           __tind2++
9176 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
9177 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
9178 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
9179 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
9180 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
9181 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
9182             )
9183             {
9184 0 0         for( __tind1 = 0 ;
9185             __tind1 < __tdims0 ;
9186 0           __tind1++
9187 0           ,u_datap += __tinc0_0
9188 0           ,s_datap += __tinc0_1
9189 0           ,v_datap += __tinc0_2
9190 0           ,ptr_datap += __tinc0_3
9191 0           ,rowids_datap += __tinc0_4
9192 0           ,vals_datap += __tinc0_5
9193             )
9194 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9195 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9196 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9197 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9198 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9199 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9200 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9201 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
9202              
9203              
9204             /*-- sanity checks: ptr --*/
9205 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
9206 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
9207             }
9208              
9209             /*-- guts --*/
9210             {PDL_COMMENT("Open n") register PDL_Indx n;
9211 0 0         for(n=0; n<(__n_size); n++) {
9212 0           __SVDLIBC_LONG n1 = n+1;
9213 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
9214 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
9215 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
9216 0           PDL_Indx v=0;
9217             {PDL_COMMENT("Open d") register PDL_Indx d;
9218 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
9219 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
9220             }
9221             }} PDL_COMMENT("Close n")
9222              
9223             }
9224             PDL_COMMENT("THREADLOOPEND")
9225             }
9226             }
9227 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
9228 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
9229 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
9230 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
9231 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
9232 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
9233 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
9234 0 0         PDL_LongLong * u_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9235 0           PDL_LongLong * u_physdatap = ((PDL_LongLong *)((__privtrans->pdls[0])->data));
9236              
9237 0 0         PDL_LongLong * s_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9238 0           PDL_LongLong * s_physdatap = ((PDL_LongLong *)((__privtrans->pdls[1])->data));
9239              
9240 0 0         PDL_LongLong * v_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9241 0           PDL_LongLong * v_physdatap = ((PDL_LongLong *)((__privtrans->pdls[2])->data));
9242              
9243 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9244 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9245              
9246 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9247 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9248              
9249 0 0         PDL_LongLong * vals_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9250 0           PDL_LongLong * vals_physdatap = ((PDL_LongLong *)((__privtrans->pdls[5])->data));
9251              
9252              
9253             PDL_COMMENT("THREADLOOPBEGIN")
9254 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
9255 0           do { register PDL_Indx __tind1=0,__tind2=0;
9256 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
9257 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
9258 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
9259 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
9260 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
9261 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
9262 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
9263 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
9264 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
9265 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
9266 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
9267 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
9268 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
9269 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
9270 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
9271 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
9272 0           u_datap += __offsp[0];
9273 0           s_datap += __offsp[1];
9274 0           v_datap += __offsp[2];
9275 0           ptr_datap += __offsp[3];
9276 0           rowids_datap += __offsp[4];
9277 0           vals_datap += __offsp[5];
9278 0 0         for( __tind2 = 0 ;
9279             __tind2 < __tdims1 ;
9280 0           __tind2++
9281 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
9282 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
9283 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
9284 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
9285 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
9286 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
9287             )
9288             {
9289 0 0         for( __tind1 = 0 ;
9290             __tind1 < __tdims0 ;
9291 0           __tind1++
9292 0           ,u_datap += __tinc0_0
9293 0           ,s_datap += __tinc0_1
9294 0           ,v_datap += __tinc0_2
9295 0           ,ptr_datap += __tinc0_3
9296 0           ,rowids_datap += __tinc0_4
9297 0           ,vals_datap += __tinc0_5
9298             )
9299 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9300 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9301 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9302 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9303 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9304 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9305 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9306 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
9307              
9308              
9309             /*-- sanity checks: ptr --*/
9310 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
9311 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
9312             }
9313              
9314             /*-- guts --*/
9315             {PDL_COMMENT("Open n") register PDL_Indx n;
9316 0 0         for(n=0; n<(__n_size); n++) {
9317 0           __SVDLIBC_LONG n1 = n+1;
9318 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
9319 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
9320 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
9321 0           PDL_LongLong v=0;
9322             {PDL_COMMENT("Open d") register PDL_Indx d;
9323 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
9324 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
9325             }
9326             }} PDL_COMMENT("Close n")
9327              
9328             }
9329             PDL_COMMENT("THREADLOOPEND")
9330             }
9331             }
9332 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
9333 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
9334 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
9335 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
9336 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
9337 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
9338 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
9339 0 0         PDL_Float * u_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9340 0           PDL_Float * u_physdatap = ((PDL_Float *)((__privtrans->pdls[0])->data));
9341              
9342 0 0         PDL_Float * s_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9343 0           PDL_Float * s_physdatap = ((PDL_Float *)((__privtrans->pdls[1])->data));
9344              
9345 0 0         PDL_Float * v_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9346 0           PDL_Float * v_physdatap = ((PDL_Float *)((__privtrans->pdls[2])->data));
9347              
9348 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9349 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9350              
9351 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9352 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9353              
9354 0 0         PDL_Float * vals_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9355 0           PDL_Float * vals_physdatap = ((PDL_Float *)((__privtrans->pdls[5])->data));
9356              
9357              
9358             PDL_COMMENT("THREADLOOPBEGIN")
9359 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
9360 0           do { register PDL_Indx __tind1=0,__tind2=0;
9361 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
9362 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
9363 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
9364 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
9365 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
9366 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
9367 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
9368 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
9369 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
9370 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
9371 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
9372 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
9373 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
9374 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
9375 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
9376 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
9377 0           u_datap += __offsp[0];
9378 0           s_datap += __offsp[1];
9379 0           v_datap += __offsp[2];
9380 0           ptr_datap += __offsp[3];
9381 0           rowids_datap += __offsp[4];
9382 0           vals_datap += __offsp[5];
9383 0 0         for( __tind2 = 0 ;
9384             __tind2 < __tdims1 ;
9385 0           __tind2++
9386 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
9387 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
9388 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
9389 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
9390 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
9391 0           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
9392             )
9393             {
9394 0 0         for( __tind1 = 0 ;
9395             __tind1 < __tdims0 ;
9396 0           __tind1++
9397 0           ,u_datap += __tinc0_0
9398 0           ,s_datap += __tinc0_1
9399 0           ,v_datap += __tinc0_2
9400 0           ,ptr_datap += __tinc0_3
9401 0           ,rowids_datap += __tinc0_4
9402 0           ,vals_datap += __tinc0_5
9403             )
9404 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9405 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9406 0           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9407 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9408 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9409 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9410 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9411 0           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
9412              
9413              
9414             /*-- sanity checks: ptr --*/
9415 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
9416 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
9417             }
9418              
9419             /*-- guts --*/
9420             {PDL_COMMENT("Open n") register PDL_Indx n;
9421 0 0         for(n=0; n<(__n_size); n++) {
9422 0           __SVDLIBC_LONG n1 = n+1;
9423 0 0         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
9424 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
9425 0 0         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
9426 0           PDL_Float v=0;
9427             {PDL_COMMENT("Open d") register PDL_Indx d;
9428 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
9429 0 0         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
9430             }
9431             }} PDL_COMMENT("Close n")
9432              
9433             }
9434             PDL_COMMENT("THREADLOOPEND")
9435             }
9436             }
9437 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
9438 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
9439 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
9440 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
9441 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
9442 0           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
9443 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
9444 2 100         PDL_Double * u_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
9445 2           PDL_Double * u_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
9446              
9447 2 100         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    50          
9448 2           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
9449              
9450 2 100         PDL_Double * v_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    50          
9451 2           PDL_Double * v_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
9452              
9453 2 50         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9454 2           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9455              
9456 2 50         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9457 2           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9458              
9459 2 50         PDL_Double * vals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9460 2           PDL_Double * vals_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
9461              
9462              
9463             PDL_COMMENT("THREADLOOPBEGIN")
9464 2 50         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
9465 2           do { register PDL_Indx __tind1=0,__tind2=0;
9466 2           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
9467 2           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
9468 2           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
9469 2           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
9470 2           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
9471 2           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
9472 2           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
9473 2           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
9474 2           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
9475 2           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
9476 2           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
9477 2           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
9478 2           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
9479 2           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
9480 2           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
9481 2           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
9482 2           u_datap += __offsp[0];
9483 2           s_datap += __offsp[1];
9484 2           v_datap += __offsp[2];
9485 2           ptr_datap += __offsp[3];
9486 2           rowids_datap += __offsp[4];
9487 2           vals_datap += __offsp[5];
9488 4 100         for( __tind2 = 0 ;
9489             __tind2 < __tdims1 ;
9490 2           __tind2++
9491 2           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
9492 2           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
9493 2           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
9494 2           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
9495 2           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
9496 2           ,vals_datap += __tinc1_5 - __tinc0_5 * __tdims0
9497             )
9498             {
9499 4 100         for( __tind1 = 0 ;
9500             __tind1 < __tdims0 ;
9501 2           __tind1++
9502 2           ,u_datap += __tinc0_0
9503 2           ,s_datap += __tinc0_1
9504 2           ,v_datap += __tinc0_2
9505 2           ,ptr_datap += __tinc0_3
9506 2           ,rowids_datap += __tinc0_4
9507 2           ,vals_datap += __tinc0_5
9508             )
9509 2           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9510 2           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9511 2           register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9512 2           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9513 2           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9514 2           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9515 2           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9516 2           register PDL_Indx __inc_vals_nnz = __privtrans->__inc_vals_nnz;
9517              
9518              
9519             /*-- sanity checks: ptr --*/
9520 2 50         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
9521 0           croak("svdindexccs(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
9522             }
9523              
9524             /*-- guts --*/
9525             {PDL_COMMENT("Open n") register PDL_Indx n;
9526 16 100         for(n=0; n<(__n_size); n++) {
9527 14           __SVDLIBC_LONG n1 = n+1;
9528 14 50         __SVDLIBC_LONG nzi, nzj=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
9529 58 50         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    100          
9530 44 50         __SVDLIBC_LONG mi = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
9531 44           PDL_Double v=0;
9532             {PDL_COMMENT("Open d") register PDL_Indx d;
9533 286 50         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, mi))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    50          
    50          
    50          
    50          
    100          
9534 44 50         (vals_datap)[0+(__inc_vals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") = v;
9535             }
9536             }} PDL_COMMENT("Close n")
9537              
9538             }
9539             PDL_COMMENT("THREADLOOPEND")
9540             }
9541             }
9542 2           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
9543 2           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
9544 2           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
9545 2           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
9546 2           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
9547 2           vals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
9548 2 50         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
9549 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
9550             }
9551             }
9552             }
9553            
9554              
9555              
9556              
9557 2           void pdl_svdindexccs_free(pdl_trans *__tr ) {
9558             int __dim;
9559 2           pdl_svdindexccs_struct *__privtrans = (pdl_svdindexccs_struct *) __tr;
9560            
9561             {
9562            
9563 2           PDL_TR_CLRMAGIC(__privtrans);
9564            
9565 2 50         if(__privtrans->__ddone) {
9566 2           PDL->freethreadloop(&(__privtrans->__pdlthread));
9567             ;;;;;;;;;;;;;;
9568             }
9569            
9570             }
9571 2           }
9572            
9573              
9574              
9575              
9576             static char pdl_svdindexccs_vtable_flags[] =
9577             { PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK};
9578             pdl_transvtable pdl_svdindexccs_vtable = {
9579             0,0, 5, 6, pdl_svdindexccs_vtable_flags,
9580             pdl_svdindexccs_redodims, pdl_svdindexccs_readdata, NULL,
9581             pdl_svdindexccs_free,NULL,NULL,pdl_svdindexccs_copy,
9582             sizeof(pdl_svdindexccs_struct),"pdl_svdindexccs_vtable"
9583             };
9584              
9585             typedef struct pdl_svderror_struct {
9586             PDL_TRANS_START(7);
9587             pdl_thread __pdlthread;PDL_Indx __inc_u_d;PDL_Indx __inc_u_m;PDL_Indx __inc_s_d;PDL_Indx __inc_v_d;PDL_Indx __inc_v_n;PDL_Indx __inc_ptr_nplus1;PDL_Indx __inc_rowids_nnz;PDL_Indx __inc_nzvals_nnz;PDL_Indx __m_size;PDL_Indx __nnz_size;PDL_Indx __nplus1_size;PDL_Indx __d_size;PDL_Indx __n_size;
9588            
9589             char __ddone; PDL_COMMENT("Dims done")
9590             } pdl_svderror_struct;
9591              
9592 2           void pdl_svderror_redodims(pdl_trans *__tr ) {
9593             int __dim;
9594 2           pdl_svderror_struct *__privtrans = (pdl_svderror_struct *) __tr;
9595            
9596             {
9597             PDL_Indx __creating[7];
9598 2           __privtrans->__m_size = -1;
9599 2           __privtrans->__nnz_size = -1;
9600 2           __privtrans->__nplus1_size = -1;
9601 2           __privtrans->__d_size = -1;
9602 2           __privtrans->__n_size = -1;
9603 2           __creating[0] = 0;
9604 2           __creating[1] = 0;
9605 2           __creating[2] = 0;
9606 2           __creating[3] = 0;
9607 2           __creating[4] = 0;
9608 2           __creating[5] = 0;
9609 2 50         __creating[6] = PDL_CR_SETDIMSCOND(__privtrans,__privtrans->pdls[6]);
    50          
9610             {
9611             {PDL_COMMENT("Start generic loop")
9612              
9613 2           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
9614 0           } break; case PDL_B: {
9615 0 0         PDL_Byte * u_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9616 0           PDL_Byte * u_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data));
9617              
9618 0 0         PDL_Byte * s_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9619 0           PDL_Byte * s_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data));
9620              
9621 0 0         PDL_Byte * v_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9622 0           PDL_Byte * v_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data));
9623              
9624 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9625 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9626              
9627 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9628 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9629              
9630 0 0         PDL_Byte * nzvals_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9631 0           PDL_Byte * nzvals_physdatap = ((PDL_Byte *)((__privtrans->pdls[5])->data));
9632              
9633 0 0         PDL_Byte * err_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9634 0           PDL_Byte * err_physdatap = ((PDL_Byte *)((__privtrans->pdls[6])->data));
9635              
9636 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9637 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9638 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9639 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9640 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9641 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9642 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9643 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9644              
9645             PDL_COMMENT("none")
9646 0           } } break; case PDL_S: {
9647 0 0         PDL_Short * u_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9648 0           PDL_Short * u_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data));
9649              
9650 0 0         PDL_Short * s_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9651 0           PDL_Short * s_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data));
9652              
9653 0 0         PDL_Short * v_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9654 0           PDL_Short * v_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data));
9655              
9656 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9657 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9658              
9659 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9660 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9661              
9662 0 0         PDL_Short * nzvals_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9663 0           PDL_Short * nzvals_physdatap = ((PDL_Short *)((__privtrans->pdls[5])->data));
9664              
9665 0 0         PDL_Short * err_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9666 0           PDL_Short * err_physdatap = ((PDL_Short *)((__privtrans->pdls[6])->data));
9667              
9668 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9669 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9670 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9671 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9672 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9673 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9674 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9675 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9676              
9677             PDL_COMMENT("none")
9678 0           } } break; case PDL_US: {
9679 0 0         PDL_Ushort * u_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9680 0           PDL_Ushort * u_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data));
9681              
9682 0 0         PDL_Ushort * s_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9683 0           PDL_Ushort * s_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data));
9684              
9685 0 0         PDL_Ushort * v_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9686 0           PDL_Ushort * v_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data));
9687              
9688 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9689 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9690              
9691 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9692 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9693              
9694 0 0         PDL_Ushort * nzvals_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9695 0           PDL_Ushort * nzvals_physdatap = ((PDL_Ushort *)((__privtrans->pdls[5])->data));
9696              
9697 0 0         PDL_Ushort * err_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9698 0           PDL_Ushort * err_physdatap = ((PDL_Ushort *)((__privtrans->pdls[6])->data));
9699              
9700 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9701 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9702 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9703 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9704 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9705 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9706 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9707 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9708              
9709             PDL_COMMENT("none")
9710 0           } } break; case PDL_L: {
9711 0 0         PDL_Long * u_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9712 0           PDL_Long * u_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data));
9713              
9714 0 0         PDL_Long * s_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9715 0           PDL_Long * s_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
9716              
9717 0 0         PDL_Long * v_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9718 0           PDL_Long * v_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data));
9719              
9720 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9721 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9722              
9723 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9724 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9725              
9726 0 0         PDL_Long * nzvals_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9727 0           PDL_Long * nzvals_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data));
9728              
9729 0 0         PDL_Long * err_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9730 0           PDL_Long * err_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data));
9731              
9732 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9733 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9734 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9735 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9736 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9737 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9738 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9739 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9740              
9741             PDL_COMMENT("none")
9742 0           } } break; case PDL_IND: {
9743 0 0         PDL_Indx * u_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9744 0           PDL_Indx * u_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
9745              
9746 0 0         PDL_Indx * s_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9747 0           PDL_Indx * s_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
9748              
9749 0 0         PDL_Indx * v_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9750 0           PDL_Indx * v_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
9751              
9752 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9753 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9754              
9755 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9756 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9757              
9758 0 0         PDL_Indx * nzvals_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9759 0           PDL_Indx * nzvals_physdatap = ((PDL_Indx *)((__privtrans->pdls[5])->data));
9760              
9761 0 0         PDL_Indx * err_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9762 0           PDL_Indx * err_physdatap = ((PDL_Indx *)((__privtrans->pdls[6])->data));
9763              
9764 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9765 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9766 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9767 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9768 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9769 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9770 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9771 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9772              
9773             PDL_COMMENT("none")
9774 0           } } break; case PDL_LL: {
9775 0 0         PDL_LongLong * u_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9776 0           PDL_LongLong * u_physdatap = ((PDL_LongLong *)((__privtrans->pdls[0])->data));
9777              
9778 0 0         PDL_LongLong * s_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9779 0           PDL_LongLong * s_physdatap = ((PDL_LongLong *)((__privtrans->pdls[1])->data));
9780              
9781 0 0         PDL_LongLong * v_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9782 0           PDL_LongLong * v_physdatap = ((PDL_LongLong *)((__privtrans->pdls[2])->data));
9783              
9784 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9785 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9786              
9787 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9788 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9789              
9790 0 0         PDL_LongLong * nzvals_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9791 0           PDL_LongLong * nzvals_physdatap = ((PDL_LongLong *)((__privtrans->pdls[5])->data));
9792              
9793 0 0         PDL_LongLong * err_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9794 0           PDL_LongLong * err_physdatap = ((PDL_LongLong *)((__privtrans->pdls[6])->data));
9795              
9796 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9797 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9798 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9799 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9800 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9801 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9802 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9803 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9804              
9805             PDL_COMMENT("none")
9806 0           } } break; case PDL_F: {
9807 0 0         PDL_Float * u_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
9808 0           PDL_Float * u_physdatap = ((PDL_Float *)((__privtrans->pdls[0])->data));
9809              
9810 0 0         PDL_Float * s_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
9811 0           PDL_Float * s_physdatap = ((PDL_Float *)((__privtrans->pdls[1])->data));
9812              
9813 0 0         PDL_Float * v_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
9814 0           PDL_Float * v_physdatap = ((PDL_Float *)((__privtrans->pdls[2])->data));
9815              
9816 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9817 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9818              
9819 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9820 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9821              
9822 0 0         PDL_Float * nzvals_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9823 0           PDL_Float * nzvals_physdatap = ((PDL_Float *)((__privtrans->pdls[5])->data));
9824              
9825 0 0         PDL_Float * err_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9826 0           PDL_Float * err_physdatap = ((PDL_Float *)((__privtrans->pdls[6])->data));
9827              
9828 0           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9829 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9830 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9831 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9832 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9833 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9834 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9835 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9836              
9837             PDL_COMMENT("none")
9838 0           } } break; case PDL_D: {
9839 2 100         PDL_Double * u_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
9840 2           PDL_Double * u_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
9841              
9842 2 100         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    50          
9843 2           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
9844              
9845 2 100         PDL_Double * v_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    50          
9846 2           PDL_Double * v_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
9847              
9848 2 50         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
9849 2           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
9850              
9851 2 50         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
9852 2           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
9853              
9854 2 50         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
9855 2           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
9856              
9857 2 50         PDL_Double * err_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
9858 2           PDL_Double * err_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
9859              
9860 2           {register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
9861 2           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
9862 2           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
9863 2           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
9864 2           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
9865 2           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
9866 2           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
9867 2           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
9868              
9869             PDL_COMMENT("none")
9870 2           } break;}
9871 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
9872             }
9873             }
9874             {
9875             static char *__parnames[] = {"u","s","v","ptr","rowids","nzvals","err"};
9876             static PDL_Indx __realdims[] = {2,1,2,1,1,1,0};
9877             static char __funcname[] = "PDL::SVDLIBC::svderror";
9878             static pdl_errorinfo __einfo = {
9879             __funcname, __parnames, 7
9880             };
9881            
9882 2           PDL->initthreadstruct(2,__privtrans->pdls,
9883             __realdims,__creating,7,
9884             &__einfo,&(__privtrans->__pdlthread),
9885 2           __privtrans->vtable->per_pdl_flags,
9886             0 );
9887             }
9888 2 50         if(((__privtrans->pdls[0]))->ndims < 2) {
9889 0 0         if (((__privtrans->pdls[0]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
9890 0 0         if (((__privtrans->pdls[0]))->ndims < 2 && __privtrans->__m_size <= 1) __privtrans->__m_size = 1;
    0          
9891             }
9892 2 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size == 1)) {
    0          
    0          
9893 2           __privtrans->__d_size = ((__privtrans->pdls[0]))->dims[0];
9894 0 0         } else if(((__privtrans->pdls[0]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[0]))->dims[0]) {
    0          
9895 0 0         if(((__privtrans->pdls[0]))->dims[0] != 1) {
9896 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9897             }
9898             }
9899 2 50         if(__privtrans->__m_size == -1 || (((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size == 1)) {
    0          
    0          
9900 2           __privtrans->__m_size = ((__privtrans->pdls[0]))->dims[1];
9901 0 0         } else if(((__privtrans->pdls[0]))->ndims > 1 && __privtrans->__m_size != ((__privtrans->pdls[0]))->dims[1]) {
    0          
9902 0 0         if(((__privtrans->pdls[0]))->dims[1] != 1) {
9903 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9904             }
9905             }
9906 2 50         if(((__privtrans->pdls[1]))->ndims < 1) {
9907 0 0         if (((__privtrans->pdls[1]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
9908             }
9909 2 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
9910 0           __privtrans->__d_size = ((__privtrans->pdls[1]))->dims[0];
9911 2 50         } else if(((__privtrans->pdls[1]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[1]))->dims[0]) {
    50          
9912 0 0         if(((__privtrans->pdls[1]))->dims[0] != 1) {
9913 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9914             }
9915             }
9916 2 50         if(((__privtrans->pdls[2]))->ndims < 2) {
9917 0 0         if (((__privtrans->pdls[2]))->ndims < 1 && __privtrans->__d_size <= 1) __privtrans->__d_size = 1;
    0          
9918 0 0         if (((__privtrans->pdls[2]))->ndims < 2 && __privtrans->__n_size <= 1) __privtrans->__n_size = 1;
    0          
9919             }
9920 2 50         if(__privtrans->__d_size == -1 || (((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size == 1)) {
    50          
    50          
9921 0           __privtrans->__d_size = ((__privtrans->pdls[2]))->dims[0];
9922 2 50         } else if(((__privtrans->pdls[2]))->ndims > 0 && __privtrans->__d_size != ((__privtrans->pdls[2]))->dims[0]) {
    50          
9923 0 0         if(((__privtrans->pdls[2]))->dims[0] != 1) {
9924 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9925             }
9926             }
9927 2 50         if(__privtrans->__n_size == -1 || (((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size == 1)) {
    0          
    0          
9928 2           __privtrans->__n_size = ((__privtrans->pdls[2]))->dims[1];
9929 0 0         } else if(((__privtrans->pdls[2]))->ndims > 1 && __privtrans->__n_size != ((__privtrans->pdls[2]))->dims[1]) {
    0          
9930 0 0         if(((__privtrans->pdls[2]))->dims[1] != 1) {
9931 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9932             }
9933             }
9934 2 50         if(((__privtrans->pdls[3]))->ndims < 1) {
9935 0 0         if (((__privtrans->pdls[3]))->ndims < 1 && __privtrans->__nplus1_size <= 1) __privtrans->__nplus1_size = 1;
    0          
9936             }
9937 2 50         if(__privtrans->__nplus1_size == -1 || (((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nplus1_size == 1)) {
    0          
    0          
9938 2           __privtrans->__nplus1_size = ((__privtrans->pdls[3]))->dims[0];
9939 0 0         } else if(((__privtrans->pdls[3]))->ndims > 0 && __privtrans->__nplus1_size != ((__privtrans->pdls[3]))->dims[0]) {
    0          
9940 0 0         if(((__privtrans->pdls[3]))->dims[0] != 1) {
9941 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9942             }
9943             }
9944 2 50         if(((__privtrans->pdls[4]))->ndims < 1) {
9945 0 0         if (((__privtrans->pdls[4]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
9946             }
9947 2 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    0          
    0          
9948 2           __privtrans->__nnz_size = ((__privtrans->pdls[4]))->dims[0];
9949 0 0         } else if(((__privtrans->pdls[4]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[4]))->dims[0]) {
    0          
9950 0 0         if(((__privtrans->pdls[4]))->dims[0] != 1) {
9951 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9952             }
9953             }
9954 2 50         if(((__privtrans->pdls[5]))->ndims < 1) {
9955 0 0         if (((__privtrans->pdls[5]))->ndims < 1 && __privtrans->__nnz_size <= 1) __privtrans->__nnz_size = 1;
    0          
9956             }
9957 2 50         if(__privtrans->__nnz_size == -1 || (((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__nnz_size == 1)) {
    50          
    50          
9958 0           __privtrans->__nnz_size = ((__privtrans->pdls[5]))->dims[0];
9959 2 50         } else if(((__privtrans->pdls[5]))->ndims > 0 && __privtrans->__nnz_size != ((__privtrans->pdls[5]))->dims[0]) {
    50          
9960 0 0         if(((__privtrans->pdls[5]))->dims[0] != 1) {
9961 0           PDL->pdl_barf("Error in svderror:" "Wrong dims\n");
9962             }
9963             }
9964 2 50         if(!__creating[6]) {
9965             } else {
9966             PDL_Indx dims[1]; PDL_COMMENT("Use ninds+1 to avoid smart (stupid) compilers")
9967 2           PDL->thread_create_parameter(&__privtrans->__pdlthread,6,dims,0);
9968             }
9969             { PDL_COMMENT("convenience block")
9970 2           void *hdrp = NULL;
9971 2           char propagate_hdrcpy = 0;
9972 2           SV *hdr_copy = NULL;
9973 2 50         if(!hdrp &&
    50          
9974 0 0         __privtrans->pdls[0]->hdrsv &&
9975 0           (__privtrans->pdls[0]->state & PDL_HDRCPY)
9976             ) {
9977 0           hdrp = __privtrans->pdls[0]->hdrsv;
9978 0           propagate_hdrcpy = ((__privtrans->pdls[0]->state & PDL_HDRCPY) != 0);
9979             }
9980 2 50         if(!hdrp &&
    50          
9981 0 0         __privtrans->pdls[1]->hdrsv &&
9982 0           (__privtrans->pdls[1]->state & PDL_HDRCPY)
9983             ) {
9984 0           hdrp = __privtrans->pdls[1]->hdrsv;
9985 0           propagate_hdrcpy = ((__privtrans->pdls[1]->state & PDL_HDRCPY) != 0);
9986             }
9987 2 50         if(!hdrp &&
    50          
9988 0 0         __privtrans->pdls[2]->hdrsv &&
9989 0           (__privtrans->pdls[2]->state & PDL_HDRCPY)
9990             ) {
9991 0           hdrp = __privtrans->pdls[2]->hdrsv;
9992 0           propagate_hdrcpy = ((__privtrans->pdls[2]->state & PDL_HDRCPY) != 0);
9993             }
9994 2 50         if(!hdrp &&
    50          
9995 0 0         __privtrans->pdls[3]->hdrsv &&
9996 0           (__privtrans->pdls[3]->state & PDL_HDRCPY)
9997             ) {
9998 0           hdrp = __privtrans->pdls[3]->hdrsv;
9999 0           propagate_hdrcpy = ((__privtrans->pdls[3]->state & PDL_HDRCPY) != 0);
10000             }
10001 2 50         if(!hdrp &&
    50          
10002 0 0         __privtrans->pdls[4]->hdrsv &&
10003 0           (__privtrans->pdls[4]->state & PDL_HDRCPY)
10004             ) {
10005 0           hdrp = __privtrans->pdls[4]->hdrsv;
10006 0           propagate_hdrcpy = ((__privtrans->pdls[4]->state & PDL_HDRCPY) != 0);
10007             }
10008 2 50         if(!hdrp &&
    50          
10009 0 0         __privtrans->pdls[5]->hdrsv &&
10010 0           (__privtrans->pdls[5]->state & PDL_HDRCPY)
10011             ) {
10012 0           hdrp = __privtrans->pdls[5]->hdrsv;
10013 0           propagate_hdrcpy = ((__privtrans->pdls[5]->state & PDL_HDRCPY) != 0);
10014             }
10015 2 50         if(!hdrp &&
    50          
10016 0 0         !__creating[6] &&
10017 0 0         __privtrans->pdls[6]->hdrsv &&
10018 0           (__privtrans->pdls[6]->state & PDL_HDRCPY)
10019             ) {
10020 0           hdrp = __privtrans->pdls[6]->hdrsv;
10021 0           propagate_hdrcpy = ((__privtrans->pdls[6]->state & PDL_HDRCPY) != 0);
10022             }
10023 2 50         if (hdrp) {
10024 0 0         if(hdrp == &PL_sv_undef)
10025 0           hdr_copy = &PL_sv_undef;
10026             else { PDL_COMMENT("Call the perl routine _hdr_copy...")
10027             int count;
10028             PDL_COMMENT("Call the perl routine PDL::_hdr_copy(hdrp)")
10029 0           dSP;
10030 0           ENTER ;
10031 0           SAVETMPS ;
10032 0 0         PUSHMARK(SP) ;
10033 0 0         XPUSHs( hdrp );
10034 0           PUTBACK ;
10035 0           count = call_pv("PDL::_hdr_copy",G_SCALAR);
10036 0           SPAGAIN ;
10037 0 0         if(count != 1)
10038 0           croak("PDL::_hdr_copy didn't return a single value - please report this bug (A).");
10039              
10040 0           hdr_copy = (SV *)POPs;
10041              
10042 0 0         if(hdr_copy && hdr_copy != &PL_sv_undef) {
    0          
10043 0           (void)SvREFCNT_inc(hdr_copy); PDL_COMMENT("Keep hdr_copy from vanishing during FREETMPS")
10044             }
10045              
10046 0 0         FREETMPS ;
10047 0           LEAVE ;
10048              
10049              
10050             } PDL_COMMENT("end of callback block")
10051              
10052 0 0         if ( __privtrans->pdls[6]->hdrsv != hdrp ){
10053 0 0         if( __privtrans->pdls[6]->hdrsv && __privtrans->pdls[6]->hdrsv != &PL_sv_undef)
    0          
10054 0           (void)SvREFCNT_dec( __privtrans->pdls[6]->hdrsv );
10055 0 0         if( hdr_copy != &PL_sv_undef )
10056 0           (void)SvREFCNT_inc(hdr_copy);
10057 0           __privtrans->pdls[6]->hdrsv = hdr_copy;
10058             }
10059 0 0         if(propagate_hdrcpy)
10060 0           __privtrans->pdls[6]->state |= PDL_HDRCPY;
10061              
10062 0 0         if(hdr_copy != &PL_sv_undef)
10063 0           SvREFCNT_dec(hdr_copy); PDL_COMMENT("make hdr_copy mortal again")
10064             } PDL_COMMENT("end of if(hdrp) block")
10065             } PDL_COMMENT("end of conv. block")
10066 2 50         if(__privtrans->pdls[0]->ndims <= 0 || __privtrans->pdls[0]->dims[0] <= 1)
    50          
10067 0           __privtrans->__inc_u_d = 0; else
10068 2 100         __privtrans->__inc_u_d = PDL_REPRINC(__privtrans->pdls[0],0);if(__privtrans->pdls[0]->ndims <= 1 || __privtrans->pdls[0]->dims[1] <= 1)
    50          
    50          
10069 0           __privtrans->__inc_u_m = 0; else
10070 2 100         __privtrans->__inc_u_m = PDL_REPRINC(__privtrans->pdls[0],1);if(__privtrans->pdls[1]->ndims <= 0 || __privtrans->pdls[1]->dims[0] <= 1)
    50          
    50          
10071 0           __privtrans->__inc_s_d = 0; else
10072 2 100         __privtrans->__inc_s_d = PDL_REPRINC(__privtrans->pdls[1],0);if(__privtrans->pdls[2]->ndims <= 0 || __privtrans->pdls[2]->dims[0] <= 1)
    50          
    50          
10073 0           __privtrans->__inc_v_d = 0; else
10074 2 100         __privtrans->__inc_v_d = PDL_REPRINC(__privtrans->pdls[2],0);if(__privtrans->pdls[2]->ndims <= 1 || __privtrans->pdls[2]->dims[1] <= 1)
    50          
    50          
10075 0           __privtrans->__inc_v_n = 0; else
10076 2 100         __privtrans->__inc_v_n = PDL_REPRINC(__privtrans->pdls[2],1);if(__privtrans->pdls[3]->ndims <= 0 || __privtrans->pdls[3]->dims[0] <= 1)
    50          
    50          
10077 0           __privtrans->__inc_ptr_nplus1 = 0; else
10078 2 50         __privtrans->__inc_ptr_nplus1 = PDL_REPRINC(__privtrans->pdls[3],0);if(__privtrans->pdls[4]->ndims <= 0 || __privtrans->pdls[4]->dims[0] <= 1)
    50          
    50          
10079 0           __privtrans->__inc_rowids_nnz = 0; else
10080 2 50         __privtrans->__inc_rowids_nnz = PDL_REPRINC(__privtrans->pdls[4],0);if(__privtrans->pdls[5]->ndims <= 0 || __privtrans->pdls[5]->dims[0] <= 1)
    50          
    50          
10081 0           __privtrans->__inc_nzvals_nnz = 0; else
10082 2 50         __privtrans->__inc_nzvals_nnz = PDL_REPRINC(__privtrans->pdls[5],0); __privtrans->__ddone = 1;
10083             }
10084 2           }
10085            
10086              
10087 0           pdl_trans * pdl_svderror_copy(pdl_trans *__tr ) {
10088             int __dim;
10089 0           pdl_svderror_struct *__privtrans = (pdl_svderror_struct *) __tr;
10090            
10091             {
10092 0           pdl_svderror_struct *__copy = malloc(sizeof(pdl_svderror_struct));
10093 0           PDL_THR_CLRMAGIC(&__copy->__pdlthread); PDL_TR_CLRMAGIC(__copy);
10094 0           __copy->has_badvalue = __privtrans->has_badvalue;
10095 0           __copy->badvalue = __privtrans->badvalue;
10096 0           __copy->flags = __privtrans->flags;
10097 0           __copy->vtable = __privtrans->vtable;
10098 0           __copy->__datatype = __privtrans->__datatype;
10099 0           __copy->freeproc = NULL;
10100 0           __copy->__ddone = __privtrans->__ddone;
10101             {int i;
10102 0 0         for(i=0; i<__copy->vtable->npdls; i++)
10103 0           __copy->pdls[i] = __privtrans->pdls[i];
10104             }
10105            
10106 0 0         if(__copy->__ddone) {
10107 0           PDL->thread_copy(&(__privtrans->__pdlthread),&(__copy->__pdlthread));__privtrans->__inc_u_d=__copy->__inc_u_d;__privtrans->__inc_u_m=__copy->__inc_u_m;__privtrans->__inc_s_d=__copy->__inc_s_d;__privtrans->__inc_v_d=__copy->__inc_v_d;__privtrans->__inc_v_n=__copy->__inc_v_n;__privtrans->__inc_ptr_nplus1=__copy->__inc_ptr_nplus1;__privtrans->__inc_rowids_nnz=__copy->__inc_rowids_nnz;__privtrans->__inc_nzvals_nnz=__copy->__inc_nzvals_nnz;__copy->__m_size=__privtrans->__m_size;__copy->__nnz_size=__privtrans->__nnz_size;__copy->__nplus1_size=__privtrans->__nplus1_size;__copy->__d_size=__privtrans->__d_size;__copy->__n_size=__privtrans->__n_size;
10108             }
10109 0           return (pdl_trans*)__copy;
10110             }
10111             }
10112            
10113              
10114 2           void pdl_svderror_readdata(pdl_trans *__tr ) {
10115             int __dim;
10116 2           pdl_svderror_struct *__privtrans = (pdl_svderror_struct *) __tr;
10117            
10118             {
10119 2           {register PDL_Indx __d_size = __privtrans->__d_size;
10120 2           register PDL_Indx __m_size = __privtrans->__m_size;
10121 2           register PDL_Indx __n_size = __privtrans->__n_size;
10122             PDL_COMMENT("Start generic loop")
10123              
10124 2           switch(__privtrans->__datatype) { case -42: PDL_COMMENT("Warning eater") {(void)1;
10125 0           } break; case PDL_B: {
10126 0 0         PDL_Byte * u_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10127 0           PDL_Byte * u_physdatap = ((PDL_Byte *)((__privtrans->pdls[0])->data));
10128              
10129 0 0         PDL_Byte * s_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10130 0           PDL_Byte * s_physdatap = ((PDL_Byte *)((__privtrans->pdls[1])->data));
10131              
10132 0 0         PDL_Byte * v_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10133 0           PDL_Byte * v_physdatap = ((PDL_Byte *)((__privtrans->pdls[2])->data));
10134              
10135 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10136 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10137              
10138 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10139 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10140              
10141 0 0         PDL_Byte * nzvals_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
10142 0           PDL_Byte * nzvals_physdatap = ((PDL_Byte *)((__privtrans->pdls[5])->data));
10143              
10144 0 0         PDL_Byte * err_datap = ((PDL_Byte *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
10145 0           PDL_Byte * err_physdatap = ((PDL_Byte *)((__privtrans->pdls[6])->data));
10146              
10147              
10148             PDL_COMMENT("THREADLOOPBEGIN")
10149 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
10150 0           do { register PDL_Indx __tind1=0,__tind2=0;
10151 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
10152 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
10153 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
10154 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
10155 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
10156 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
10157 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
10158 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
10159 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
10160 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
10161 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
10162 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
10163 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
10164 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
10165 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
10166 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
10167 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
10168 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
10169 0           u_datap += __offsp[0];
10170 0           s_datap += __offsp[1];
10171 0           v_datap += __offsp[2];
10172 0           ptr_datap += __offsp[3];
10173 0           rowids_datap += __offsp[4];
10174 0           nzvals_datap += __offsp[5];
10175 0           err_datap += __offsp[6];
10176 0 0         for( __tind2 = 0 ;
10177             __tind2 < __tdims1 ;
10178 0           __tind2++
10179 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
10180 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
10181 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
10182 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
10183 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
10184 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
10185 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
10186             )
10187             {
10188 0 0         for( __tind1 = 0 ;
10189             __tind1 < __tdims0 ;
10190 0           __tind1++
10191 0           ,u_datap += __tinc0_0
10192 0           ,s_datap += __tinc0_1
10193 0           ,v_datap += __tinc0_2
10194 0           ,ptr_datap += __tinc0_3
10195 0           ,rowids_datap += __tinc0_4
10196 0           ,nzvals_datap += __tinc0_5
10197 0           ,err_datap += __tinc0_6
10198             )
10199 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
10200 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
10201 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
10202 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
10203 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
10204 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
10205 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
10206 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
10207              
10208              
10209 0           PDL_Byte e=0;
10210             __SVDLIBC_LONG n1, nzi,nzj;
10211             PDL_Indx ri;
10212              
10213             /*-- sanity checks: ptr --*/
10214 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
10215 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
10216             }
10217              
10218             /*-- sanity checks: sorted row-ids --*/
10219             {PDL_COMMENT("Open n") register PDL_Indx n;
10220 0 0         for(n=0; n<(__n_size); n++) {
10221 0           n1 = n+1;
10222 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10223 0           ri = 0;
10224 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
10225 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
10226 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
10227 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10228             }
10229             }} PDL_COMMENT("Close n")
10230              
10231             /*-- guts --*/
10232             {PDL_COMMENT("Open n") register PDL_Indx n;
10233 0 0         for(n=0; n<(__n_size); n++) {
10234 0           n1 = n+1;
10235 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
10236 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10237 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10238             {PDL_COMMENT("Open m") register PDL_Indx m;
10239 0 0         for(m=0; m<(__m_size); m++) {
10240             /*-- decode value --*/
10241 0           PDL_Byte v= 0;
10242             {PDL_COMMENT("Open d") register PDL_Indx d;
10243 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
10244              
10245             /*-- dispatch: is this the next encoded value? --*/
10246 0 0         if (m==ri) {
10247 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10248 0           ++nzi;
10249 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10250             }
10251 0           e += v*v;
10252             }} PDL_COMMENT("Close m")
10253             }} PDL_COMMENT("Close n")
10254              
10255 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
10256              
10257             }
10258             PDL_COMMENT("THREADLOOPEND")
10259             }
10260             }
10261 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
10262 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
10263 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
10264 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
10265 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
10266 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
10267 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
10268 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_S: {
10269 0 0         PDL_Short * u_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10270 0           PDL_Short * u_physdatap = ((PDL_Short *)((__privtrans->pdls[0])->data));
10271              
10272 0 0         PDL_Short * s_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10273 0           PDL_Short * s_physdatap = ((PDL_Short *)((__privtrans->pdls[1])->data));
10274              
10275 0 0         PDL_Short * v_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10276 0           PDL_Short * v_physdatap = ((PDL_Short *)((__privtrans->pdls[2])->data));
10277              
10278 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10279 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10280              
10281 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10282 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10283              
10284 0 0         PDL_Short * nzvals_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
10285 0           PDL_Short * nzvals_physdatap = ((PDL_Short *)((__privtrans->pdls[5])->data));
10286              
10287 0 0         PDL_Short * err_datap = ((PDL_Short *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
10288 0           PDL_Short * err_physdatap = ((PDL_Short *)((__privtrans->pdls[6])->data));
10289              
10290              
10291             PDL_COMMENT("THREADLOOPBEGIN")
10292 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
10293 0           do { register PDL_Indx __tind1=0,__tind2=0;
10294 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
10295 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
10296 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
10297 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
10298 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
10299 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
10300 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
10301 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
10302 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
10303 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
10304 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
10305 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
10306 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
10307 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
10308 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
10309 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
10310 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
10311 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
10312 0           u_datap += __offsp[0];
10313 0           s_datap += __offsp[1];
10314 0           v_datap += __offsp[2];
10315 0           ptr_datap += __offsp[3];
10316 0           rowids_datap += __offsp[4];
10317 0           nzvals_datap += __offsp[5];
10318 0           err_datap += __offsp[6];
10319 0 0         for( __tind2 = 0 ;
10320             __tind2 < __tdims1 ;
10321 0           __tind2++
10322 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
10323 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
10324 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
10325 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
10326 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
10327 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
10328 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
10329             )
10330             {
10331 0 0         for( __tind1 = 0 ;
10332             __tind1 < __tdims0 ;
10333 0           __tind1++
10334 0           ,u_datap += __tinc0_0
10335 0           ,s_datap += __tinc0_1
10336 0           ,v_datap += __tinc0_2
10337 0           ,ptr_datap += __tinc0_3
10338 0           ,rowids_datap += __tinc0_4
10339 0           ,nzvals_datap += __tinc0_5
10340 0           ,err_datap += __tinc0_6
10341             )
10342 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
10343 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
10344 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
10345 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
10346 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
10347 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
10348 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
10349 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
10350              
10351              
10352 0           PDL_Short e=0;
10353             __SVDLIBC_LONG n1, nzi,nzj;
10354             PDL_Indx ri;
10355              
10356             /*-- sanity checks: ptr --*/
10357 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
10358 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
10359             }
10360              
10361             /*-- sanity checks: sorted row-ids --*/
10362             {PDL_COMMENT("Open n") register PDL_Indx n;
10363 0 0         for(n=0; n<(__n_size); n++) {
10364 0           n1 = n+1;
10365 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10366 0           ri = 0;
10367 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
10368 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
10369 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
10370 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10371             }
10372             }} PDL_COMMENT("Close n")
10373              
10374             /*-- guts --*/
10375             {PDL_COMMENT("Open n") register PDL_Indx n;
10376 0 0         for(n=0; n<(__n_size); n++) {
10377 0           n1 = n+1;
10378 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
10379 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10380 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10381             {PDL_COMMENT("Open m") register PDL_Indx m;
10382 0 0         for(m=0; m<(__m_size); m++) {
10383             /*-- decode value --*/
10384 0           PDL_Short v= 0;
10385             {PDL_COMMENT("Open d") register PDL_Indx d;
10386 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
10387              
10388             /*-- dispatch: is this the next encoded value? --*/
10389 0 0         if (m==ri) {
10390 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10391 0           ++nzi;
10392 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10393             }
10394 0           e += v*v;
10395             }} PDL_COMMENT("Close m")
10396             }} PDL_COMMENT("Close n")
10397              
10398 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
10399              
10400             }
10401             PDL_COMMENT("THREADLOOPEND")
10402             }
10403             }
10404 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
10405 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
10406 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
10407 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
10408 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
10409 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
10410 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
10411 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_US: {
10412 0 0         PDL_Ushort * u_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10413 0           PDL_Ushort * u_physdatap = ((PDL_Ushort *)((__privtrans->pdls[0])->data));
10414              
10415 0 0         PDL_Ushort * s_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10416 0           PDL_Ushort * s_physdatap = ((PDL_Ushort *)((__privtrans->pdls[1])->data));
10417              
10418 0 0         PDL_Ushort * v_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10419 0           PDL_Ushort * v_physdatap = ((PDL_Ushort *)((__privtrans->pdls[2])->data));
10420              
10421 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10422 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10423              
10424 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10425 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10426              
10427 0 0         PDL_Ushort * nzvals_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
10428 0           PDL_Ushort * nzvals_physdatap = ((PDL_Ushort *)((__privtrans->pdls[5])->data));
10429              
10430 0 0         PDL_Ushort * err_datap = ((PDL_Ushort *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
10431 0           PDL_Ushort * err_physdatap = ((PDL_Ushort *)((__privtrans->pdls[6])->data));
10432              
10433              
10434             PDL_COMMENT("THREADLOOPBEGIN")
10435 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
10436 0           do { register PDL_Indx __tind1=0,__tind2=0;
10437 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
10438 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
10439 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
10440 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
10441 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
10442 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
10443 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
10444 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
10445 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
10446 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
10447 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
10448 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
10449 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
10450 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
10451 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
10452 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
10453 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
10454 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
10455 0           u_datap += __offsp[0];
10456 0           s_datap += __offsp[1];
10457 0           v_datap += __offsp[2];
10458 0           ptr_datap += __offsp[3];
10459 0           rowids_datap += __offsp[4];
10460 0           nzvals_datap += __offsp[5];
10461 0           err_datap += __offsp[6];
10462 0 0         for( __tind2 = 0 ;
10463             __tind2 < __tdims1 ;
10464 0           __tind2++
10465 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
10466 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
10467 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
10468 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
10469 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
10470 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
10471 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
10472             )
10473             {
10474 0 0         for( __tind1 = 0 ;
10475             __tind1 < __tdims0 ;
10476 0           __tind1++
10477 0           ,u_datap += __tinc0_0
10478 0           ,s_datap += __tinc0_1
10479 0           ,v_datap += __tinc0_2
10480 0           ,ptr_datap += __tinc0_3
10481 0           ,rowids_datap += __tinc0_4
10482 0           ,nzvals_datap += __tinc0_5
10483 0           ,err_datap += __tinc0_6
10484             )
10485 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
10486 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
10487 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
10488 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
10489 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
10490 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
10491 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
10492 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
10493              
10494              
10495 0           PDL_Ushort e=0;
10496             __SVDLIBC_LONG n1, nzi,nzj;
10497             PDL_Indx ri;
10498              
10499             /*-- sanity checks: ptr --*/
10500 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
10501 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
10502             }
10503              
10504             /*-- sanity checks: sorted row-ids --*/
10505             {PDL_COMMENT("Open n") register PDL_Indx n;
10506 0 0         for(n=0; n<(__n_size); n++) {
10507 0           n1 = n+1;
10508 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10509 0           ri = 0;
10510 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
10511 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
10512 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
10513 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10514             }
10515             }} PDL_COMMENT("Close n")
10516              
10517             /*-- guts --*/
10518             {PDL_COMMENT("Open n") register PDL_Indx n;
10519 0 0         for(n=0; n<(__n_size); n++) {
10520 0           n1 = n+1;
10521 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
10522 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10523 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10524             {PDL_COMMENT("Open m") register PDL_Indx m;
10525 0 0         for(m=0; m<(__m_size); m++) {
10526             /*-- decode value --*/
10527 0           PDL_Ushort v= 0;
10528             {PDL_COMMENT("Open d") register PDL_Indx d;
10529 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
10530              
10531             /*-- dispatch: is this the next encoded value? --*/
10532 0 0         if (m==ri) {
10533 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10534 0           ++nzi;
10535 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10536             }
10537 0           e += v*v;
10538             }} PDL_COMMENT("Close m")
10539             }} PDL_COMMENT("Close n")
10540              
10541 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
10542              
10543             }
10544             PDL_COMMENT("THREADLOOPEND")
10545             }
10546             }
10547 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
10548 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
10549 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
10550 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
10551 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
10552 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
10553 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
10554 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_L: {
10555 0 0         PDL_Long * u_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10556 0           PDL_Long * u_physdatap = ((PDL_Long *)((__privtrans->pdls[0])->data));
10557              
10558 0 0         PDL_Long * s_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10559 0           PDL_Long * s_physdatap = ((PDL_Long *)((__privtrans->pdls[1])->data));
10560              
10561 0 0         PDL_Long * v_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10562 0           PDL_Long * v_physdatap = ((PDL_Long *)((__privtrans->pdls[2])->data));
10563              
10564 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10565 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10566              
10567 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10568 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10569              
10570 0 0         PDL_Long * nzvals_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
10571 0           PDL_Long * nzvals_physdatap = ((PDL_Long *)((__privtrans->pdls[5])->data));
10572              
10573 0 0         PDL_Long * err_datap = ((PDL_Long *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
10574 0           PDL_Long * err_physdatap = ((PDL_Long *)((__privtrans->pdls[6])->data));
10575              
10576              
10577             PDL_COMMENT("THREADLOOPBEGIN")
10578 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
10579 0           do { register PDL_Indx __tind1=0,__tind2=0;
10580 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
10581 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
10582 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
10583 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
10584 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
10585 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
10586 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
10587 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
10588 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
10589 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
10590 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
10591 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
10592 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
10593 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
10594 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
10595 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
10596 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
10597 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
10598 0           u_datap += __offsp[0];
10599 0           s_datap += __offsp[1];
10600 0           v_datap += __offsp[2];
10601 0           ptr_datap += __offsp[3];
10602 0           rowids_datap += __offsp[4];
10603 0           nzvals_datap += __offsp[5];
10604 0           err_datap += __offsp[6];
10605 0 0         for( __tind2 = 0 ;
10606             __tind2 < __tdims1 ;
10607 0           __tind2++
10608 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
10609 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
10610 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
10611 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
10612 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
10613 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
10614 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
10615             )
10616             {
10617 0 0         for( __tind1 = 0 ;
10618             __tind1 < __tdims0 ;
10619 0           __tind1++
10620 0           ,u_datap += __tinc0_0
10621 0           ,s_datap += __tinc0_1
10622 0           ,v_datap += __tinc0_2
10623 0           ,ptr_datap += __tinc0_3
10624 0           ,rowids_datap += __tinc0_4
10625 0           ,nzvals_datap += __tinc0_5
10626 0           ,err_datap += __tinc0_6
10627             )
10628 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
10629 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
10630 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
10631 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
10632 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
10633 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
10634 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
10635 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
10636              
10637              
10638 0           PDL_Long e=0;
10639             __SVDLIBC_LONG n1, nzi,nzj;
10640             PDL_Indx ri;
10641              
10642             /*-- sanity checks: ptr --*/
10643 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
10644 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
10645             }
10646              
10647             /*-- sanity checks: sorted row-ids --*/
10648             {PDL_COMMENT("Open n") register PDL_Indx n;
10649 0 0         for(n=0; n<(__n_size); n++) {
10650 0           n1 = n+1;
10651 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10652 0           ri = 0;
10653 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
10654 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
10655 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
10656 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10657             }
10658             }} PDL_COMMENT("Close n")
10659              
10660             /*-- guts --*/
10661             {PDL_COMMENT("Open n") register PDL_Indx n;
10662 0 0         for(n=0; n<(__n_size); n++) {
10663 0           n1 = n+1;
10664 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
10665 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10666 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10667             {PDL_COMMENT("Open m") register PDL_Indx m;
10668 0 0         for(m=0; m<(__m_size); m++) {
10669             /*-- decode value --*/
10670 0           PDL_Long v= 0;
10671             {PDL_COMMENT("Open d") register PDL_Indx d;
10672 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
10673              
10674             /*-- dispatch: is this the next encoded value? --*/
10675 0 0         if (m==ri) {
10676 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10677 0           ++nzi;
10678 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10679             }
10680 0           e += v*v;
10681             }} PDL_COMMENT("Close m")
10682             }} PDL_COMMENT("Close n")
10683              
10684 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
10685              
10686             }
10687             PDL_COMMENT("THREADLOOPEND")
10688             }
10689             }
10690 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
10691 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
10692 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
10693 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
10694 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
10695 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
10696 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
10697 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_IND: {
10698 0 0         PDL_Indx * u_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10699 0           PDL_Indx * u_physdatap = ((PDL_Indx *)((__privtrans->pdls[0])->data));
10700              
10701 0 0         PDL_Indx * s_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10702 0           PDL_Indx * s_physdatap = ((PDL_Indx *)((__privtrans->pdls[1])->data));
10703              
10704 0 0         PDL_Indx * v_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10705 0           PDL_Indx * v_physdatap = ((PDL_Indx *)((__privtrans->pdls[2])->data));
10706              
10707 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10708 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10709              
10710 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10711 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10712              
10713 0 0         PDL_Indx * nzvals_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
10714 0           PDL_Indx * nzvals_physdatap = ((PDL_Indx *)((__privtrans->pdls[5])->data));
10715              
10716 0 0         PDL_Indx * err_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
10717 0           PDL_Indx * err_physdatap = ((PDL_Indx *)((__privtrans->pdls[6])->data));
10718              
10719              
10720             PDL_COMMENT("THREADLOOPBEGIN")
10721 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
10722 0           do { register PDL_Indx __tind1=0,__tind2=0;
10723 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
10724 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
10725 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
10726 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
10727 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
10728 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
10729 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
10730 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
10731 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
10732 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
10733 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
10734 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
10735 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
10736 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
10737 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
10738 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
10739 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
10740 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
10741 0           u_datap += __offsp[0];
10742 0           s_datap += __offsp[1];
10743 0           v_datap += __offsp[2];
10744 0           ptr_datap += __offsp[3];
10745 0           rowids_datap += __offsp[4];
10746 0           nzvals_datap += __offsp[5];
10747 0           err_datap += __offsp[6];
10748 0 0         for( __tind2 = 0 ;
10749             __tind2 < __tdims1 ;
10750 0           __tind2++
10751 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
10752 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
10753 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
10754 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
10755 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
10756 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
10757 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
10758             )
10759             {
10760 0 0         for( __tind1 = 0 ;
10761             __tind1 < __tdims0 ;
10762 0           __tind1++
10763 0           ,u_datap += __tinc0_0
10764 0           ,s_datap += __tinc0_1
10765 0           ,v_datap += __tinc0_2
10766 0           ,ptr_datap += __tinc0_3
10767 0           ,rowids_datap += __tinc0_4
10768 0           ,nzvals_datap += __tinc0_5
10769 0           ,err_datap += __tinc0_6
10770             )
10771 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
10772 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
10773 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
10774 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
10775 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
10776 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
10777 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
10778 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
10779              
10780              
10781 0           PDL_Indx e=0;
10782             __SVDLIBC_LONG n1, nzi,nzj;
10783             PDL_Indx ri;
10784              
10785             /*-- sanity checks: ptr --*/
10786 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
10787 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
10788             }
10789              
10790             /*-- sanity checks: sorted row-ids --*/
10791             {PDL_COMMENT("Open n") register PDL_Indx n;
10792 0 0         for(n=0; n<(__n_size); n++) {
10793 0           n1 = n+1;
10794 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10795 0           ri = 0;
10796 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
10797 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
10798 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
10799 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10800             }
10801             }} PDL_COMMENT("Close n")
10802              
10803             /*-- guts --*/
10804             {PDL_COMMENT("Open n") register PDL_Indx n;
10805 0 0         for(n=0; n<(__n_size); n++) {
10806 0           n1 = n+1;
10807 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
10808 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10809 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10810             {PDL_COMMENT("Open m") register PDL_Indx m;
10811 0 0         for(m=0; m<(__m_size); m++) {
10812             /*-- decode value --*/
10813 0           PDL_Indx v= 0;
10814             {PDL_COMMENT("Open d") register PDL_Indx d;
10815 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
10816              
10817             /*-- dispatch: is this the next encoded value? --*/
10818 0 0         if (m==ri) {
10819 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10820 0           ++nzi;
10821 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10822             }
10823 0           e += v*v;
10824             }} PDL_COMMENT("Close m")
10825             }} PDL_COMMENT("Close n")
10826              
10827 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
10828              
10829             }
10830             PDL_COMMENT("THREADLOOPEND")
10831             }
10832             }
10833 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
10834 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
10835 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
10836 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
10837 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
10838 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
10839 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
10840 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_LL: {
10841 0 0         PDL_LongLong * u_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10842 0           PDL_LongLong * u_physdatap = ((PDL_LongLong *)((__privtrans->pdls[0])->data));
10843              
10844 0 0         PDL_LongLong * s_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10845 0           PDL_LongLong * s_physdatap = ((PDL_LongLong *)((__privtrans->pdls[1])->data));
10846              
10847 0 0         PDL_LongLong * v_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10848 0           PDL_LongLong * v_physdatap = ((PDL_LongLong *)((__privtrans->pdls[2])->data));
10849              
10850 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10851 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10852              
10853 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10854 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10855              
10856 0 0         PDL_LongLong * nzvals_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
10857 0           PDL_LongLong * nzvals_physdatap = ((PDL_LongLong *)((__privtrans->pdls[5])->data));
10858              
10859 0 0         PDL_LongLong * err_datap = ((PDL_LongLong *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
10860 0           PDL_LongLong * err_physdatap = ((PDL_LongLong *)((__privtrans->pdls[6])->data));
10861              
10862              
10863             PDL_COMMENT("THREADLOOPBEGIN")
10864 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
10865 0           do { register PDL_Indx __tind1=0,__tind2=0;
10866 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
10867 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
10868 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
10869 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
10870 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
10871 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
10872 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
10873 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
10874 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
10875 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
10876 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
10877 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
10878 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
10879 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
10880 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
10881 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
10882 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
10883 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
10884 0           u_datap += __offsp[0];
10885 0           s_datap += __offsp[1];
10886 0           v_datap += __offsp[2];
10887 0           ptr_datap += __offsp[3];
10888 0           rowids_datap += __offsp[4];
10889 0           nzvals_datap += __offsp[5];
10890 0           err_datap += __offsp[6];
10891 0 0         for( __tind2 = 0 ;
10892             __tind2 < __tdims1 ;
10893 0           __tind2++
10894 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
10895 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
10896 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
10897 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
10898 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
10899 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
10900 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
10901             )
10902             {
10903 0 0         for( __tind1 = 0 ;
10904             __tind1 < __tdims0 ;
10905 0           __tind1++
10906 0           ,u_datap += __tinc0_0
10907 0           ,s_datap += __tinc0_1
10908 0           ,v_datap += __tinc0_2
10909 0           ,ptr_datap += __tinc0_3
10910 0           ,rowids_datap += __tinc0_4
10911 0           ,nzvals_datap += __tinc0_5
10912 0           ,err_datap += __tinc0_6
10913             )
10914 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
10915 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
10916 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
10917 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
10918 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
10919 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
10920 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
10921 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
10922              
10923              
10924 0           PDL_LongLong e=0;
10925             __SVDLIBC_LONG n1, nzi,nzj;
10926             PDL_Indx ri;
10927              
10928             /*-- sanity checks: ptr --*/
10929 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
10930 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
10931             }
10932              
10933             /*-- sanity checks: sorted row-ids --*/
10934             {PDL_COMMENT("Open n") register PDL_Indx n;
10935 0 0         for(n=0; n<(__n_size); n++) {
10936 0           n1 = n+1;
10937 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10938 0           ri = 0;
10939 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
10940 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
10941 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
10942 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10943             }
10944             }} PDL_COMMENT("Close n")
10945              
10946             /*-- guts --*/
10947             {PDL_COMMENT("Open n") register PDL_Indx n;
10948 0 0         for(n=0; n<(__n_size); n++) {
10949 0           n1 = n+1;
10950 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
10951 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
10952 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10953             {PDL_COMMENT("Open m") register PDL_Indx m;
10954 0 0         for(m=0; m<(__m_size); m++) {
10955             /*-- decode value --*/
10956 0           PDL_LongLong v= 0;
10957             {PDL_COMMENT("Open d") register PDL_Indx d;
10958 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
10959              
10960             /*-- dispatch: is this the next encoded value? --*/
10961 0 0         if (m==ri) {
10962 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
10963 0           ++nzi;
10964 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
10965             }
10966 0           e += v*v;
10967             }} PDL_COMMENT("Close m")
10968             }} PDL_COMMENT("Close n")
10969              
10970 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
10971              
10972             }
10973             PDL_COMMENT("THREADLOOPEND")
10974             }
10975             }
10976 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
10977 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
10978 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
10979 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
10980 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
10981 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
10982 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
10983 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_F: {
10984 0 0         PDL_Float * u_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    0          
10985 0           PDL_Float * u_physdatap = ((PDL_Float *)((__privtrans->pdls[0])->data));
10986              
10987 0 0         PDL_Float * s_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    0          
10988 0           PDL_Float * s_physdatap = ((PDL_Float *)((__privtrans->pdls[1])->data));
10989              
10990 0 0         PDL_Float * v_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    0          
10991 0           PDL_Float * v_physdatap = ((PDL_Float *)((__privtrans->pdls[2])->data));
10992              
10993 0 0         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
10994 0           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
10995              
10996 0 0         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
10997 0           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
10998              
10999 0 0         PDL_Float * nzvals_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
11000 0           PDL_Float * nzvals_physdatap = ((PDL_Float *)((__privtrans->pdls[5])->data));
11001              
11002 0 0         PDL_Float * err_datap = ((PDL_Float *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
11003 0           PDL_Float * err_physdatap = ((PDL_Float *)((__privtrans->pdls[6])->data));
11004              
11005              
11006             PDL_COMMENT("THREADLOOPBEGIN")
11007 0 0         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
11008 0           do { register PDL_Indx __tind1=0,__tind2=0;
11009 0           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
11010 0           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
11011 0           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
11012 0           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
11013 0           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
11014 0           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
11015 0           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
11016 0           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
11017 0           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
11018 0           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
11019 0           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
11020 0           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
11021 0           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
11022 0           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
11023 0           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
11024 0           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
11025 0           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
11026 0           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
11027 0           u_datap += __offsp[0];
11028 0           s_datap += __offsp[1];
11029 0           v_datap += __offsp[2];
11030 0           ptr_datap += __offsp[3];
11031 0           rowids_datap += __offsp[4];
11032 0           nzvals_datap += __offsp[5];
11033 0           err_datap += __offsp[6];
11034 0 0         for( __tind2 = 0 ;
11035             __tind2 < __tdims1 ;
11036 0           __tind2++
11037 0           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
11038 0           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
11039 0           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
11040 0           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
11041 0           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
11042 0           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
11043 0           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
11044             )
11045             {
11046 0 0         for( __tind1 = 0 ;
11047             __tind1 < __tdims0 ;
11048 0           __tind1++
11049 0           ,u_datap += __tinc0_0
11050 0           ,s_datap += __tinc0_1
11051 0           ,v_datap += __tinc0_2
11052 0           ,ptr_datap += __tinc0_3
11053 0           ,rowids_datap += __tinc0_4
11054 0           ,nzvals_datap += __tinc0_5
11055 0           ,err_datap += __tinc0_6
11056             )
11057 0           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
11058 0           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
11059 0           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
11060 0           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
11061 0           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
11062 0           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
11063 0           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
11064 0           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
11065              
11066              
11067 0           PDL_Float e=0;
11068             __SVDLIBC_LONG n1, nzi,nzj;
11069             PDL_Indx ri;
11070              
11071             /*-- sanity checks: ptr --*/
11072 0 0         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
11073 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
11074             }
11075              
11076             /*-- sanity checks: sorted row-ids --*/
11077             {PDL_COMMENT("Open n") register PDL_Indx n;
11078 0 0         for(n=0; n<(__n_size); n++) {
11079 0           n1 = n+1;
11080 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
11081 0           ri = 0;
11082 0 0         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    0          
11083 0 0         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    0          
11084 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
11085 0 0         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
11086             }
11087             }} PDL_COMMENT("Close n")
11088              
11089             /*-- guts --*/
11090             {PDL_COMMENT("Open n") register PDL_Indx n;
11091 0 0         for(n=0; n<(__n_size); n++) {
11092 0           n1 = n+1;
11093 0 0         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
11094 0 0         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
11095 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
11096             {PDL_COMMENT("Open m") register PDL_Indx m;
11097 0 0         for(m=0; m<(__m_size); m++) {
11098             /*-- decode value --*/
11099 0           PDL_Float v= 0;
11100             {PDL_COMMENT("Open d") register PDL_Indx d;
11101 0 0         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    0          
    0          
    0          
    0          
    0          
11102              
11103             /*-- dispatch: is this the next encoded value? --*/
11104 0 0         if (m==ri) {
11105 0 0         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
11106 0           ++nzi;
11107 0 0         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    0          
11108             }
11109 0           e += v*v;
11110             }} PDL_COMMENT("Close m")
11111             }} PDL_COMMENT("Close n")
11112              
11113 0           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
11114              
11115             }
11116             PDL_COMMENT("THREADLOOPEND")
11117             }
11118             }
11119 0           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
11120 0           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
11121 0           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
11122 0           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
11123 0           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
11124 0           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
11125 0           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
11126 0 0         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); } break; case PDL_D: {
11127 2 100         PDL_Double * u_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[0]),(__privtrans->vtable->per_pdl_flags[0]))));
    50          
11128 2           PDL_Double * u_physdatap = ((PDL_Double *)((__privtrans->pdls[0])->data));
11129              
11130 2 100         PDL_Double * s_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[1]),(__privtrans->vtable->per_pdl_flags[1]))));
    50          
11131 2           PDL_Double * s_physdatap = ((PDL_Double *)((__privtrans->pdls[1])->data));
11132              
11133 2 100         PDL_Double * v_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[2]),(__privtrans->vtable->per_pdl_flags[2]))));
    50          
11134 2           PDL_Double * v_physdatap = ((PDL_Double *)((__privtrans->pdls[2])->data));
11135              
11136 2 50         PDL_Indx * ptr_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[3]),(__privtrans->vtable->per_pdl_flags[3]))));
    0          
11137 2           PDL_Indx * ptr_physdatap = ((PDL_Indx *)((__privtrans->pdls[3])->data));
11138              
11139 2 50         PDL_Indx * rowids_datap = ((PDL_Indx *)(PDL_REPRP_TRANS((__privtrans->pdls[4]),(__privtrans->vtable->per_pdl_flags[4]))));
    0          
11140 2           PDL_Indx * rowids_physdatap = ((PDL_Indx *)((__privtrans->pdls[4])->data));
11141              
11142 2 50         PDL_Double * nzvals_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[5]),(__privtrans->vtable->per_pdl_flags[5]))));
    0          
11143 2           PDL_Double * nzvals_physdatap = ((PDL_Double *)((__privtrans->pdls[5])->data));
11144              
11145 2 50         PDL_Double * err_datap = ((PDL_Double *)(PDL_REPRP_TRANS((__privtrans->pdls[6]),(__privtrans->vtable->per_pdl_flags[6]))));
    0          
11146 2           PDL_Double * err_physdatap = ((PDL_Double *)((__privtrans->pdls[6])->data));
11147              
11148              
11149             PDL_COMMENT("THREADLOOPBEGIN")
11150 2 50         if ( PDL->startthreadloop(&(__privtrans->__pdlthread),__privtrans->vtable->readdata, __tr) ) return;
11151 2           do { register PDL_Indx __tind1=0,__tind2=0;
11152 2           register PDL_Indx __tnpdls = __privtrans->__pdlthread.npdls;
11153 2           register PDL_Indx __tdims1 = __privtrans->__pdlthread.dims[1];
11154 2           register PDL_Indx __tdims0 = __privtrans->__pdlthread.dims[0];
11155 2           register PDL_Indx *__offsp = PDL->get_threadoffsp(&__privtrans->__pdlthread);
11156 2           register PDL_Indx __tinc0_0 = __privtrans->__pdlthread.incs[0];
11157 2           register PDL_Indx __tinc0_1 = __privtrans->__pdlthread.incs[1];
11158 2           register PDL_Indx __tinc0_2 = __privtrans->__pdlthread.incs[2];
11159 2           register PDL_Indx __tinc0_3 = __privtrans->__pdlthread.incs[3];
11160 2           register PDL_Indx __tinc0_4 = __privtrans->__pdlthread.incs[4];
11161 2           register PDL_Indx __tinc0_5 = __privtrans->__pdlthread.incs[5];
11162 2           register PDL_Indx __tinc0_6 = __privtrans->__pdlthread.incs[6];
11163 2           register PDL_Indx __tinc1_0 = __privtrans->__pdlthread.incs[__tnpdls+0];
11164 2           register PDL_Indx __tinc1_1 = __privtrans->__pdlthread.incs[__tnpdls+1];
11165 2           register PDL_Indx __tinc1_2 = __privtrans->__pdlthread.incs[__tnpdls+2];
11166 2           register PDL_Indx __tinc1_3 = __privtrans->__pdlthread.incs[__tnpdls+3];
11167 2           register PDL_Indx __tinc1_4 = __privtrans->__pdlthread.incs[__tnpdls+4];
11168 2           register PDL_Indx __tinc1_5 = __privtrans->__pdlthread.incs[__tnpdls+5];
11169 2           register PDL_Indx __tinc1_6 = __privtrans->__pdlthread.incs[__tnpdls+6];
11170 2           u_datap += __offsp[0];
11171 2           s_datap += __offsp[1];
11172 2           v_datap += __offsp[2];
11173 2           ptr_datap += __offsp[3];
11174 2           rowids_datap += __offsp[4];
11175 2           nzvals_datap += __offsp[5];
11176 2           err_datap += __offsp[6];
11177 4 100         for( __tind2 = 0 ;
11178             __tind2 < __tdims1 ;
11179 2           __tind2++
11180 2           ,u_datap += __tinc1_0 - __tinc0_0 * __tdims0
11181 2           ,s_datap += __tinc1_1 - __tinc0_1 * __tdims0
11182 2           ,v_datap += __tinc1_2 - __tinc0_2 * __tdims0
11183 2           ,ptr_datap += __tinc1_3 - __tinc0_3 * __tdims0
11184 2           ,rowids_datap += __tinc1_4 - __tinc0_4 * __tdims0
11185 2           ,nzvals_datap += __tinc1_5 - __tinc0_5 * __tdims0
11186 2           ,err_datap += __tinc1_6 - __tinc0_6 * __tdims0
11187             )
11188             {
11189 4 100         for( __tind1 = 0 ;
11190             __tind1 < __tdims0 ;
11191 2           __tind1++
11192 2           ,u_datap += __tinc0_0
11193 2           ,s_datap += __tinc0_1
11194 2           ,v_datap += __tinc0_2
11195 2           ,ptr_datap += __tinc0_3
11196 2           ,rowids_datap += __tinc0_4
11197 2           ,nzvals_datap += __tinc0_5
11198 2           ,err_datap += __tinc0_6
11199             )
11200 2           { PDL_COMMENT("This is the tightest threadloop. Make sure inside is optimal."){register PDL_Indx __inc_s_d = __privtrans->__inc_s_d;
11201 2           register PDL_Indx __inc_ptr_nplus1 = __privtrans->__inc_ptr_nplus1;
11202 2           register PDL_Indx __inc_u_d = __privtrans->__inc_u_d;
11203 2           register PDL_Indx __inc_u_m = __privtrans->__inc_u_m;
11204 2           register PDL_Indx __inc_v_d = __privtrans->__inc_v_d;
11205 2           register PDL_Indx __inc_v_n = __privtrans->__inc_v_n;
11206 2           register PDL_Indx __inc_nzvals_nnz = __privtrans->__inc_nzvals_nnz;
11207 2           register PDL_Indx __inc_rowids_nnz = __privtrans->__inc_rowids_nnz;
11208              
11209              
11210 2           PDL_Double e=0;
11211             __SVDLIBC_LONG n1, nzi,nzj;
11212             PDL_Indx ri;
11213              
11214             /*-- sanity checks: ptr --*/
11215 2 50         if (__privtrans->__nplus1_size <= __privtrans->__n_size) {
11216 0           croak("svderror(): bogus input dimension nplus1=%ld must be greater than n=%ld", __privtrans->__nplus1_size, __privtrans->__n_size);
11217             }
11218              
11219             /*-- sanity checks: sorted row-ids --*/
11220             {PDL_COMMENT("Open n") register PDL_Indx n;
11221 16 100         for(n=0; n<(__n_size); n++) {
11222 14           n1 = n+1;
11223 14 50         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
11224 14           ri = 0;
11225 58 50         for (nzi=(ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ; nzi < nzj; ++nzi) {
    100          
11226 44 50         if ((rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") < ri)
    50          
11227 0           croak("svderror(): input rowids() are not sorted at nnz=%ld", nzi);
11228 44 50         ri = (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
11229             }
11230             }} PDL_COMMENT("Close n")
11231              
11232             /*-- guts --*/
11233             {PDL_COMMENT("Open n") register PDL_Indx n;
11234 16 100         for(n=0; n<(__n_size); n++) {
11235 14           n1 = n+1;
11236 14 50         nzi = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n))] PDL_COMMENT("ACCESS()") ;
11237 14 50         nzj = (ptr_datap)[0+(__inc_ptr_nplus1*PP_INDTERM(__privtrans->__nplus1_size, n1))] PDL_COMMENT("ACCESS()") ;
11238 14 50         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    50          
11239             {PDL_COMMENT("Open m") register PDL_Indx m;
11240 98 100         for(m=0; m<(__m_size); m++) {
11241             /*-- decode value --*/
11242 84           PDL_Double v= 0;
11243             {PDL_COMMENT("Open d") register PDL_Indx d;
11244 546 50         for(d=0; d<(__d_size); d++) { v += (u_datap)[0+(__inc_u_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_u_m*PP_INDTERM(__privtrans->__m_size, m))] PDL_COMMENT("ACCESS()") * (s_datap)[0+(__inc_s_d*PP_INDTERM(__privtrans->__d_size, d))] PDL_COMMENT("ACCESS()") * (v_datap)[0+(__inc_v_d*PP_INDTERM(__privtrans->__d_size, d))+(__inc_v_n*PP_INDTERM(__privtrans->__n_size, n))] PDL_COMMENT("ACCESS()") ; }} PDL_COMMENT("Close d")
    50          
    50          
    50          
    50          
    100          
11245              
11246             /*-- dispatch: is this the next encoded value? --*/
11247 84 100         if (m==ri) {
11248 44 50         v -= (nzvals_datap)[0+(__inc_nzvals_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") ;
11249 44           ++nzi;
11250 44 100         ri = nzi < nzj ? (rowids_datap)[0+(__inc_rowids_nnz*PP_INDTERM(__privtrans->__nnz_size, nzi))] PDL_COMMENT("ACCESS()") : (__SVDLIBC_LONG)-1;
    50          
11251             }
11252 84           e += v*v;
11253             }} PDL_COMMENT("Close m")
11254             }} PDL_COMMENT("Close n")
11255              
11256 2           (err_datap)[0] PDL_COMMENT("ACCESS()") = e;
11257              
11258             }
11259             PDL_COMMENT("THREADLOOPEND")
11260             }
11261             }
11262 2           u_datap -= __tinc1_0 * __tdims1 + __offsp[0];
11263 2           s_datap -= __tinc1_1 * __tdims1 + __offsp[1];
11264 2           v_datap -= __tinc1_2 * __tdims1 + __offsp[2];
11265 2           ptr_datap -= __tinc1_3 * __tdims1 + __offsp[3];
11266 2           rowids_datap -= __tinc1_4 * __tdims1 + __offsp[4];
11267 2           nzvals_datap -= __tinc1_5 * __tdims1 + __offsp[5];
11268 2           err_datap -= __tinc1_6 * __tdims1 + __offsp[6];
11269 2 50         } while(PDL->iterthreadloop(&__privtrans->__pdlthread,2)); break;}
11270 0           default:barf("PP INTERNAL ERROR! PLEASE MAKE A BUG REPORT\n");}
11271             }
11272             }
11273             }
11274            
11275              
11276              
11277              
11278 2           void pdl_svderror_free(pdl_trans *__tr ) {
11279             int __dim;
11280 2           pdl_svderror_struct *__privtrans = (pdl_svderror_struct *) __tr;
11281            
11282             {
11283            
11284 2           PDL_TR_CLRMAGIC(__privtrans);
11285            
11286 2 50         if(__privtrans->__ddone) {
11287 2           PDL->freethreadloop(&(__privtrans->__pdlthread));
11288             ;;;;;;;;;;;;;;
11289             }
11290            
11291             }
11292 2           }
11293            
11294              
11295              
11296              
11297             static char pdl_svderror_vtable_flags[] =
11298             { PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK,PDL_TPDL_VAFFINE_OK};
11299             pdl_transvtable pdl_svderror_vtable = {
11300             0,0, 6, 7, pdl_svderror_vtable_flags,
11301             pdl_svderror_redodims, pdl_svderror_readdata, NULL,
11302             pdl_svderror_free,NULL,NULL,pdl_svderror_copy,
11303             sizeof(pdl_svderror_struct),"pdl_svderror_vtable"
11304             };
11305              
11306              
11307              
11308             MODULE = PDL::SVDLIBC PACKAGE = PDL::SVDLIBC
11309              
11310             PROTOTYPES: ENABLE
11311              
11312             int
11313             set_debugging(i)
11314             int i;
11315             CODE:
11316 0           RETVAL = __pdl_debugging;
11317 0           __pdl_debugging = i;
11318             OUTPUT:
11319             RETVAL
11320              
11321             int
11322             set_boundscheck(i)
11323             int i;
11324             CODE:
11325             if (! 1)
11326             warn("Bounds checking is disabled for PDL::SVDLIBC");
11327 0           RETVAL = __pdl_boundscheck;
11328 0           __pdl_boundscheck = i;
11329             OUTPUT:
11330             RETVAL
11331              
11332              
11333             MODULE = PDL::SVDLIBC PACKAGE = PDL
11334              
11335              
11336             MODULE = PDL::SVDLIBC PACKAGE = PDL::SVDLIBC
11337              
11338              
11339              
11340             int verbosity(...)
11341             CODE:
11342 0 0         if (items >= 1) SVDVerbosity = SvIV(ST(0));
    0          
11343 0           RETVAL = SVDVerbosity;
11344             OUTPUT:
11345             RETVAL
11346              
11347              
11348             MODULE = PDL::SVDLIBC PACKAGE = PDL
11349              
11350              
11351             MODULE = PDL::SVDLIBC PACKAGE = PDL::SVDLIBC
11352              
11353              
11354              
11355             char *
11356             svdVersion()
11357             CODE:
11358 0           RETVAL = SVDVersion;
11359             OUTPUT:
11360             RETVAL
11361              
11362              
11363             MODULE = PDL::SVDLIBC PACKAGE = PDL
11364              
11365              
11366             void
11367             _svdccsencode(...)
11368             PREINIT:
11369 0           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
11370             by pp_bless ? (CS) */
11371 0           HV *bless_stash = 0;
11372 0           SV *parent = 0;
11373             int nreturn;
11374             SV *ptr_SV;
11375             SV *rowids_SV;
11376             SV *nzvals_SV;
11377             pdl *a;
11378             pdl *ptr;
11379             pdl *rowids;
11380             pdl *nzvals;
11381             PPCODE:
11382             {
11383             PDL_COMMENT("Check if you can get a package name for this input value. ")
11384             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
11385             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
11386 0 0         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    0          
    0          
11387 0           parent = ST(0);
11388 0 0         if (sv_isobject(parent)){
11389 0           bless_stash = SvSTASH(SvRV(ST(0)));
11390 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          
11391             }
11392             }
11393 0 0         if (items == 4) { PDL_COMMENT("all variables on stack, read in output and temp vars")
11394 0           nreturn = 0;
11395 0           a = PDL->SvPDLV(ST(0));
11396 0           ptr = PDL->SvPDLV(ST(1));
11397 0           rowids = PDL->SvPDLV(ST(2));
11398 0           nzvals = PDL->SvPDLV(ST(3));
11399             }
11400 0 0         else if (items == 1) { PDL_COMMENT("only input variables on stack, create outputs and temps")
11401 0           nreturn = 3;
11402 0           a = PDL->SvPDLV(ST(0));
11403 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11404 0           ptr_SV = sv_newmortal();
11405 0           ptr = PDL->null();
11406 0           PDL->SetSV_PDL(ptr_SV,ptr);
11407 0 0         if (bless_stash) ptr_SV = sv_bless(ptr_SV, bless_stash);
11408             } else {
11409 0 0         PUSHMARK(SP);
11410 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11411 0           PUTBACK;
11412 0           perl_call_method("initialize", G_SCALAR);
11413 0           SPAGAIN;
11414 0           ptr_SV = POPs;
11415 0           PUTBACK;
11416 0           ptr = PDL->SvPDLV(ptr_SV);
11417             }
11418 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11419 0           rowids_SV = sv_newmortal();
11420 0           rowids = PDL->null();
11421 0           PDL->SetSV_PDL(rowids_SV,rowids);
11422 0 0         if (bless_stash) rowids_SV = sv_bless(rowids_SV, bless_stash);
11423             } else {
11424 0 0         PUSHMARK(SP);
11425 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11426 0           PUTBACK;
11427 0           perl_call_method("initialize", G_SCALAR);
11428 0           SPAGAIN;
11429 0           rowids_SV = POPs;
11430 0           PUTBACK;
11431 0           rowids = PDL->SvPDLV(rowids_SV);
11432             }
11433 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11434 0           nzvals_SV = sv_newmortal();
11435 0           nzvals = PDL->null();
11436 0           PDL->SetSV_PDL(nzvals_SV,nzvals);
11437 0 0         if (bless_stash) nzvals_SV = sv_bless(nzvals_SV, bless_stash);
11438             } else {
11439 0 0         PUSHMARK(SP);
11440 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11441 0           PUTBACK;
11442 0           perl_call_method("initialize", G_SCALAR);
11443 0           SPAGAIN;
11444 0           nzvals_SV = POPs;
11445 0           PUTBACK;
11446 0           nzvals = PDL->SvPDLV(nzvals_SV);
11447             }
11448             }
11449             else {
11450 0           croak ("Usage: PDL::_svdccsencode(a,ptr,rowids,nzvals) (you may leave temporaries or output variables out of list)");
11451             }
11452             }
11453             {
11454             }
11455             { pdl__svdccsencode_struct *__privtrans;
11456 0           int badflag_cache = 0;
11457 0           __privtrans = malloc(sizeof(*__privtrans));
11458 0           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
11459 0           PDL_TR_SETMAGIC(__privtrans);
11460 0           __privtrans->flags = 0;
11461 0           __privtrans->__ddone = 0;
11462 0           __privtrans->vtable = &pdl__svdccsencode_vtable;
11463 0           __privtrans->freeproc = PDL->trans_mallocfreeproc;
11464 0           __privtrans->bvalflag = 0;
11465 0           badflag_cache = ((a->state & PDL_BADVAL) > 0);
11466 0 0         if (badflag_cache) __privtrans->bvalflag = 1;
11467 0 0         __privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {}
11468 0 0         else if(__privtrans->__datatype == PDL_S) {}
11469 0 0         else if(__privtrans->__datatype == PDL_U) {}
11470 0 0         else if(__privtrans->__datatype == PDL_L) {}
11471 0 0         else if(__privtrans->__datatype == PDL_N) {}
11472 0 0         else if(__privtrans->__datatype == PDL_Q) {}
11473 0 0         else if(__privtrans->__datatype == PDL_F) {}
11474 0 0         else if(__privtrans->__datatype == PDL_D) {}
11475 0           else __privtrans->__datatype = PDL_D;
11476 0 0         if(PDL_D != a->datatype) {
11477 0           a = PDL->get_convertedpdl(a,PDL_D);
11478 0 0         }if( (ptr->state & PDL_NOMYDIMS) && ptr->trans == NULL ) {
    0          
11479 0           ptr->datatype = PDL_IND;
11480 0 0         } else if(PDL_IND != ptr->datatype) {
11481 0           ptr = PDL->get_convertedpdl(ptr,PDL_IND);
11482 0 0         }if( (rowids->state & PDL_NOMYDIMS) && rowids->trans == NULL ) {
    0          
11483 0           rowids->datatype = PDL_IND;
11484 0 0         } else if(PDL_IND != rowids->datatype) {
11485 0           rowids = PDL->get_convertedpdl(rowids,PDL_IND);
11486 0 0         }if( (nzvals->state & PDL_NOMYDIMS) && nzvals->trans == NULL ) {
    0          
11487 0           nzvals->datatype = PDL_D;
11488 0 0         } else if(PDL_D != nzvals->datatype) {
11489 0           nzvals = PDL->get_convertedpdl(nzvals,PDL_D);
11490 0           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = a;
11491 0           __privtrans->pdls[1] = ptr;
11492 0           __privtrans->pdls[2] = rowids;
11493 0           __privtrans->pdls[3] = nzvals;
11494 0           PDL->make_trans_mutual((pdl_trans *)__privtrans);
11495 0 0         if (badflag_cache) {
11496 0           ptr->state |= PDL_BADVAL;
11497 0           rowids->state |= PDL_BADVAL;
11498 0           nzvals->state |= PDL_BADVAL;
11499             }
11500 0 0         if (nreturn) {
11501 0 0         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
11502 0           ST(0) = ptr_SV;
11503 0           ST(1) = rowids_SV;
11504 0           ST(2) = nzvals_SV;
11505 0           XSRETURN(nreturn);
11506             } else {
11507 0           XSRETURN(0);
11508             }
11509             }
11510              
11511             void
11512             svdlas2(...)
11513             PREINIT:
11514 3           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
11515             by pp_bless ? (CS) */
11516 3           HV *bless_stash = 0;
11517 3           SV *parent = 0;
11518             int nreturn;
11519             SV *ut_SV;
11520             SV *s_SV;
11521             SV *vt_SV;
11522             pdl *ptr;
11523             pdl *rowids;
11524             pdl *nzvals;
11525             pdl *m;
11526             pdl *iterations;
11527             pdl *end;
11528             pdl *kappa;
11529             pdl *ut;
11530             pdl *s;
11531             pdl *vt;
11532             PPCODE:
11533             {
11534             PDL_COMMENT("Check if you can get a package name for this input value. ")
11535             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
11536             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
11537 3 50         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    50          
    0          
11538 3           parent = ST(0);
11539 3 50         if (sv_isobject(parent)){
11540 3           bless_stash = SvSTASH(SvRV(ST(0)));
11541 3 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          
11542             }
11543             }
11544 3 50         if (items == 10) { PDL_COMMENT("all variables on stack, read in output and temp vars")
11545 3           nreturn = 0;
11546 3           ptr = PDL->SvPDLV(ST(0));
11547 3           rowids = PDL->SvPDLV(ST(1));
11548 3           nzvals = PDL->SvPDLV(ST(2));
11549 3           m = PDL->SvPDLV(ST(3));
11550 3           iterations = PDL->SvPDLV(ST(4));
11551 3           end = PDL->SvPDLV(ST(5));
11552 3           kappa = PDL->SvPDLV(ST(6));
11553 3           ut = PDL->SvPDLV(ST(7));
11554 3           s = PDL->SvPDLV(ST(8));
11555 3           vt = PDL->SvPDLV(ST(9));
11556             }
11557 0 0         else if (items == 7) { PDL_COMMENT("only input variables on stack, create outputs and temps")
11558 0           nreturn = 3;
11559 0           ptr = PDL->SvPDLV(ST(0));
11560 0           rowids = PDL->SvPDLV(ST(1));
11561 0           nzvals = PDL->SvPDLV(ST(2));
11562 0           m = PDL->SvPDLV(ST(3));
11563 0           iterations = PDL->SvPDLV(ST(4));
11564 0           end = PDL->SvPDLV(ST(5));
11565 0           kappa = PDL->SvPDLV(ST(6));
11566 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11567 0           ut_SV = sv_newmortal();
11568 0           ut = PDL->null();
11569 0           PDL->SetSV_PDL(ut_SV,ut);
11570 0 0         if (bless_stash) ut_SV = sv_bless(ut_SV, bless_stash);
11571             } else {
11572 0 0         PUSHMARK(SP);
11573 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11574 0           PUTBACK;
11575 0           perl_call_method("initialize", G_SCALAR);
11576 0           SPAGAIN;
11577 0           ut_SV = POPs;
11578 0           PUTBACK;
11579 0           ut = PDL->SvPDLV(ut_SV);
11580             }
11581 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11582 0           s_SV = sv_newmortal();
11583 0           s = PDL->null();
11584 0           PDL->SetSV_PDL(s_SV,s);
11585 0 0         if (bless_stash) s_SV = sv_bless(s_SV, bless_stash);
11586             } else {
11587 0 0         PUSHMARK(SP);
11588 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11589 0           PUTBACK;
11590 0           perl_call_method("initialize", G_SCALAR);
11591 0           SPAGAIN;
11592 0           s_SV = POPs;
11593 0           PUTBACK;
11594 0           s = PDL->SvPDLV(s_SV);
11595             }
11596 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11597 0           vt_SV = sv_newmortal();
11598 0           vt = PDL->null();
11599 0           PDL->SetSV_PDL(vt_SV,vt);
11600 0 0         if (bless_stash) vt_SV = sv_bless(vt_SV, bless_stash);
11601             } else {
11602 0 0         PUSHMARK(SP);
11603 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11604 0           PUTBACK;
11605 0           perl_call_method("initialize", G_SCALAR);
11606 0           SPAGAIN;
11607 0           vt_SV = POPs;
11608 0           PUTBACK;
11609 0           vt = PDL->SvPDLV(vt_SV);
11610             }
11611             }
11612             else {
11613 0           croak ("Usage: PDL::svdlas2(ptr,rowids,nzvals,m,iterations,end,kappa,ut,s,vt) (you may leave temporaries or output variables out of list)");
11614             }
11615             }
11616             {
11617             }
11618             { pdl_svdlas2_struct *__privtrans;
11619 3           int badflag_cache = 0;
11620 3           __privtrans = malloc(sizeof(*__privtrans));
11621 3           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
11622 3           PDL_TR_SETMAGIC(__privtrans);
11623 3           __privtrans->flags = 0;
11624 3           __privtrans->__ddone = 0;
11625 3           __privtrans->vtable = &pdl_svdlas2_vtable;
11626 3           __privtrans->freeproc = PDL->trans_mallocfreeproc;
11627 3           __privtrans->bvalflag = 0;
11628 3 50         badflag_cache = ((ptr->state & PDL_BADVAL) > 0) || ((rowids->state & PDL_BADVAL) > 0) || ((nzvals->state & PDL_BADVAL) > 0) || ((m->state & PDL_BADVAL) > 0) || ((iterations->state & PDL_BADVAL) > 0) || ((end->state & PDL_BADVAL) > 0) || ((kappa->state & PDL_BADVAL) > 0);
    50          
    50          
    50          
    50          
    50          
    50          
11629 3 50         if (badflag_cache) __privtrans->bvalflag = 1;
11630 3 50         __privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {}
11631 0 0         else if(__privtrans->__datatype == PDL_S) {}
11632 0 0         else if(__privtrans->__datatype == PDL_U) {}
11633 0 0         else if(__privtrans->__datatype == PDL_L) {}
11634 0 0         else if(__privtrans->__datatype == PDL_N) {}
11635 0 0         else if(__privtrans->__datatype == PDL_Q) {}
11636 0 0         else if(__privtrans->__datatype == PDL_F) {}
11637 0 0         else if(__privtrans->__datatype == PDL_D) {}
11638 0           else __privtrans->__datatype = PDL_D;
11639 3 50         if(PDL_IND != ptr->datatype) {
11640 3           ptr = PDL->get_convertedpdl(ptr,PDL_IND);
11641 3 50         }if(PDL_IND != rowids->datatype) {
11642 3           rowids = PDL->get_convertedpdl(rowids,PDL_IND);
11643 3 50         }if(PDL_D != nzvals->datatype) {
11644 0           nzvals = PDL->get_convertedpdl(nzvals,PDL_D);
11645 3 50         }if(PDL_IND != m->datatype) {
11646 3           m = PDL->get_convertedpdl(m,PDL_IND);
11647 3 100         }if(PDL_L != iterations->datatype) {
11648 2           iterations = PDL->get_convertedpdl(iterations,PDL_L);
11649 3 50         }if(PDL_D != end->datatype) {
11650 0           end = PDL->get_convertedpdl(end,PDL_D);
11651 3 50         }if(PDL_D != kappa->datatype) {
11652 0           kappa = PDL->get_convertedpdl(kappa,PDL_D);
11653 3 50         }if( (ut->state & PDL_NOMYDIMS) && ut->trans == NULL ) {
    0          
11654 0           ut->datatype = PDL_D;
11655 3 50         } else if(PDL_D != ut->datatype) {
11656 0           ut = PDL->get_convertedpdl(ut,PDL_D);
11657 3 50         }if( (s->state & PDL_NOMYDIMS) && s->trans == NULL ) {
    0          
11658 0           s->datatype = PDL_D;
11659 3 50         } else if(PDL_D != s->datatype) {
11660 0           s = PDL->get_convertedpdl(s,PDL_D);
11661 3 50         }if( (vt->state & PDL_NOMYDIMS) && vt->trans == NULL ) {
    0          
11662 0           vt->datatype = PDL_D;
11663 3 50         } else if(PDL_D != vt->datatype) {
11664 0           vt = PDL->get_convertedpdl(vt,PDL_D);
11665 3           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = ptr;
11666 3           __privtrans->pdls[1] = rowids;
11667 3           __privtrans->pdls[2] = nzvals;
11668 3           __privtrans->pdls[3] = m;
11669 3           __privtrans->pdls[4] = iterations;
11670 3           __privtrans->pdls[5] = end;
11671 3           __privtrans->pdls[6] = kappa;
11672 3           __privtrans->pdls[7] = ut;
11673 3           __privtrans->pdls[8] = s;
11674 3           __privtrans->pdls[9] = vt;
11675 3           PDL->make_trans_mutual((pdl_trans *)__privtrans);
11676 3 50         if (badflag_cache) {
11677 0           ut->state |= PDL_BADVAL;
11678 0           s->state |= PDL_BADVAL;
11679 0           vt->state |= PDL_BADVAL;
11680             }
11681 3 50         if (nreturn) {
11682 0 0         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
11683 0           ST(0) = ut_SV;
11684 0           ST(1) = s_SV;
11685 0           ST(2) = vt_SV;
11686 0           XSRETURN(nreturn);
11687             } else {
11688 3           XSRETURN(0);
11689             }
11690             }
11691              
11692             void
11693             svdlas2w(...)
11694             PREINIT:
11695 4           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
11696             by pp_bless ? (CS) */
11697 4           HV *bless_stash = 0;
11698 4           SV *parent = 0;
11699             int nreturn;
11700             SV *ut_SV;
11701             SV *s_SV;
11702             SV *vt_SV;
11703             pdl *whichi;
11704             pdl *nzvals;
11705             pdl *n;
11706             pdl *m;
11707             pdl *iterations;
11708             pdl *end;
11709             pdl *kappa;
11710             pdl *ut;
11711             pdl *s;
11712             pdl *vt;
11713             PPCODE:
11714             {
11715             PDL_COMMENT("Check if you can get a package name for this input value. ")
11716             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
11717             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
11718 4 50         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    50          
    0          
11719 4           parent = ST(0);
11720 4 50         if (sv_isobject(parent)){
11721 4           bless_stash = SvSTASH(SvRV(ST(0)));
11722 4 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          
11723             }
11724             }
11725 4 50         if (items == 10) { PDL_COMMENT("all variables on stack, read in output and temp vars")
11726 4           nreturn = 0;
11727 4           whichi = PDL->SvPDLV(ST(0));
11728 4           nzvals = PDL->SvPDLV(ST(1));
11729 4           n = PDL->SvPDLV(ST(2));
11730 4           m = PDL->SvPDLV(ST(3));
11731 4           iterations = PDL->SvPDLV(ST(4));
11732 4           end = PDL->SvPDLV(ST(5));
11733 4           kappa = PDL->SvPDLV(ST(6));
11734 4           ut = PDL->SvPDLV(ST(7));
11735 4           s = PDL->SvPDLV(ST(8));
11736 4           vt = PDL->SvPDLV(ST(9));
11737             }
11738 0 0         else if (items == 7) { PDL_COMMENT("only input variables on stack, create outputs and temps")
11739 0           nreturn = 3;
11740 0           whichi = PDL->SvPDLV(ST(0));
11741 0           nzvals = PDL->SvPDLV(ST(1));
11742 0           n = PDL->SvPDLV(ST(2));
11743 0           m = PDL->SvPDLV(ST(3));
11744 0           iterations = PDL->SvPDLV(ST(4));
11745 0           end = PDL->SvPDLV(ST(5));
11746 0           kappa = PDL->SvPDLV(ST(6));
11747 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11748 0           ut_SV = sv_newmortal();
11749 0           ut = PDL->null();
11750 0           PDL->SetSV_PDL(ut_SV,ut);
11751 0 0         if (bless_stash) ut_SV = sv_bless(ut_SV, bless_stash);
11752             } else {
11753 0 0         PUSHMARK(SP);
11754 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11755 0           PUTBACK;
11756 0           perl_call_method("initialize", G_SCALAR);
11757 0           SPAGAIN;
11758 0           ut_SV = POPs;
11759 0           PUTBACK;
11760 0           ut = PDL->SvPDLV(ut_SV);
11761             }
11762 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11763 0           s_SV = sv_newmortal();
11764 0           s = PDL->null();
11765 0           PDL->SetSV_PDL(s_SV,s);
11766 0 0         if (bless_stash) s_SV = sv_bless(s_SV, bless_stash);
11767             } else {
11768 0 0         PUSHMARK(SP);
11769 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11770 0           PUTBACK;
11771 0           perl_call_method("initialize", G_SCALAR);
11772 0           SPAGAIN;
11773 0           s_SV = POPs;
11774 0           PUTBACK;
11775 0           s = PDL->SvPDLV(s_SV);
11776             }
11777 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11778 0           vt_SV = sv_newmortal();
11779 0           vt = PDL->null();
11780 0           PDL->SetSV_PDL(vt_SV,vt);
11781 0 0         if (bless_stash) vt_SV = sv_bless(vt_SV, bless_stash);
11782             } else {
11783 0 0         PUSHMARK(SP);
11784 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11785 0           PUTBACK;
11786 0           perl_call_method("initialize", G_SCALAR);
11787 0           SPAGAIN;
11788 0           vt_SV = POPs;
11789 0           PUTBACK;
11790 0           vt = PDL->SvPDLV(vt_SV);
11791             }
11792             }
11793             else {
11794 0           croak ("Usage: PDL::svdlas2w(whichi,nzvals,n,m,iterations,end,kappa,ut,s,vt) (you may leave temporaries or output variables out of list)");
11795             }
11796             }
11797             {
11798             }
11799             { pdl_svdlas2w_struct *__privtrans;
11800 4           int badflag_cache = 0;
11801 4           __privtrans = malloc(sizeof(*__privtrans));
11802 4           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
11803 4           PDL_TR_SETMAGIC(__privtrans);
11804 4           __privtrans->flags = 0;
11805 4           __privtrans->__ddone = 0;
11806 4           __privtrans->vtable = &pdl_svdlas2w_vtable;
11807 4           __privtrans->freeproc = PDL->trans_mallocfreeproc;
11808 4           __privtrans->bvalflag = 0;
11809 4 50         badflag_cache = ((whichi->state & PDL_BADVAL) > 0) || ((nzvals->state & PDL_BADVAL) > 0) || ((n->state & PDL_BADVAL) > 0) || ((m->state & PDL_BADVAL) > 0) || ((iterations->state & PDL_BADVAL) > 0) || ((end->state & PDL_BADVAL) > 0) || ((kappa->state & PDL_BADVAL) > 0);
    50          
    50          
    50          
    50          
    50          
    50          
11810 4 50         if (badflag_cache) __privtrans->bvalflag = 1;
11811 4 50         __privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {}
11812 0 0         else if(__privtrans->__datatype == PDL_S) {}
11813 0 0         else if(__privtrans->__datatype == PDL_U) {}
11814 0 0         else if(__privtrans->__datatype == PDL_L) {}
11815 0 0         else if(__privtrans->__datatype == PDL_N) {}
11816 0 0         else if(__privtrans->__datatype == PDL_Q) {}
11817 0 0         else if(__privtrans->__datatype == PDL_F) {}
11818 0 0         else if(__privtrans->__datatype == PDL_D) {}
11819 0           else __privtrans->__datatype = PDL_D;
11820 4 50         if(PDL_IND != whichi->datatype) {
11821 0           whichi = PDL->get_convertedpdl(whichi,PDL_IND);
11822 4 50         }if(PDL_D != nzvals->datatype) {
11823 0           nzvals = PDL->get_convertedpdl(nzvals,PDL_D);
11824 4 50         }if(PDL_IND != n->datatype) {
11825 4           n = PDL->get_convertedpdl(n,PDL_IND);
11826 4 50         }if(PDL_IND != m->datatype) {
11827 4           m = PDL->get_convertedpdl(m,PDL_IND);
11828 4 100         }if(PDL_L != iterations->datatype) {
11829 3           iterations = PDL->get_convertedpdl(iterations,PDL_L);
11830 4 50         }if(PDL_D != end->datatype) {
11831 0           end = PDL->get_convertedpdl(end,PDL_D);
11832 4 50         }if(PDL_D != kappa->datatype) {
11833 0           kappa = PDL->get_convertedpdl(kappa,PDL_D);
11834 4 50         }if( (ut->state & PDL_NOMYDIMS) && ut->trans == NULL ) {
    0          
11835 0           ut->datatype = PDL_D;
11836 4 50         } else if(PDL_D != ut->datatype) {
11837 0           ut = PDL->get_convertedpdl(ut,PDL_D);
11838 4 50         }if( (s->state & PDL_NOMYDIMS) && s->trans == NULL ) {
    0          
11839 0           s->datatype = PDL_D;
11840 4 50         } else if(PDL_D != s->datatype) {
11841 0           s = PDL->get_convertedpdl(s,PDL_D);
11842 4 50         }if( (vt->state & PDL_NOMYDIMS) && vt->trans == NULL ) {
    0          
11843 0           vt->datatype = PDL_D;
11844 4 50         } else if(PDL_D != vt->datatype) {
11845 0           vt = PDL->get_convertedpdl(vt,PDL_D);
11846 4           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = whichi;
11847 4           __privtrans->pdls[1] = nzvals;
11848 4           __privtrans->pdls[2] = n;
11849 4           __privtrans->pdls[3] = m;
11850 4           __privtrans->pdls[4] = iterations;
11851 4           __privtrans->pdls[5] = end;
11852 4           __privtrans->pdls[6] = kappa;
11853 4           __privtrans->pdls[7] = ut;
11854 4           __privtrans->pdls[8] = s;
11855 4           __privtrans->pdls[9] = vt;
11856 4           PDL->make_trans_mutual((pdl_trans *)__privtrans);
11857 4 50         if (badflag_cache) {
11858 0           ut->state |= PDL_BADVAL;
11859 0           s->state |= PDL_BADVAL;
11860 0           vt->state |= PDL_BADVAL;
11861             }
11862 4 50         if (nreturn) {
11863 0 0         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
11864 0           ST(0) = ut_SV;
11865 0           ST(1) = s_SV;
11866 0           ST(2) = vt_SV;
11867 0           XSRETURN(nreturn);
11868             } else {
11869 4           XSRETURN(0);
11870             }
11871             }
11872              
11873             void
11874             svdlas2d(...)
11875             PREINIT:
11876 3           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
11877             by pp_bless ? (CS) */
11878 3           HV *bless_stash = 0;
11879 3           SV *parent = 0;
11880             int nreturn;
11881             SV *ut_SV;
11882             SV *s_SV;
11883             SV *vt_SV;
11884             pdl *a;
11885             pdl *iterations;
11886             pdl *end;
11887             pdl *kappa;
11888             pdl *ut;
11889             pdl *s;
11890             pdl *vt;
11891             PPCODE:
11892             {
11893             PDL_COMMENT("Check if you can get a package name for this input value. ")
11894             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
11895             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
11896 3 50         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    50          
    0          
11897 3           parent = ST(0);
11898 3 50         if (sv_isobject(parent)){
11899 3           bless_stash = SvSTASH(SvRV(ST(0)));
11900 3 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          
11901             }
11902             }
11903 3 50         if (items == 7) { PDL_COMMENT("all variables on stack, read in output and temp vars")
11904 3           nreturn = 0;
11905 3           a = PDL->SvPDLV(ST(0));
11906 3           iterations = PDL->SvPDLV(ST(1));
11907 3           end = PDL->SvPDLV(ST(2));
11908 3           kappa = PDL->SvPDLV(ST(3));
11909 3           ut = PDL->SvPDLV(ST(4));
11910 3           s = PDL->SvPDLV(ST(5));
11911 3           vt = PDL->SvPDLV(ST(6));
11912             }
11913 0 0         else if (items == 4) { PDL_COMMENT("only input variables on stack, create outputs and temps")
11914 0           nreturn = 3;
11915 0           a = PDL->SvPDLV(ST(0));
11916 0           iterations = PDL->SvPDLV(ST(1));
11917 0           end = PDL->SvPDLV(ST(2));
11918 0           kappa = PDL->SvPDLV(ST(3));
11919 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11920 0           ut_SV = sv_newmortal();
11921 0           ut = PDL->null();
11922 0           PDL->SetSV_PDL(ut_SV,ut);
11923 0 0         if (bless_stash) ut_SV = sv_bless(ut_SV, bless_stash);
11924             } else {
11925 0 0         PUSHMARK(SP);
11926 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11927 0           PUTBACK;
11928 0           perl_call_method("initialize", G_SCALAR);
11929 0           SPAGAIN;
11930 0           ut_SV = POPs;
11931 0           PUTBACK;
11932 0           ut = PDL->SvPDLV(ut_SV);
11933             }
11934 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11935 0           s_SV = sv_newmortal();
11936 0           s = PDL->null();
11937 0           PDL->SetSV_PDL(s_SV,s);
11938 0 0         if (bless_stash) s_SV = sv_bless(s_SV, bless_stash);
11939             } else {
11940 0 0         PUSHMARK(SP);
11941 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11942 0           PUTBACK;
11943 0           perl_call_method("initialize", G_SCALAR);
11944 0           SPAGAIN;
11945 0           s_SV = POPs;
11946 0           PUTBACK;
11947 0           s = PDL->SvPDLV(s_SV);
11948             }
11949 0 0         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
11950 0           vt_SV = sv_newmortal();
11951 0           vt = PDL->null();
11952 0           PDL->SetSV_PDL(vt_SV,vt);
11953 0 0         if (bless_stash) vt_SV = sv_bless(vt_SV, bless_stash);
11954             } else {
11955 0 0         PUSHMARK(SP);
11956 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
11957 0           PUTBACK;
11958 0           perl_call_method("initialize", G_SCALAR);
11959 0           SPAGAIN;
11960 0           vt_SV = POPs;
11961 0           PUTBACK;
11962 0           vt = PDL->SvPDLV(vt_SV);
11963             }
11964             }
11965             else {
11966 0           croak ("Usage: PDL::svdlas2d(a,iterations,end,kappa,ut,s,vt) (you may leave temporaries or output variables out of list)");
11967             }
11968             }
11969             {
11970             }
11971             { pdl_svdlas2d_struct *__privtrans;
11972 3           int badflag_cache = 0;
11973 3           __privtrans = malloc(sizeof(*__privtrans));
11974 3           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
11975 3           PDL_TR_SETMAGIC(__privtrans);
11976 3           __privtrans->flags = 0;
11977 3           __privtrans->__ddone = 0;
11978 3           __privtrans->vtable = &pdl_svdlas2d_vtable;
11979 3           __privtrans->freeproc = PDL->trans_mallocfreeproc;
11980 3           __privtrans->bvalflag = 0;
11981 3 50         badflag_cache = ((a->state & PDL_BADVAL) > 0) || ((iterations->state & PDL_BADVAL) > 0) || ((end->state & PDL_BADVAL) > 0) || ((kappa->state & PDL_BADVAL) > 0);
    50          
    50          
    50          
11982 3 50         if (badflag_cache) __privtrans->bvalflag = 1;
11983 3 50         __privtrans->__datatype = 0;if(__privtrans->__datatype == PDL_B) {}
11984 0 0         else if(__privtrans->__datatype == PDL_S) {}
11985 0 0         else if(__privtrans->__datatype == PDL_U) {}
11986 0 0         else if(__privtrans->__datatype == PDL_L) {}
11987 0 0         else if(__privtrans->__datatype == PDL_N) {}
11988 0 0         else if(__privtrans->__datatype == PDL_Q) {}
11989 0 0         else if(__privtrans->__datatype == PDL_F) {}
11990 0 0         else if(__privtrans->__datatype == PDL_D) {}
11991 0           else __privtrans->__datatype = PDL_D;
11992 3 50         if(PDL_D != a->datatype) {
11993 0           a = PDL->get_convertedpdl(a,PDL_D);
11994 3 100         }if(PDL_L != iterations->datatype) {
11995 2           iterations = PDL->get_convertedpdl(iterations,PDL_L);
11996 3 50         }if(PDL_D != end->datatype) {
11997 0           end = PDL->get_convertedpdl(end,PDL_D);
11998 3 50         }if(PDL_D != kappa->datatype) {
11999 0           kappa = PDL->get_convertedpdl(kappa,PDL_D);
12000 3 50         }if( (ut->state & PDL_NOMYDIMS) && ut->trans == NULL ) {
    0          
12001 0           ut->datatype = PDL_D;
12002 3 50         } else if(PDL_D != ut->datatype) {
12003 0           ut = PDL->get_convertedpdl(ut,PDL_D);
12004 3 50         }if( (s->state & PDL_NOMYDIMS) && s->trans == NULL ) {
    0          
12005 0           s->datatype = PDL_D;
12006 3 50         } else if(PDL_D != s->datatype) {
12007 0           s = PDL->get_convertedpdl(s,PDL_D);
12008 3 50         }if( (vt->state & PDL_NOMYDIMS) && vt->trans == NULL ) {
    0          
12009 0           vt->datatype = PDL_D;
12010 3 50         } else if(PDL_D != vt->datatype) {
12011 0           vt = PDL->get_convertedpdl(vt,PDL_D);
12012 3           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = a;
12013 3           __privtrans->pdls[1] = iterations;
12014 3           __privtrans->pdls[2] = end;
12015 3           __privtrans->pdls[3] = kappa;
12016 3           __privtrans->pdls[4] = ut;
12017 3           __privtrans->pdls[5] = s;
12018 3           __privtrans->pdls[6] = vt;
12019 3           PDL->make_trans_mutual((pdl_trans *)__privtrans);
12020 3 50         if (badflag_cache) {
12021 0           ut->state |= PDL_BADVAL;
12022 0           s->state |= PDL_BADVAL;
12023 0           vt->state |= PDL_BADVAL;
12024             }
12025 3 50         if (nreturn) {
12026 0 0         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
12027 0           ST(0) = ut_SV;
12028 0           ST(1) = s_SV;
12029 0           ST(2) = vt_SV;
12030 0           XSRETURN(nreturn);
12031             } else {
12032 3           XSRETURN(0);
12033             }
12034             }
12035              
12036             void
12037             svdindexND(...)
12038             PREINIT:
12039 4           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
12040             by pp_bless ? (CS) */
12041 4           HV *bless_stash = 0;
12042 4           SV *parent = 0;
12043             int nreturn;
12044             SV *vals_SV;
12045             pdl *u;
12046             pdl *s;
12047             pdl *v;
12048             pdl *which;
12049             pdl *vals;
12050             PPCODE:
12051             {
12052             PDL_COMMENT("Check if you can get a package name for this input value. ")
12053             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
12054             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
12055 4 50         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    50          
    0          
12056 4           parent = ST(0);
12057 4 50         if (sv_isobject(parent)){
12058 4           bless_stash = SvSTASH(SvRV(ST(0)));
12059 4 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          
12060             }
12061             }
12062 4 50         if (items == 5) { PDL_COMMENT("all variables on stack, read in output and temp vars")
12063 0           nreturn = 0;
12064 0           u = PDL->SvPDLV(ST(0));
12065 0           s = PDL->SvPDLV(ST(1));
12066 0           v = PDL->SvPDLV(ST(2));
12067 0           which = PDL->SvPDLV(ST(3));
12068 0           vals = PDL->SvPDLV(ST(4));
12069             }
12070 4 50         else if (items == 4) { PDL_COMMENT("only input variables on stack, create outputs and temps")
12071 4           nreturn = 1;
12072 4           u = PDL->SvPDLV(ST(0));
12073 4           s = PDL->SvPDLV(ST(1));
12074 4           v = PDL->SvPDLV(ST(2));
12075 4           which = PDL->SvPDLV(ST(3));
12076 4 50         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
12077 4           vals_SV = sv_newmortal();
12078 4           vals = PDL->null();
12079 4           PDL->SetSV_PDL(vals_SV,vals);
12080 4 50         if (bless_stash) vals_SV = sv_bless(vals_SV, bless_stash);
12081             } else {
12082 0 0         PUSHMARK(SP);
12083 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
12084 0           PUTBACK;
12085 0           perl_call_method("initialize", G_SCALAR);
12086 0           SPAGAIN;
12087 0           vals_SV = POPs;
12088 0           PUTBACK;
12089 4           vals = PDL->SvPDLV(vals_SV);
12090             }
12091             }
12092             else {
12093 0           croak ("Usage: PDL::svdindexND(u,s,v,which,vals) (you may leave temporaries or output variables out of list)");
12094             }
12095             }
12096             {
12097             }
12098             { pdl_svdindexND_struct *__privtrans;
12099 4           int badflag_cache = 0;
12100 4           __privtrans = malloc(sizeof(*__privtrans));
12101 4           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
12102 4           PDL_TR_SETMAGIC(__privtrans);
12103 4           __privtrans->flags = 0;
12104 4           __privtrans->__ddone = 0;
12105 4           __privtrans->vtable = &pdl_svdindexND_vtable;
12106 4           __privtrans->freeproc = PDL->trans_mallocfreeproc;
12107 4           __privtrans->bvalflag = 0;
12108 4 50         badflag_cache = ((u->state & PDL_BADVAL) > 0) || ((s->state & PDL_BADVAL) > 0) || ((v->state & PDL_BADVAL) > 0) || ((which->state & PDL_BADVAL) > 0);
    50          
    50          
    50          
12109 4 50         if (badflag_cache) __privtrans->bvalflag = 1;
12110 4 50         __privtrans->__datatype = 0;if(__privtrans->__datatype < u->datatype) {
12111 4           __privtrans->__datatype = u->datatype;
12112             }
12113 4 50         if(__privtrans->__datatype < s->datatype) {
12114 0           __privtrans->__datatype = s->datatype;
12115             }
12116 4 50         if(__privtrans->__datatype < v->datatype) {
12117 0           __privtrans->__datatype = v->datatype;
12118             }
12119 4 50         if(!((vals->state & PDL_NOMYDIMS) &&
    50          
12120 0 0         vals->trans == NULL) && __privtrans->__datatype < vals->datatype) {
12121 0           __privtrans->__datatype = vals->datatype;
12122             }
12123 4 50         if(__privtrans->__datatype == PDL_B) {}
12124 4 50         else if(__privtrans->__datatype == PDL_S) {}
12125 4 50         else if(__privtrans->__datatype == PDL_U) {}
12126 4 50         else if(__privtrans->__datatype == PDL_L) {}
12127 4 50         else if(__privtrans->__datatype == PDL_N) {}
12128 4 50         else if(__privtrans->__datatype == PDL_Q) {}
12129 4 50         else if(__privtrans->__datatype == PDL_F) {}
12130 4 50         else if(__privtrans->__datatype == PDL_D) {}
12131 0           else __privtrans->__datatype = PDL_D;
12132 4 50         if(__privtrans->__datatype != u->datatype) {
12133 0           u = PDL->get_convertedpdl(u,__privtrans->__datatype);
12134 4 50         }if(__privtrans->__datatype != s->datatype) {
12135 0           s = PDL->get_convertedpdl(s,__privtrans->__datatype);
12136 4 50         }if(__privtrans->__datatype != v->datatype) {
12137 0           v = PDL->get_convertedpdl(v,__privtrans->__datatype);
12138 4 50         }if(PDL_IND != which->datatype) {
12139 0           which = PDL->get_convertedpdl(which,PDL_IND);
12140 4 50         }if( (vals->state & PDL_NOMYDIMS) && vals->trans == NULL ) {
    50          
12141 4           vals->datatype = __privtrans->__datatype;
12142 0 0         } else if(__privtrans->__datatype != vals->datatype) {
12143 0           vals = PDL->get_convertedpdl(vals,__privtrans->__datatype);
12144 4           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = u;
12145 4           __privtrans->pdls[1] = s;
12146 4           __privtrans->pdls[2] = v;
12147 4           __privtrans->pdls[3] = which;
12148 4           __privtrans->pdls[4] = vals;
12149 4           PDL->make_trans_mutual((pdl_trans *)__privtrans);
12150 4 50         if (badflag_cache) {
12151 0           vals->state |= PDL_BADVAL;
12152             }
12153 4 50         if (nreturn) {
12154 4 50         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
12155 4           ST(0) = vals_SV;
12156 4           XSRETURN(nreturn);
12157             } else {
12158 0           XSRETURN(0);
12159             }
12160             }
12161              
12162             void
12163             svdindexccs(...)
12164             PREINIT:
12165 2           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
12166             by pp_bless ? (CS) */
12167 2           HV *bless_stash = 0;
12168 2           SV *parent = 0;
12169             int nreturn;
12170             SV *vals_SV;
12171             pdl *u;
12172             pdl *s;
12173             pdl *v;
12174             pdl *ptr;
12175             pdl *rowids;
12176             pdl *vals;
12177             PPCODE:
12178             {
12179             PDL_COMMENT("Check if you can get a package name for this input value. ")
12180             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
12181             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
12182 2 50         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    50          
    0          
12183 2           parent = ST(0);
12184 2 50         if (sv_isobject(parent)){
12185 2           bless_stash = SvSTASH(SvRV(ST(0)));
12186 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          
12187             }
12188             }
12189 2 50         if (items == 6) { PDL_COMMENT("all variables on stack, read in output and temp vars")
12190 0           nreturn = 0;
12191 0           u = PDL->SvPDLV(ST(0));
12192 0           s = PDL->SvPDLV(ST(1));
12193 0           v = PDL->SvPDLV(ST(2));
12194 0           ptr = PDL->SvPDLV(ST(3));
12195 0           rowids = PDL->SvPDLV(ST(4));
12196 0           vals = PDL->SvPDLV(ST(5));
12197             }
12198 2 50         else if (items == 5) { PDL_COMMENT("only input variables on stack, create outputs and temps")
12199 2           nreturn = 1;
12200 2           u = PDL->SvPDLV(ST(0));
12201 2           s = PDL->SvPDLV(ST(1));
12202 2           v = PDL->SvPDLV(ST(2));
12203 2           ptr = PDL->SvPDLV(ST(3));
12204 2           rowids = PDL->SvPDLV(ST(4));
12205 2 50         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
12206 2           vals_SV = sv_newmortal();
12207 2           vals = PDL->null();
12208 2           PDL->SetSV_PDL(vals_SV,vals);
12209 2 50         if (bless_stash) vals_SV = sv_bless(vals_SV, bless_stash);
12210             } else {
12211 0 0         PUSHMARK(SP);
12212 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
12213 0           PUTBACK;
12214 0           perl_call_method("initialize", G_SCALAR);
12215 0           SPAGAIN;
12216 0           vals_SV = POPs;
12217 0           PUTBACK;
12218 2           vals = PDL->SvPDLV(vals_SV);
12219             }
12220             }
12221             else {
12222 0           croak ("Usage: PDL::svdindexccs(u,s,v,ptr,rowids,vals) (you may leave temporaries or output variables out of list)");
12223             }
12224             }
12225             {
12226             }
12227             { pdl_svdindexccs_struct *__privtrans;
12228 2           int badflag_cache = 0;
12229 2           __privtrans = malloc(sizeof(*__privtrans));
12230 2           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
12231 2           PDL_TR_SETMAGIC(__privtrans);
12232 2           __privtrans->flags = 0;
12233 2           __privtrans->__ddone = 0;
12234 2           __privtrans->vtable = &pdl_svdindexccs_vtable;
12235 2           __privtrans->freeproc = PDL->trans_mallocfreeproc;
12236 2           __privtrans->bvalflag = 0;
12237 2 50         badflag_cache = ((u->state & PDL_BADVAL) > 0) || ((s->state & PDL_BADVAL) > 0) || ((v->state & PDL_BADVAL) > 0) || ((ptr->state & PDL_BADVAL) > 0) || ((rowids->state & PDL_BADVAL) > 0);
    50          
    50          
    50          
    50          
12238 2 50         if (badflag_cache) __privtrans->bvalflag = 1;
12239 2 50         __privtrans->__datatype = 0;if(__privtrans->__datatype < u->datatype) {
12240 2           __privtrans->__datatype = u->datatype;
12241             }
12242 2 50         if(__privtrans->__datatype < s->datatype) {
12243 0           __privtrans->__datatype = s->datatype;
12244             }
12245 2 50         if(__privtrans->__datatype < v->datatype) {
12246 0           __privtrans->__datatype = v->datatype;
12247             }
12248 2 50         if(!((vals->state & PDL_NOMYDIMS) &&
    50          
12249 0 0         vals->trans == NULL) && __privtrans->__datatype < vals->datatype) {
12250 0           __privtrans->__datatype = vals->datatype;
12251             }
12252 2 50         if(__privtrans->__datatype == PDL_B) {}
12253 2 50         else if(__privtrans->__datatype == PDL_S) {}
12254 2 50         else if(__privtrans->__datatype == PDL_U) {}
12255 2 50         else if(__privtrans->__datatype == PDL_L) {}
12256 2 50         else if(__privtrans->__datatype == PDL_N) {}
12257 2 50         else if(__privtrans->__datatype == PDL_Q) {}
12258 2 50         else if(__privtrans->__datatype == PDL_F) {}
12259 2 50         else if(__privtrans->__datatype == PDL_D) {}
12260 0           else __privtrans->__datatype = PDL_D;
12261 2 50         if(__privtrans->__datatype != u->datatype) {
12262 0           u = PDL->get_convertedpdl(u,__privtrans->__datatype);
12263 2 50         }if(__privtrans->__datatype != s->datatype) {
12264 0           s = PDL->get_convertedpdl(s,__privtrans->__datatype);
12265 2 50         }if(__privtrans->__datatype != v->datatype) {
12266 0           v = PDL->get_convertedpdl(v,__privtrans->__datatype);
12267 2 50         }if(PDL_IND != ptr->datatype) {
12268 2           ptr = PDL->get_convertedpdl(ptr,PDL_IND);
12269 2 50         }if(PDL_IND != rowids->datatype) {
12270 2           rowids = PDL->get_convertedpdl(rowids,PDL_IND);
12271 2 50         }if( (vals->state & PDL_NOMYDIMS) && vals->trans == NULL ) {
    50          
12272 2           vals->datatype = __privtrans->__datatype;
12273 0 0         } else if(__privtrans->__datatype != vals->datatype) {
12274 0           vals = PDL->get_convertedpdl(vals,__privtrans->__datatype);
12275 2           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = u;
12276 2           __privtrans->pdls[1] = s;
12277 2           __privtrans->pdls[2] = v;
12278 2           __privtrans->pdls[3] = ptr;
12279 2           __privtrans->pdls[4] = rowids;
12280 2           __privtrans->pdls[5] = vals;
12281 2           PDL->make_trans_mutual((pdl_trans *)__privtrans);
12282 2 50         if (badflag_cache) {
12283 0           vals->state |= PDL_BADVAL;
12284             }
12285 2 50         if (nreturn) {
12286 2 50         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
12287 2           ST(0) = vals_SV;
12288 2           XSRETURN(nreturn);
12289             } else {
12290 0           XSRETURN(0);
12291             }
12292             }
12293              
12294             void
12295             svderror(...)
12296             PREINIT:
12297 2           char *objname = "PDL"; /* XXX maybe that class should actually depend on the value set
12298             by pp_bless ? (CS) */
12299 2           HV *bless_stash = 0;
12300 2           SV *parent = 0;
12301             int nreturn;
12302             SV *err_SV;
12303             pdl *u;
12304             pdl *s;
12305             pdl *v;
12306             pdl *ptr;
12307             pdl *rowids;
12308             pdl *nzvals;
12309             pdl *err;
12310             PPCODE:
12311             {
12312             PDL_COMMENT("Check if you can get a package name for this input value. ")
12313             PDL_COMMENT("It can be either a PDL (SVt_PVMG) or a hash which is a ")
12314             PDL_COMMENT("derived PDL subclass (SVt_PVHV) ")
12315 2 50         if (SvROK(ST(0)) && ((SvTYPE(SvRV(ST(0))) == SVt_PVMG) || (SvTYPE(SvRV(ST(0))) == SVt_PVHV))) {
    50          
    0          
12316 2           parent = ST(0);
12317 2 50         if (sv_isobject(parent)){
12318 2           bless_stash = SvSTASH(SvRV(ST(0)));
12319 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          
12320             }
12321             }
12322 2 50         if (items == 7) { PDL_COMMENT("all variables on stack, read in output and temp vars")
12323 0           nreturn = 0;
12324 0           u = PDL->SvPDLV(ST(0));
12325 0           s = PDL->SvPDLV(ST(1));
12326 0           v = PDL->SvPDLV(ST(2));
12327 0           ptr = PDL->SvPDLV(ST(3));
12328 0           rowids = PDL->SvPDLV(ST(4));
12329 0           nzvals = PDL->SvPDLV(ST(5));
12330 0           err = PDL->SvPDLV(ST(6));
12331             }
12332 2 50         else if (items == 6) { PDL_COMMENT("only input variables on stack, create outputs and temps")
12333 2           nreturn = 1;
12334 2           u = PDL->SvPDLV(ST(0));
12335 2           s = PDL->SvPDLV(ST(1));
12336 2           v = PDL->SvPDLV(ST(2));
12337 2           ptr = PDL->SvPDLV(ST(3));
12338 2           rowids = PDL->SvPDLV(ST(4));
12339 2           nzvals = PDL->SvPDLV(ST(5));
12340 2 50         if (strcmp(objname,"PDL") == 0) { PDL_COMMENT("shortcut if just PDL")
12341 2           err_SV = sv_newmortal();
12342 2           err = PDL->null();
12343 2           PDL->SetSV_PDL(err_SV,err);
12344 2 50         if (bless_stash) err_SV = sv_bless(err_SV, bless_stash);
12345             } else {
12346 0 0         PUSHMARK(SP);
12347 0 0         XPUSHs(sv_2mortal(newSVpv(objname, 0)));
12348 0           PUTBACK;
12349 0           perl_call_method("initialize", G_SCALAR);
12350 0           SPAGAIN;
12351 0           err_SV = POPs;
12352 0           PUTBACK;
12353 2           err = PDL->SvPDLV(err_SV);
12354             }
12355             }
12356             else {
12357 0           croak ("Usage: PDL::svderror(u,s,v,ptr,rowids,nzvals,err) (you may leave temporaries or output variables out of list)");
12358             }
12359             }
12360             {
12361             }
12362             { pdl_svderror_struct *__privtrans;
12363 2           int badflag_cache = 0;
12364 2           __privtrans = malloc(sizeof(*__privtrans));
12365 2           PDL_THR_CLRMAGIC(&__privtrans->__pdlthread);
12366 2           PDL_TR_SETMAGIC(__privtrans);
12367 2           __privtrans->flags = 0;
12368 2           __privtrans->__ddone = 0;
12369 2           __privtrans->vtable = &pdl_svderror_vtable;
12370 2           __privtrans->freeproc = PDL->trans_mallocfreeproc;
12371 2           __privtrans->bvalflag = 0;
12372 2 50         badflag_cache = ((u->state & PDL_BADVAL) > 0) || ((s->state & PDL_BADVAL) > 0) || ((v->state & PDL_BADVAL) > 0) || ((ptr->state & PDL_BADVAL) > 0) || ((rowids->state & PDL_BADVAL) > 0) || ((nzvals->state & PDL_BADVAL) > 0);
    50          
    50          
    50          
    50          
    50          
12373 2 50         if (badflag_cache) __privtrans->bvalflag = 1;
12374 2 50         __privtrans->__datatype = 0;if(__privtrans->__datatype < u->datatype) {
12375 2           __privtrans->__datatype = u->datatype;
12376             }
12377 2 50         if(__privtrans->__datatype < s->datatype) {
12378 0           __privtrans->__datatype = s->datatype;
12379             }
12380 2 50         if(__privtrans->__datatype < v->datatype) {
12381 0           __privtrans->__datatype = v->datatype;
12382             }
12383 2 50         if(__privtrans->__datatype < nzvals->datatype) {
12384 0           __privtrans->__datatype = nzvals->datatype;
12385             }
12386 2 50         if(!((err->state & PDL_NOMYDIMS) &&
    50          
12387 0 0         err->trans == NULL) && __privtrans->__datatype < err->datatype) {
12388 0           __privtrans->__datatype = err->datatype;
12389             }
12390 2 50         if(__privtrans->__datatype == PDL_B) {}
12391 2 50         else if(__privtrans->__datatype == PDL_S) {}
12392 2 50         else if(__privtrans->__datatype == PDL_U) {}
12393 2 50         else if(__privtrans->__datatype == PDL_L) {}
12394 2 50         else if(__privtrans->__datatype == PDL_N) {}
12395 2 50         else if(__privtrans->__datatype == PDL_Q) {}
12396 2 50         else if(__privtrans->__datatype == PDL_F) {}
12397 2 50         else if(__privtrans->__datatype == PDL_D) {}
12398 0           else __privtrans->__datatype = PDL_D;
12399 2 50         if(__privtrans->__datatype != u->datatype) {
12400 0           u = PDL->get_convertedpdl(u,__privtrans->__datatype);
12401 2 50         }if(__privtrans->__datatype != s->datatype) {
12402 0           s = PDL->get_convertedpdl(s,__privtrans->__datatype);
12403 2 50         }if(__privtrans->__datatype != v->datatype) {
12404 0           v = PDL->get_convertedpdl(v,__privtrans->__datatype);
12405 2 50         }if(PDL_IND != ptr->datatype) {
12406 2           ptr = PDL->get_convertedpdl(ptr,PDL_IND);
12407 2 50         }if(PDL_IND != rowids->datatype) {
12408 2           rowids = PDL->get_convertedpdl(rowids,PDL_IND);
12409 2 50         }if(__privtrans->__datatype != nzvals->datatype) {
12410 0           nzvals = PDL->get_convertedpdl(nzvals,__privtrans->__datatype);
12411 2 50         }if( (err->state & PDL_NOMYDIMS) && err->trans == NULL ) {
    50          
12412 2           err->datatype = __privtrans->__datatype;
12413 0 0         } else if(__privtrans->__datatype != err->datatype) {
12414 0           err = PDL->get_convertedpdl(err,__privtrans->__datatype);
12415 2           }{}PDL_COMMENT("No flow")__privtrans->__pdlthread.inds = 0;__privtrans->pdls[0] = u;
12416 2           __privtrans->pdls[1] = s;
12417 2           __privtrans->pdls[2] = v;
12418 2           __privtrans->pdls[3] = ptr;
12419 2           __privtrans->pdls[4] = rowids;
12420 2           __privtrans->pdls[5] = nzvals;
12421 2           __privtrans->pdls[6] = err;
12422 2           PDL->make_trans_mutual((pdl_trans *)__privtrans);
12423 2 50         if (badflag_cache) {
12424 0           err->state |= PDL_BADVAL;
12425             }
12426 2 50         if (nreturn) {
12427 2 50         if (nreturn - items > 0) EXTEND (SP, nreturn - items);
    0          
    0          
12428 2           ST(0) = err_SV;
12429 2           XSRETURN(nreturn);
12430             } else {
12431 0           XSRETURN(0);
12432             }
12433             }
12434              
12435              
12436             BOOT:
12437              
12438             PDL_COMMENT("Get pointer to structure of core shared C routines")
12439             PDL_COMMENT("make sure PDL::Core is loaded")
12440            
12441 2           perl_require_pv ("PDL/Core.pm"); /* make sure PDL::Core is loaded */
12442             #ifndef aTHX_
12443             #define aTHX_
12444             #endif
12445 2 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          
12446 2           CoreSV = perl_get_sv("PDL::SHARE",FALSE); /* SV* value */
12447 2 50         if (CoreSV==NULL)
12448 0           Perl_croak(aTHX_ "We require the PDL::Core module, which was not found");
12449 2 50         PDL = INT2PTR(Core*,SvIV( CoreSV )); /* Core* value */
12450 2 50         if (PDL->Version != PDL_CORE_VERSION)
12451 0           Perl_croak(aTHX_ "[PDL->Version: %d PDL_CORE_VERSION: %d XS_VERSION: %s] PDL::SVDLIBC needs to be recompiled against the newly installed PDL", PDL->Version, PDL_CORE_VERSION, XS_VERSION);
12452              
12453              
12454            
12455             /*-- initialize svdverbosity level to zero --*/
12456 2           SVDVerbosity = SVD_VERBOSITY_DEFAULT;
12457              
12458