PLASMA  2.5.2
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Functions Variables Groups
core_dblas.h
1 
18 #ifndef _PLASMA_CORE_DBLAS_H_
19 #define _PLASMA_CORE_DBLAS_H_
20 
21 #define REAL
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
30 void CORE_dasum(int storev, PLASMA_enum uplo, int M, int N,
31  const double *A, int lda, double *work);
32 void CORE_dbrdalg1( PLASMA_enum uplo,
33  int n,
34  int nb,
35  double *A,
36  int lda,
37  double *VQ,
38  double *TAUQ,
39  double *VP,
40  double *TAUP,
41  int Vblksiz, int wantz,
42  int i, int sweepid, int m, int grsiz,
43  double *work);
44 int CORE_dgbelr(PLASMA_enum uplo, int N,
45  PLASMA_desc *A, double *V, double *TAU,
46  int st, int ed, int eltsize);
47 int CORE_dgbrce(PLASMA_enum uplo, int N,
48  PLASMA_desc *A, double *V, double *TAU,
49  int st, int ed, int eltsize);
50 int CORE_dgblrx(PLASMA_enum uplo, int N,
51  PLASMA_desc *A, double *V, double *TAU,
52  int st, int ed, int eltsize);
53 int CORE_dgeadd(int M, int N, double alpha,
54  const double *A, int LDA,
55  double *B, int LDB);
56 int CORE_dgelqt(int M, int N, int IB,
57  double *A, int LDA,
58  double *T, int LDT,
59  double *TAU,
60  double *WORK);
61 void CORE_dgemm(PLASMA_enum transA, PLASMA_enum transB,
62  int M, int N, int K,
63  double alpha, const double *A, int LDA,
64  const double *B, int LDB,
65  double beta, double *C, int LDC);
66 void CORE_dgemm_tile(PLASMA_enum transA, PLASMA_enum transB,
67  int M, int N, int K,
68  const double *alpha, const double *A, int LDA,
69  const double *B, int LDB,
70  const double *beta, double *C, int LDC);
71 void CORE_dgemv(PLASMA_enum trans, int M, int N,
72  double alpha, const double *A, int LDA,
73  const double *x, int incx,
74  double beta, double *y, int incy);
75 void CORE_dgemv_tile(PLASMA_enum trans, int M, int N,
76  const double *alpha, const double *A, int LDA,
77  const double *x, int incx,
78  const double *beta, double *y, int incy);
79 void CORE_dgeqp3_init( int n, int *jpvt );
80 void CORE_dgeqp3_larfg( PLASMA_desc A, int ii, int jj, int i, int j,
81  double *tau, double *beta );
82 void CORE_dgeqp3_norms( PLASMA_desc A, int ioff, int joff, double *norms1, double *norms2 );
83 void CORE_dgeqp3_pivot( PLASMA_desc A, double *F, int ldf,
84  int jj, int k, int *jpvt,
85  double *norms1, double *norms2, int *info );
86 int CORE_dgeqp3_tntpiv(int m, int n,
87  double *A, int lda,
88  int *IPIV, double *tau,
89  int *iwork);
90 void CORE_dgeqp3_update( const double *Ajj, int lda1,
91  double *Ajk, int lda2,
92  const double *Fk, int ldf,
93  int joff, int k, int koff, int nb,
94  double *norms1, double *norms2,
95  int *info );
96 int CORE_dgeqrt(int M, int N, int IB,
97  double *A, int LDA,
98  double *T, int LDT,
99  double *TAU, double *WORK);
100 int CORE_dgessm(int M, int N, int K, int IB,
101  const int *IPIV,
102  const double *L, int LDL,
103  double *A, int LDA);
104 int CORE_dgessq(int M, int N,
105  const double *A, int LDA,
106  double *scale, double *sumsq);
107 int CORE_dgetf2_nopiv(int m, int n,
108  double *A, int lda);
109 int CORE_dgetrf(int M, int N,
110  double *A, int LDA,
111  int *IPIV, int *INFO);
112 int CORE_dgetrf_incpiv(int M, int N, int IB,
113  double *A, int LDA,
114  int *IPIV, int *INFO);
115 int CORE_dgetrf_nopiv(int m, int n, int ib,
116  double *A, int lda);
117 int CORE_dgetrf_reclap(int M, int N,
118  double *A, int LDA,
119  int *IPIV, int *info);
120 int CORE_dgetrf_rectil(const PLASMA_desc A, int *IPIV, int *info);
121 void CORE_dgetrip(int m, int n, double *A,
122  double *work);
123 int CORE_dhbelr(PLASMA_enum uplo, int N,
124  PLASMA_desc *A, double *V, double *TAU,
125  int st, int ed, int eltsize);
126 int CORE_dhblrx(PLASMA_enum uplo, int N,
127  PLASMA_desc *A, double *V, double *TAU,
128  int st, int ed, int eltsize);
129 int CORE_dhbrce(PLASMA_enum uplo, int N,
130  PLASMA_desc *A, double *V, double *TAU,
131  int st, int ed, int eltsize);
132 void CORE_dsbtype1cb(int N, int NB,
133  double *A, int LDA,
134  double *V, double *TAU,
135  int st, int ed, int sweep, int Vblksiz, int WANTZ,
136  double *WORK);
137 void CORE_dsbtype2cb(int N, int NB,
138  double *A, int LDA,
139  double *V, double *TAU,
140  int st, int ed, int sweep, int Vblksiz, int WANTZ,
141  double *WORK);
142 void CORE_dsbtype3cb(int N, int NB,
143  double *A, int LDA,
144  const double *V, const double *TAU,
145  int st, int ed, int sweep, int Vblksiz, int WANTZ,
146  double *WORK);
147 void CORE_dgbtype1cb(PLASMA_enum uplo, int N, int NB,
148  double *A, int LDA,
149  double *VQ, double *TAUQ,
150  double *VP, double *TAUP,
151  int st, int ed, int sweep, int Vblksiz, int WANTZ,
152  double *WORK);
153 void CORE_dgbtype2cb(PLASMA_enum uplo, int N, int NB,
154  double *A, int LDA,
155  double *VQ, double *TAUQ,
156  double *VP, double *TAUP,
157  int st, int ed, int sweep, int Vblksiz, int WANTZ,
158  double *WORK);
159 void CORE_dgbtype3cb(PLASMA_enum uplo, int N, int NB,
160  double *A, int LDA,
161  double *VQ, double *TAUQ,
162  double *VP, double *TAUP,
163  int st, int ed, int sweep, int Vblksiz, int WANTZ,
164  double *WORK);
165 void CORE_dsygst(int itype, PLASMA_enum uplo, int N,
166  double *A, int LDA,
167  double *B, int LDB, int *INFO);
168 #ifdef COMPLEX
169 void CORE_dsymm(PLASMA_enum side, PLASMA_enum uplo,
170  int M, int N,
171  double alpha, const double *A, int LDA,
172  const double *B, int LDB,
173  double beta, double *C, int LDC);
174 void CORE_dsyrk(PLASMA_enum uplo, PLASMA_enum trans,
175  int N, int K,
176  double alpha, const double *A, int LDA,
177  double beta, double *C, int LDC);
178 void CORE_dsyr2k(PLASMA_enum uplo, PLASMA_enum trans,
179  int N, int K,
180  double alpha, const double *A, int LDA,
181  const double *B, int LDB,
182  double beta, double *C, int LDC);
183 int CORE_dhessq(PLASMA_enum uplo, int N,
184  const double *A, int LDA,
185  double *scale, double *sumsq);
186 #endif
187 int CORE_dsyrfb(PLASMA_enum uplo, int N, int K, int IB, int NB,
188  const double *A, int LDA,
189  const double *T, int LDT,
190  double *C, int LDC,
191  double *WORK, int LDWORK);
192 void CORE_dlacpy(PLASMA_enum uplo, int M, int N,
193  const double *A, int LDA,
194  double *B, int LDB);
195 int CORE_dlacpy_pivot( const PLASMA_desc descA,
196  PLASMA_enum direct,
197  int k1, int k2, const int *ipiv,
198  int *rankin, int *rankout,
199  double *A, int lda,
200  int init);
201 void CORE_dlange(int norm, int M, int N,
202  const double *A, int LDA,
203  double *work, double *normA);
204 #ifdef COMPLEX
205 void CORE_dlansy(int norm, PLASMA_enum uplo, int N,
206  const double *A, int LDA,
207  double *work, double *normA);
208 #endif
209 void CORE_dlansy(int norm, PLASMA_enum uplo, int N,
210  const double *A, int LDA,
211  double *work, double *normA);
212 int CORE_dlarfb_gemm(PLASMA_enum side, PLASMA_enum trans, PLASMA_enum direct, PLASMA_enum storev,
213  int M, int N, int K,
214  const double *V, int LDV,
215  const double *T, int LDT,
216  double *C, int LDC,
217  double *WORK, int LDWORK);
218 int CORE_dlarfx2(PLASMA_enum side, int N,
219  double V,
220  double TAU,
221  double *C1, int LDC1,
222  double *C2, int LDC2);
223 int CORE_dlarfx2c(PLASMA_enum uplo,
224  double V,
225  double TAU,
226  double *C1,
227  double *C2,
228  double *C3);
229 int CORE_dlarfx2ce(PLASMA_enum uplo,
230  double *V,
231  double *TAU,
232  double *C1,
233  double *C2,
234  double *C3);
235 void CORE_dlarfy(int N,
236  double *A, int LDA,
237  const double *V,
238  const double *TAU,
239  double *WORK);
240 void CORE_dlaset(PLASMA_enum uplo, int n1, int n2,
241  double alpha, double beta,
242  double *tileA, int ldtilea);
243 void CORE_dlaset2(PLASMA_enum uplo, int n1, int n2, double alpha,
244  double *tileA, int ldtilea);
245 void CORE_dlaswp(int N, double *A, int LDA,
246  int I1, int I2, const int *IPIV, int INC);
247 int CORE_dlaswp_ontile( PLASMA_desc descA, int i1, int i2, const int *ipiv, int inc);
248 int CORE_dlaswpc_ontile(PLASMA_desc descA, int i1, int i2, const int *ipiv, int inc);
249 int CORE_dlatro(PLASMA_enum uplo, PLASMA_enum trans,
250  int M, int N,
251  const double *A, int LDA,
252  double *B, int LDB);
253 void CORE_dlauum(PLASMA_enum uplo, int N, double *A, int LDA);
254 int CORE_dpamm(int op, PLASMA_enum side, PLASMA_enum storev,
255  int M, int N, int K, int L,
256  const double *A1, int LDA1,
257  double *A2, int LDA2,
258  const double *V, int LDV,
259  double *W, int LDW);
260 int CORE_dparfb(PLASMA_enum side, PLASMA_enum trans, PLASMA_enum direct, PLASMA_enum storev,
261  int M1, int N1, int M2, int N2, int K, int L,
262  double *A1, int LDA1,
263  double *A2, int LDA2,
264  const double *V, int LDV,
265  const double *T, int LDT,
266  double *WORK, int LDWORK);
267 int CORE_dpemv(PLASMA_enum trans, PLASMA_enum storev,
268  int M, int N, int L,
269  double ALPHA,
270  const double *A, int LDA,
271  const double *X, int INCX,
272  double BETA,
273  double *Y, int INCY,
274  double *WORK);
275 void CORE_dplgsy(double bump, int m, int n, double *A, int lda,
276  int bigM, int m0, int n0, unsigned long long int seed );
277 void CORE_dplgsy(double bump, int m, int n, double *A, int lda,
278  int bigM, int m0, int n0, unsigned long long int seed );
279 void CORE_dplrnt(int m, int n, double *A, int lda,
280  int bigM, int m0, int n0, unsigned long long int seed );
281 void CORE_dpotrf(PLASMA_enum uplo, int N, double *A, int LDA, int *INFO);
282 void CORE_dsetvar(const double *alpha, double *x);
283 void CORE_dshift(int s, int m, int n, int L,
284  double *A);
285 void CORE_dshiftw(int s, int cl, int m, int n, int L,
286  double *A, double *W);
287 int CORE_dssssm(int M1, int N1, int M2, int N2, int K, int IB,
288  double *A1, int LDA1,
289  double *A2, int LDA2,
290  const double *L1, int LDL1,
291  const double *L2, int LDL2,
292  const int *IPIV);
293 void CORE_dsymm(PLASMA_enum side, PLASMA_enum uplo,
294  int M, int N,
295  double alpha, const double *A, int LDA,
296  const double *B, int LDB,
297  double beta, double *C, int LDC);
298 void CORE_dsyrk(PLASMA_enum uplo, PLASMA_enum trans,
299  int N, int K,
300  double alpha, const double *A, int LDA,
301  double beta, double *C, int LDC);
302 void CORE_dsyr2k(PLASMA_enum uplo, PLASMA_enum trans,
303  int N, int K,
304  double alpha, const double *A, int LDA,
305  const double *B, int LDB,
306  double beta, double *C, int LDC);
307 int CORE_dsyssq(PLASMA_enum uplo, int N,
308  const double *A, int LDA,
309  double *scale, double *sumsq);
310 void CORE_dswpab(int i, int n1, int n2,
311  double *A, double *work);
312 int CORE_dswptr_ontile(PLASMA_desc descA, int i1, int i2, const int *ipiv, int inc,
313  const double *Akk, int ldak);
314 void CORE_dtrdalg1(int n,
315  int nb,
316  double *A,
317  int lda,
318  double *V,
319  double *TAU,
320  int Vblksiz, int wantz,
321  int i, int sweepid, int m, int grsiz,
322  double *work);
323 void CORE_dtrmm(PLASMA_enum side, PLASMA_enum uplo,
324  PLASMA_enum transA, PLASMA_enum diag,
325  int M, int N,
326  double alpha, const double *A, int LDA,
327  double *B, int LDB);
328 void CORE_dtrsm(PLASMA_enum side, PLASMA_enum uplo,
329  PLASMA_enum transA, PLASMA_enum diag,
330  int M, int N,
331  double alpha, const double *A, int LDA,
332  double *B, int LDB);
333 void CORE_dtrtri(PLASMA_enum uplo, PLASMA_enum diag, int N,
334  double *A, int LDA, int *info);
335 int CORE_dtslqt(int M, int N, int IB,
336  double *A1, int LDA1,
337  double *A2, int LDA2,
338  double *T, int LDT,
339  double *TAU, double *WORK);
340 int CORE_dtsmlq(PLASMA_enum side, PLASMA_enum trans,
341  int M1, int N1, int M2, int N2, int K, int IB,
342  double *A1, int LDA1,
343  double *A2, int LDA2,
344  const double *V, int LDV,
345  const double *T, int LDT,
346  double *WORK, int LDWORK);
347 int CORE_dtsmlq_corner( int m1, int n1, int m2, int n2, int m3, int n3,
348  int k, int ib, int nb,
349  double *A1, int lda1,
350  double *A2, int lda2,
351  double *A3, int lda3,
352  const double *V, int ldv,
353  const double *T, int ldt,
354  double *WORK, int ldwork);
355 int CORE_dtsmlq_sytra1( PLASMA_enum side, PLASMA_enum trans,
356  int m1, int n1, int m2, int n2,
357  int k, int ib,
358  double *A1, int lda1,
359  double *A2, int lda2,
360  const double *V, int ldv,
361  const double *T, int ldt,
362  double *WORK, int ldwork);
363 int CORE_dtsmqr(PLASMA_enum side, PLASMA_enum trans,
364  int M1, int N1, int M2, int N2, int K, int IB,
365  double *A1, int LDA1,
366  double *A2, int LDA2,
367  const double *V, int LDV,
368  const double *T, int LDT,
369  double *WORK, int LDWORK);
370 int CORE_dtsmqr_corner( int m1, int n1, int m2, int n2, int m3, int n3,
371  int k, int ib, int nb,
372  double *A1, int lda1,
373  double *A2, int lda2,
374  double *A3, int lda3,
375  const double *V, int ldv,
376  const double *T, int ldt,
377  double *WORK, int ldwork);
378 int CORE_dtsmqr_sytra1( PLASMA_enum side, PLASMA_enum trans,
379  int m1, int n1, int m2, int n2,
380  int k, int ib,
381  double *A1, int lda1,
382  double *A2, int lda2,
383  const double *V, int ldv,
384  const double *T, int ldt,
385  double *WORK, int ldwork);
386 int CORE_dtsqrt(int M, int N, int IB,
387  double *A1, int LDA1,
388  double *A2, int LDA2,
389  double *T, int LDT,
390  double *TAU, double *WORK);
391 int CORE_dtstrf(int M, int N, int IB, int NB,
392  double *U, int LDU,
393  double *A, int LDA,
394  double *L, int LDL,
395  int *IPIV, double *WORK,
396  int LDWORK, int *INFO);
397 int CORE_dttmqr(PLASMA_enum side, PLASMA_enum trans,
398  int M1, int N1, int M2, int N2, int K, int IB,
399  double *A1, int LDA1,
400  double *A2, int LDA2,
401  const double *V, int LDV,
402  const double *T, int LDT,
403  double *WORK, int LDWORK);
404 int CORE_dttqrt(int M, int N, int IB,
405  double *A1, int LDA1,
406  double *A2, int LDA2,
407  double *T, int LDT,
408  double *TAU,
409  double *WORK);
410 int CORE_dttmlq(PLASMA_enum side, PLASMA_enum trans,
411  int M1, int N1, int M2, int N2, int K, int IB,
412  double *A1, int LDA1,
413  double *A2, int LDA2,
414  const double *V, int LDV,
415  const double *T, int LDT,
416  double *WORK, int LDWORK);
417 int CORE_dttlqt(int M, int N, int IB,
418  double *A1, int LDA1,
419  double *A2, int LDA2,
420  double *T, int LDT,
421  double *TAU,
422  double *WORK);
423 int CORE_dormlq(PLASMA_enum side, PLASMA_enum trans,
424  int M, int N, int IB, int K,
425  const double *V, int LDV,
426  const double *T, int LDT,
427  double *C, int LDC,
428  double *WORK, int LDWORK);
429 int CORE_dormqr(PLASMA_enum side, PLASMA_enum trans,
430  int M, int N, int K, int IB,
431  const double *V, int LDV,
432  const double *T, int LDT,
433  double *C, int LDC,
434  double *WORK, int LDWORK);
435 
439 void QUARK_CORE_dasum(Quark *quark, Quark_Task_Flags *task_flags,
440  PLASMA_enum storev, PLASMA_enum uplo, int m, int n,
441  const double *A, int lda, int szeA,
442  double *work, int szeW);
443 void QUARK_CORE_dasum_f1(Quark *quark, Quark_Task_Flags *task_flags,
444  PLASMA_enum storev, PLASMA_enum uplo, int m, int n,
445  const double *A, int lda, int szeA,
446  double *work, int szeW,
447  double *fake, int szeF);
448 void QUARK_CORE_dgeadd(Quark *quark, Quark_Task_Flags *task_flags,
449  int m, int n, int nb, double alpha,
450  const double *A, int lda,
451  double *B, int ldb);
452 void QUARK_CORE_dbrdalg1(Quark *quark, Quark_Task_Flags *task_flags,
453  PLASMA_enum uplo,
454  int n, int nb,
455  double *A,
456  int lda,
457  double *VQ,
458  double *TAUQ,
459  double *VP,
460  double *TAUP,
461  int Vblksiz, int wantz,
462  int i, int sweepid, int m, int grsiz,
463  int *PCOL, int *ACOL, int *MCOL);
464 void QUARK_CORE_dgelqt(Quark *quark, Quark_Task_Flags *task_flags,
465  int m, int n, int ib, int nb,
466  double *A, int lda,
467  double *T, int ldt);
468 void QUARK_CORE_dgemm(Quark *quark, Quark_Task_Flags *task_flags,
469  PLASMA_enum transA, PLASMA_enum transB,
470  int m, int n, int k, int nb,
471  double alpha, const double *A, int lda,
472  const double *B, int ldb,
473  double beta, double *C, int ldc);
474 void QUARK_CORE_dgemm2( Quark *quark, Quark_Task_Flags *task_flags,
475  PLASMA_enum transA, PLASMA_enum transB,
476  int m, int n, int k, int nb,
477  double alpha, const double *A, int lda,
478  const double *B, int ldb,
479  double beta, double *C, int ldc);
480 void QUARK_CORE_dgemm_f2(Quark *quark, Quark_Task_Flags *task_flags,
481  PLASMA_enum transA, PLASMA_enum transB,
482  int m, int n, int k, int nb,
483  double alpha, const double *A, int lda,
484  const double *B, int ldb,
485  double beta, double *C, int ldc,
486  double *fake1, int szefake1, int flag1,
487  double *fake2, int szefake2, int flag2);
488 void QUARK_CORE_dgemm_p2(Quark *quark, Quark_Task_Flags *task_flags,
489  PLASMA_enum transA, PLASMA_enum transB,
490  int m, int n, int k, int nb,
491  double alpha, const double *A, int lda,
492  const double **B, int ldb,
493  double beta, double *C, int ldc);
494 void QUARK_CORE_dgemm_p2f1(Quark *quark, Quark_Task_Flags *task_flags,
495  PLASMA_enum transA, PLASMA_enum transB,
496  int m, int n, int k, int nb,
497  double alpha, const double *A, int lda,
498  const double **B, int ldb,
499  double beta, double *C, int ldc,
500  double *fake1, int szefake1, int flag1);
501 void QUARK_CORE_dgemm_p3(Quark *quark, Quark_Task_Flags *task_flags,
502  PLASMA_enum transA, PLASMA_enum transB,
503  int m, int n, int k, int nb,
504  double alpha, const double *A, int lda,
505  const double *B, int ldb,
506  double beta, double **C, int ldc);
507 void QUARK_CORE_dgemm_tile(Quark *quark, Quark_Task_Flags *task_flags,
508  PLASMA_enum transA, PLASMA_enum transB,
509  int m, int n, int k, int nb,
510  const double *alpha, const double *A, int lda,
511  const double *B, int ldb,
512  const double *beta, double *C, int ldc,
513  const double *Alock,
514  const double *Block,
515  const double *Clock);
516 void QUARK_CORE_dgemv(Quark *quark, Quark_Task_Flags *task_flags,
517  PLASMA_enum trans, int m, int n,
518  double alpha, const double *A, int lda,
519  const double *x, int incx,
520  double beta, double *y, int incy);
521 void QUARK_CORE_dgemv_tile(Quark *quark, Quark_Task_Flags *task_flags,
522  PLASMA_enum trans,
523  int m, int n,
524  const double *alpha, const double *A, int lda,
525  const double *x, int incx,
526  const double *beta, double *y, int incy,
527  const double *Alock,
528  const double *xlock,
529  const double *ylock);
530 void QUARK_CORE_dgeqp3_init( Quark *quark, Quark_Task_Flags *task_flags,
531  int n, int *jpvt );
532 void QUARK_CORE_dgeqp3_larfg(Quark *quark, Quark_Task_Flags *task_flags,
533  PLASMA_desc A, int ii, int jj, int i, int j,
534  double *tau, double *beta );
535 void QUARK_CORE_dgeqp3_norms( Quark *quark, Quark_Task_Flags *task_flags,
536  PLASMA_desc A, int ioff, int joff, double *norms1, double *norms2 );
537 void QUARK_CORE_dgeqp3_pivot( Quark *quark, Quark_Task_Flags *task_flags,
538  PLASMA_desc A,
539  double *F, int ldf,
540  int jj, int k, int *jpvt,
541  double *norms1, double *norms2, int *info );
542 void QUARK_CORE_dgeqp3_tntpiv(Quark *quark, Quark_Task_Flags *task_flags,
543  int m, int n, int nb,
544  double *A, int lda,
545  int *IPIV,
546  PLASMA_sequence *sequence, PLASMA_request *request,
547  PLASMA_bool check_info, int iinfo);
548 void QUARK_CORE_dgeqp3_update( Quark *quark, Quark_Task_Flags *task_flags,
549  double *Ajj, int lda1,
550  double *Ajk, int lda2,
551  double *Fk, int ldf,
552  int joff, int k, int koff, int nb,
553  double *norms1, double *norms2, int *info );
554 void QUARK_CORE_dgeqrt(Quark *quark, Quark_Task_Flags *task_flags,
555  int m, int n, int ib, int nb,
556  double *A, int lda,
557  double *T, int ldt);
558 void QUARK_CORE_dgessm(Quark *quark, Quark_Task_Flags *task_flags,
559  int m, int n, int k, int ib, int nb,
560  const int *IPIV,
561  const double *L, int ldl,
562  double *A, int lda);
563 void QUARK_CORE_dgessq_f1( Quark *quark, Quark_Task_Flags *task_flags,
564  int m, int n, const double *A, int lda,
565  double *scale, double *sumsq,
566  double *fake, int szeF, int paramF );
567 void QUARK_CORE_dgetrf(Quark *quark, Quark_Task_Flags *task_flags,
568  int m, int n, int nb,
569  double *A, int lda,
570  int *IPIV,
571  PLASMA_sequence *sequence, PLASMA_request *request,
572  PLASMA_bool check_info, int iinfo);
573 void QUARK_CORE_dgetrf_incpiv(Quark *quark, Quark_Task_Flags *task_flags,
574  int m, int n, int ib, int nb,
575  double *A, int lda,
576  int *IPIV,
577  PLASMA_sequence *sequence, PLASMA_request *request,
578  PLASMA_bool check_info, int iinfo);
579 void QUARK_CORE_dgetrf_nopiv(Quark *quark, Quark_Task_Flags *task_flags,
580  int m, int n, int ib, int nb,
581  double *A, int lda,
582  PLASMA_sequence *sequence, PLASMA_request *request,
583  int iinfo);
584 void QUARK_CORE_dgetrf_reclap(Quark *quark, Quark_Task_Flags *task_flags,
585  int m, int n, int nb,
586  double *A, int lda,
587  int *IPIV,
588  PLASMA_sequence *sequence, PLASMA_request *request,
589  PLASMA_bool check_info, int iinfo,
590  int nbthread);
591 void QUARK_CORE_dgetrf_rectil(Quark *quark, Quark_Task_Flags *task_flags,
592  PLASMA_desc A, double *Amn, int size,
593  int *IPIV,
594  PLASMA_sequence *sequence, PLASMA_request *request,
595  PLASMA_bool check_info, int iinfo,
596  int nbthread);
597 void QUARK_CORE_dgetrip(Quark *quark, Quark_Task_Flags *task_flags,
598  int m, int n, double *A, int szeA);
599 void QUARK_CORE_dgetrip_f1(Quark *quark, Quark_Task_Flags *task_flags,
600  int m, int n, double *A, int szeA,
601  double *fake, int szeF, int paramF);
602 void QUARK_CORE_dgetrip_f2(Quark *quark, Quark_Task_Flags *task_flags,
603  int m, int n, double *A, int szeA,
604  double *fake1, int szeF1, int paramF1,
605  double *fake2, int szeF2, int paramF2);
606 void QUARK_CORE_dsymm(Quark *quark, Quark_Task_Flags *task_flags,
607  PLASMA_enum side, PLASMA_enum uplo,
608  int m, int n, int nb,
609  double alpha, const double *A, int lda,
610  const double *B, int ldb,
611  double beta, double *C, int ldc);
612 void QUARK_CORE_dsygst(Quark *quark, Quark_Task_Flags *task_flags,
613  int itype, PLASMA_enum uplo, int N,
614  double *A, int LDA,
615  double *B, int LDB,
616  PLASMA_sequence *sequence, PLASMA_request *request,
617  int iinfo);
618 void QUARK_CORE_dsyrk(Quark *quark, Quark_Task_Flags *task_flags,
619  PLASMA_enum uplo, PLASMA_enum trans,
620  int n, int k, int nb,
621  double alpha, const double *A, int lda,
622  double beta, double *C, int ldc);
623 void QUARK_CORE_dsyr2k(Quark *quark, Quark_Task_Flags *task_flags,
624  PLASMA_enum uplo, PLASMA_enum trans,
625  int n, int k, int nb,
626  double alpha, const double *A, int lda,
627  const double *B, int LDB,
628  double beta, double *C, int ldc);
629 void QUARK_CORE_dsyrfb(Quark *quark, Quark_Task_Flags *task_flags,
630  PLASMA_enum uplo,
631  int n, int k, int ib, int nb,
632  const double *A, int lda,
633  const double *T, int ldt,
634  double *C, int ldc);
635 void QUARK_CORE_dhessq_f1( Quark *quark, Quark_Task_Flags *task_flags,
636  PLASMA_enum uplo, int n, const double *A, int lda,
637  double *scale, double *sumsq,
638  double *fake, int szeF, int paramF );
639 void QUARK_CORE_dlacpy(Quark *quark, Quark_Task_Flags *task_flags,
640  PLASMA_enum uplo, int m, int n, int mb,
641  const double *A, int lda,
642  double *B, int ldb);
643 void QUARK_CORE_dlacpy_f1(Quark *quark, Quark_Task_Flags *task_flags,
644  PLASMA_enum uplo, int m, int n, int nb,
645  const double *A, int lda,
646  double *B, int ldb,
647  double *fake1, int szefake1, int flag1);
648 void QUARK_CORE_dlacpy_pivot(Quark *quark, Quark_Task_Flags *task_flags,
649  const PLASMA_desc descA,
650  PLASMA_enum direct,
651  int k1, int k2, const int *ipiv,
652  int *rankin, int *rankout,
653  double *A, int lda,
654  int pos, int init);
655 void QUARK_CORE_dlange(Quark *quark, Quark_Task_Flags *task_flags,
656  int norm, int M, int N,
657  const double *A, int LDA, int szeA,
658  int szeW, double *result);
659 void QUARK_CORE_dlange_f1(Quark *quark, Quark_Task_Flags *task_flags,
660  int norm, int M, int N,
661  const double *A, int LDA, int szeA,
662  int szeW, double *result,
663  double *fake, int szeF);
664 #ifdef COMPLEX
665 void QUARK_CORE_dlansy(Quark *quark, Quark_Task_Flags *task_flags,
666  int norm, PLASMA_enum uplo, int N,
667  const double *A, int LDA, int szeA,
668  int szeW, double *result);
669 void QUARK_CORE_dlansy_f1(Quark *quark, Quark_Task_Flags *task_flags,
670  int norm, PLASMA_enum uplo, int N,
671  const double *A, int LDA, int szeA,
672  int szeW, double *result,
673  double *fake, int szeF);
674 #endif
675 void QUARK_CORE_dlansy(Quark *quark, Quark_Task_Flags *task_flags,
676  int norm, PLASMA_enum uplo, int N,
677  const double *A, int LDA, int szeA,
678  int szeW, double *result);
679 void QUARK_CORE_dlansy_f1(Quark *quark, Quark_Task_Flags *task_flags,
680  int norm, PLASMA_enum uplo, int N,
681  const double *A, int LDA, int szeA,
682  int szeW, double *result,
683  double *fake, int szeF);
684 void QUARK_CORE_dlaset(Quark *quark, Quark_Task_Flags *task_flags,
685  PLASMA_enum uplo, int n1, int n2, double alpha,
686  double beta, double *tileA, int ldtilea);
687 void QUARK_CORE_dlaset2(Quark *quark, Quark_Task_Flags *task_flags,
688  PLASMA_enum uplo, int n1, int n2, double alpha,
689  double *tileA, int ldtilea);
690 void QUARK_CORE_dlaswp(Quark *quark, Quark_Task_Flags *task_flags,
691  int n, double *A, int lda,
692  int i1, int i2, const int *ipiv, int inc);
693 void QUARK_CORE_dlaswp_f2(Quark *quark, Quark_Task_Flags *task_flags,
694  int n, double *A, int lda,
695  int i1, int i2, const int *ipiv, int inc,
696  double *fake1, int szefake1, int flag1,
697  double *fake2, int szefake2, int flag2);
698 void QUARK_CORE_dlaswp_ontile(Quark *quark, Quark_Task_Flags *task_flags,
699  PLASMA_desc descA, double *A,
700  int i1, int i2, const int *ipiv, int inc, double *fakepanel);
701 void QUARK_CORE_dlaswp_ontile_f2(Quark *quark, Quark_Task_Flags *task_flags,
702  PLASMA_desc descA, double *A,
703  int i1, int i2, const int *ipiv, int inc,
704  double *fake1, int szefake1, int flag1,
705  double *fake2, int szefake2, int flag2);
706 void QUARK_CORE_dlaswpc_ontile(Quark *quark, Quark_Task_Flags *task_flags,
707  PLASMA_desc descA, double *A,
708  int i1, int i2, const int *ipiv, int inc, double *fakepanel);
709 void QUARK_CORE_dlatro(Quark *quark, Quark_Task_Flags *task_flags,
710  PLASMA_enum uplo, PLASMA_enum trans, int m, int n, int mb,
711  const double *A, int lda,
712  double *B, int ldb);
713 void QUARK_CORE_dlatro_f1(Quark *quark, Quark_Task_Flags *task_flags,
714  PLASMA_enum uplo, PLASMA_enum trans, int m, int n, int mb,
715  const double *A, int lda,
716  double *B, int ldb,
717  double *fake1, int szefake1, int flag1);
718 void QUARK_CORE_dlauum(Quark *quark, Quark_Task_Flags *task_flags,
719  PLASMA_enum uplo, int n, int nb,
720  double *A, int lda);
721 void QUARK_CORE_dplgsy(Quark *quark, Quark_Task_Flags *task_flags,
722  double bump, int m, int n, double *A, int lda,
723  int bigM, int m0, int n0, unsigned long long int seed );
724 void QUARK_CORE_dplgsy(Quark *quark, Quark_Task_Flags *task_flags,
725  double bump, int m, int n, double *A, int lda,
726  int bigM, int m0, int n0, unsigned long long int seed );
727 void QUARK_CORE_dplrnt(Quark *quark, Quark_Task_Flags *task_flags,
728  int m, int n, double *A, int lda,
729  int bigM, int m0, int n0, unsigned long long int seed );
730 void QUARK_CORE_dpotrf(Quark *quark, Quark_Task_Flags *task_flags,
731  PLASMA_enum uplo, int n, int nb,
732  double *A, int lda,
733  PLASMA_sequence *sequence, PLASMA_request *request,
734  int iinfo);
735 void QUARK_CORE_dsetvar(Quark *quark, Quark_Task_Flags *task_flags,
736  const double *alpha, double *x,
737  double *Alock);
738 void QUARK_CORE_dshift( Quark *quark, Quark_Task_Flags *task_flags,
739  int s, int m, int n, int L,
740  double *A);
741 void QUARK_CORE_dshiftw(Quark *quark, Quark_Task_Flags *task_flags,
742  int s, int cl, int m, int n, int L,
743  double *A, double *W);
744 void QUARK_CORE_dssssm(Quark *quark, Quark_Task_Flags *task_flags,
745  int m1, int n1, int m2, int n2, int k, int ib, int nb,
746  double *A1, int lda1,
747  double *A2, int lda2,
748  const double *L1, int ldl1,
749  const double *L2, int ldl2,
750  const int *IPIV);
751 void QUARK_CORE_dsymm(Quark *quark, Quark_Task_Flags *task_flags,
752  PLASMA_enum side, PLASMA_enum uplo,
753  int m, int n, int nb,
754  double alpha, const double *A, int lda,
755  const double *B, int ldb,
756  double beta, double *C, int ldc);
757 void QUARK_CORE_dsyrk(Quark *quark, Quark_Task_Flags *task_flags,
758  PLASMA_enum uplo, PLASMA_enum trans,
759  int n, int k, int nb,
760  double alpha, const double *A, int lda,
761  double beta, double *C, int ldc);
762 void QUARK_CORE_dsyr2k(Quark *quark, Quark_Task_Flags *task_flags,
763  PLASMA_enum uplo, PLASMA_enum trans,
764  int n, int k, int nb,
765  double alpha, const double *A, int lda,
766  const double *B, int LDB,
767  double beta, double *C, int ldc);
768 void QUARK_CORE_dsyssq_f1( Quark *quark, Quark_Task_Flags *task_flags,
769  PLASMA_enum uplo, int n, const double *A, int lda,
770  double *scale, double *sumsq,
771  double *fake, int szeF, int paramF );
772 void QUARK_CORE_dswpab(Quark *quark, Quark_Task_Flags *task_flags,
773  int i, int n1, int n2,
774  double *A, int szeA);
775 void QUARK_CORE_dswptr_ontile(Quark *quark, Quark_Task_Flags *task_flags,
776  PLASMA_desc descA, double *Aij,
777  int i1, int i2, const int *ipiv, int inc,
778  const double *Akk, int ldak);
779 void QUARK_CORE_dtrdalg1(Quark *quark, Quark_Task_Flags *task_flags,
780  int n,
781  int nb,
782  double *A,
783  int lda,
784  double *V,
785  double *TAU,
786  int Vblksiz, int wantz,
787  int i, int sweepid, int m, int grsiz,
788  int *PCOL, int *ACOL, int *MCOL);
789 void QUARK_CORE_dtrmm(Quark *quark, Quark_Task_Flags *task_flags,
790  PLASMA_enum side, PLASMA_enum uplo, PLASMA_enum transA, PLASMA_enum diag,
791  int m, int n, int nb,
792  double alpha, const double *A, int lda,
793  double *B, int ldb);
794 void QUARK_CORE_dtrmm_p2(Quark *quark, Quark_Task_Flags *task_flags,
795  PLASMA_enum side, PLASMA_enum uplo, PLASMA_enum transA, PLASMA_enum diag,
796  int m, int n, int nb,
797  double alpha, const double *A, int lda,
798  double **B, int ldb);
799 void QUARK_CORE_dtrsm(Quark *quark, Quark_Task_Flags *task_flags,
800  PLASMA_enum side, PLASMA_enum uplo, PLASMA_enum transA, PLASMA_enum diag,
801  int m, int n, int nb,
802  double alpha, const double *A, int lda,
803  double *B, int ldb);
804 void QUARK_CORE_dtrtri(Quark *quark, Quark_Task_Flags *task_flags,
805  PLASMA_enum uplo, PLASMA_enum diag, int n, int nb,
806  double *A, int lda,
807  PLASMA_sequence *sequence, PLASMA_request *request,
808  int iinfo);
809 void QUARK_CORE_dtslqt(Quark *quark, Quark_Task_Flags *task_flags,
810  int m, int n, int ib, int nb,
811  double *A1, int lda1,
812  double *A2, int lda2,
813  double *T, int ldt);
814 void QUARK_CORE_dtsmlq(Quark *quark, Quark_Task_Flags *task_flags,
815  PLASMA_enum side, PLASMA_enum trans,
816  int m1, int n1, int m2, int n2, int k, int ib, int nb,
817  double *A1, int lda1,
818  double *A2, int lda2,
819  const double *V, int ldv,
820  const double *T, int ldt);
821 void QUARK_CORE_dtsmlq_sytra1(Quark *quark, Quark_Task_Flags *task_flags,
822  PLASMA_enum side, PLASMA_enum trans,
823  int m1, int n1, int m2, int n2, int k, int ib, int nb,
824  double *A1, int lda1,
825  double *A2, int lda2,
826  const double *V, int ldv,
827  const double *T, int ldt);
828 void QUARK_CORE_dtsmlq_corner(Quark *quark, Quark_Task_Flags *task_flags,
829  int m1, int n1, int m2, int n2, int m3, int n3, int k, int ib, int nb,
830  double *A1, int lda1,
831  double *A2, int lda2,
832  double *A3, int lda3,
833  const double *V, int ldv,
834  const double *T, int ldt);
835 void QUARK_CORE_dtsmqr(Quark *quark, Quark_Task_Flags *task_flags,
836  PLASMA_enum side, PLASMA_enum trans,
837  int m1, int n1, int m2, int n2, int k, int ib, int nb,
838  double *A1, int lda1,
839  double *A2, int lda2,
840  const double *V, int ldv,
841  const double *T, int ldt);
842 void QUARK_CORE_dtsmqr_sytra1(Quark *quark, Quark_Task_Flags *task_flags,
843  PLASMA_enum side, PLASMA_enum trans,
844  int m1, int n1, int m2, int n2, int k, int ib, int nb,
845  double *A1, int lda1,
846  double *A2, int lda2,
847  const double *V, int ldv,
848  const double *T, int ldt);
849 void QUARK_CORE_dtsmqr_corner(Quark *quark, Quark_Task_Flags *task_flags,
850  int m1, int n1, int m2, int n2, int m3, int n3, int k, int ib, int nb,
851  double *A1, int lda1,
852  double *A2, int lda2,
853  double *A3, int lda3,
854  const double *V, int ldv,
855  const double *T, int ldt);
856 void QUARK_CORE_dtsqrt(Quark *quark, Quark_Task_Flags *task_flags,
857  int m, int n, int ib, int nb,
858  double *A1, int lda1,
859  double *A2, int lda2,
860  double *T, int ldt);
861 void QUARK_CORE_dtstrf(Quark *quark, Quark_Task_Flags *task_flags,
862  int m, int n, int ib, int nb,
863  double *U, int ldu,
864  double *A, int lda,
865  double *L, int ldl,
866  int *IPIV,
867  PLASMA_sequence *sequence, PLASMA_request *request,
868  PLASMA_bool check_info, int iinfo);
869 void QUARK_CORE_dttmqr(Quark *quark, Quark_Task_Flags *task_flags,
870  PLASMA_enum side, PLASMA_enum trans,
871  int m1, int n1, int m2, int n2, int k, int ib, int nb,
872  double *A1, int lda1,
873  double *A2, int lda2,
874  const double *V, int ldv,
875  const double *T, int ldt);
876 void QUARK_CORE_dttqrt(Quark *quark, Quark_Task_Flags *task_flags,
877  int m, int n, int ib, int nb,
878  double *A1, int lda1,
879  double *A2, int lda2,
880  double *T, int ldt);
881 void QUARK_CORE_dttmlq(Quark *quark, Quark_Task_Flags *task_flags,
882  PLASMA_enum side, PLASMA_enum trans,
883  int m1, int n1, int m2, int n2, int k, int ib, int nb,
884  double *A1, int lda1,
885  double *A2, int lda2,
886  const double *V, int ldv,
887  const double *T, int ldt);
888 void QUARK_CORE_dttlqt(Quark *quark, Quark_Task_Flags *task_flags,
889  int m, int n, int ib, int nb,
890  double *A1, int lda1,
891  double *A2, int lda2,
892  double *T, int ldt);
893 void QUARK_CORE_dpamm(Quark *quark, Quark_Task_Flags *task_flags,
894  int op, PLASMA_enum side, PLASMA_enum storev,
895  int m, int n, int k, int l,
896  const double *A1, int lda1,
897  double *A2, int lda2,
898  const double *V, int ldv,
899  double *W, int ldw);
900 void QUARK_CORE_dplssq( Quark *quark, Quark_Task_Flags *task_flags,
901  int m, const double *A, double *result );
902 void QUARK_CORE_dormlq(Quark *quark, Quark_Task_Flags *task_flags,
903  PLASMA_enum side, PLASMA_enum trans,
904  int m, int n, int ib, int nb, int k,
905  const double *A, int lda,
906  const double *T, int ldt,
907  double *C, int ldc);
908 void QUARK_CORE_dormqr(Quark *quark, Quark_Task_Flags *task_flags,
909  PLASMA_enum side, PLASMA_enum trans,
910  int m, int n, int k, int ib, int nb,
911  const double *A, int lda,
912  const double *T, int ldt,
913  double *C, int ldc);
914 
918 void CORE_dasum_quark(Quark *quark);
919 void CORE_dasum_f1_quark(Quark *quark);
920 void CORE_dgeadd_quark(Quark *quark);
921 void CORE_dbrdalg1_quark(Quark *quark);
922 void CORE_dgelqt_quark(Quark *quark);
923 void CORE_dgemm_quark(Quark *quark);
924 void CORE_dgemm_tile_quark(Quark *quark);
925 void CORE_dgemv_quark(Quark *quark);
926 void CORE_dgemv_tile_quark(Quark *quark);
927 void CORE_dgeqp3_init_quark(Quark *quark);
928 void CORE_dgeqp3_larfg_quark(Quark *quark);
929 void CORE_dgeqp3_norms_quark(Quark *quark);
930 void CORE_dgeqp3_pivot_quark(Quark *quark);
931 void CORE_dgeqp3_tntpiv_quark(Quark *quark);
932 void CORE_dgeqp3_update_quark(Quark *quark);
933 void CORE_dgeqrt_quark(Quark *quark);
934 void CORE_dgessm_quark(Quark *quark);
935 void CORE_dgessq_quark(Quark *quark);
936 void CORE_dgessq_f1_quark(Quark *quark);
937 void CORE_dgetrf_quark(Quark *quark);
938 void CORE_dgetrf_incpiv_quark(Quark *quark);
939 void CORE_dgetrf_nopiv_quark(Quark* quark);
940 void CORE_dgetrf_reclap_quark(Quark *quark);
941 void CORE_dgetrf_rectil_quark(Quark* quark);
942 void CORE_dgetrip_quark(Quark *quark);
943 void CORE_dgetrip_f1_quark(Quark *quark);
944 void CORE_dgetrip_f2_quark(Quark *quark);
945 #ifdef COMPLEX
946 void CORE_dsymm_quark(Quark *quark);
947 void CORE_dsyrk_quark(Quark *quark);
948 void CORE_dsyr2k_quark(Quark *quark);
949 #endif
950 void CORE_dsygst_quark(Quark *quark);
951 void CORE_dsyrfb_quark(Quark *quark);
952 void CORE_dhessq_quark(Quark *quark);
953 void CORE_dhessq_f1_quark(Quark *quark);
954 void CORE_dlacpy_quark(Quark *quark);
955 void CORE_dlacpy_f1_quark(Quark *quark);
956 void CORE_dlacpy_pivot_quark(Quark *quark);
957 void CORE_dlatro_quark(Quark *quark);
958 void CORE_dlatro_f1_quark(Quark *quark);
959 void CORE_dlange_quark(Quark *quark);
960 void CORE_dlange_f1_quark(Quark *quark);
961 #ifdef COMPLEX
962 void CORE_dlansy_quark(Quark *quark);
963 void CORE_dlansy_f1_quark(Quark *quark);
964 #endif
965 void CORE_dlansy_quark(Quark *quark);
966 void CORE_dlansy_f1_quark(Quark *quark);
967 void CORE_dlaset_quark(Quark *quark);
968 void CORE_dlaset2_quark(Quark *quark);
969 void CORE_dlatro_quark(Quark *quark);
970 void CORE_dlauum_quark(Quark *quark);
971 void CORE_dpamm_quark(Quark *quark);
972 void CORE_dplgsy_quark(Quark *quark);
973 void CORE_dplgsy_quark(Quark *quark);
974 void CORE_dplrnt_quark(Quark *quark);
975 void CORE_dplssq_quark(Quark *quark);
976 void CORE_dpotrf_quark(Quark *quark);
977 void CORE_dsetvar_quark(Quark *quark);
978 void CORE_dshift_quark(Quark *quark);
979 void CORE_dshiftw_quark(Quark *quark);
980 void CORE_dssssm_quark(Quark *quark);
981 void CORE_dsymm_quark(Quark *quark);
982 void CORE_dsyrk_quark(Quark *quark);
983 void CORE_dsyr2k_quark(Quark *quark);
984 void CORE_dsyssq_quark(Quark *quark);
985 void CORE_dsyssq_f1_quark(Quark *quark);
986 void CORE_dswpab_quark(Quark *quark);
987 void CORE_dswptr_ontile_quark(Quark *quark);
988 void CORE_dtrdalg1_quark(Quark *quark);
989 void CORE_dtrmm_quark(Quark *quark);
990 void CORE_dtrsm_quark(Quark *quark);
991 void CORE_dtrtri_quark(Quark *quark);
992 void CORE_dtslqt_quark(Quark *quark);
993 void CORE_dtsmlq_quark(Quark *quark);
994 void CORE_dtsmlq_sytra1_quark(Quark *quark);
995 void CORE_dtsmlq_corner_quark(Quark *quark);
996 void CORE_dtsmqr_quark(Quark *quark);
997 void CORE_dtsmqr_sytra1_quark(Quark *quark);
998 void CORE_dtsmqr_corner_quark(Quark *quark);
999 void CORE_dtsqrt_quark(Quark *quark);
1000 void CORE_dtstrf_quark(Quark *quark);
1001 void CORE_dttmqr_quark(Quark *quark);
1002 void CORE_dttqrt_quark(Quark *quark);
1003 void CORE_dttmlq_quark(Quark *quark);
1004 void CORE_dttlqt_quark(Quark *quark);
1005 void CORE_dormlq_quark(Quark *quark);
1006 void CORE_dormqr_quark(Quark *quark);
1007 void CORE_dlaswp_quark(Quark* quark);
1008 void CORE_dlaswp_f2_quark(Quark* quark);
1009 void CORE_dlaswp_ontile_quark(Quark *quark);
1010 void CORE_dlaswp_ontile_f2_quark(Quark *quark);
1011 void CORE_dlaswpc_ontile_quark(Quark *quark);
1012 void CORE_dtrmm_p2_quark(Quark* quark);
1013 void CORE_dgemm_f2_quark(Quark* quark);
1014 void CORE_dgemm_p2_quark(Quark* quark);
1015 void CORE_dgemm_p2f1_quark(Quark* quark);
1016 void CORE_dgemm_p3_quark(Quark* quark);
1017 
1018 #ifdef __cplusplus
1019 }
1020 #endif
1021 
1022 #undef COMPLEX
1023 
1024 #endif