/ani/mrses

To get this branch, use:
bzr branch http://darksoft.org/webbzr/ani/mrses
1 by Suren A. Chilingaryan
Initial import
1
/* --------------------------------------------------------------  */
2
/* (C)Copyright 2007,2008,                                         */
3
/* International Business Machines Corporation                     */
4
/* All Rights Reserved.                                            */
5
/*                                                                 */
6
/* Redistribution and use in source and binary forms, with or      */
7
/* without modification, are permitted provided that the           */
8
/* following conditions are met:                                   */
9
/*                                                                 */
10
/* - Redistributions of source code must retain the above copyright*/
11
/*   notice, this list of conditions and the following disclaimer. */
12
/*                                                                 */
13
/* - Redistributions in binary form must reproduce the above       */
14
/*   copyright notice, this list of conditions and the following   */
15
/*   disclaimer in the documentation and/or other materials        */
16
/*   provided with the distribution.                               */
17
/*                                                                 */
18
/* - Neither the name of IBM Corporation nor the names of its      */
19
/*   contributors may be used to endorse or promote products       */
20
/*   derived from this software without specific prior written     */
21
/*   permission.                                                   */
22
/*                                                                 */
23
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND          */
24
/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,     */
25
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF        */
26
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE        */
27
/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
28
/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,    */
29
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT    */
30
/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;    */
31
/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)        */
32
/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN       */
33
/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR    */
34
/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,  */
35
/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.              */
36
/* --------------------------------------------------------------  */
37
/* PROLOG END TAG zYx                                              */
38
39
/* *****************************************************************************
40
 * Purpose : Prototypes for BLAS functions   
41
 *     
42
 **************************************************************************** */
43
44
#ifndef __BLAS_H__
45
#define __BLAS_H__
46
47
#ifdef __cplusplus
48
extern "C"
49
{
50
#endif
51
52
typedef struct { float r, i; } blas_complex;
53
typedef struct { double r, i; } blas_doublecomplex;
54
55
#define complex blas_complex
56
#define doublecomplex blas_doublecomplex
57
58
59
    // SP level 1 //
60
    extern double snrm2_(int *, float *, int *);
61
    extern double sasum_(int *, float *, int *);
62
    extern int sswap_(int *, float *, int *, float *, int *);
63
    extern int srot_(int *, float *, int *, float *, int *, float *, float *);
64
    extern int srotg_(float *, float *, float *, float *);
65
    extern int sscal_(int *, float *, float *, int *);
66
    extern int isamax_(int *, float *, int *);
67
    extern double sdot_(int *, float *, int *, float *, int *);
68
    extern int scopy_(int *, float *, int *, float *, int *);
69
    extern int saxpy_(int *, float *, float *, int *, float *, int *) ;
70
71
    // DP level 1 //
72
    extern int drotg_(double *, double *, double *, double *);
73
    extern double dnrm2_(int *, double *, int *);
74
    extern double dasum_(int *, double *, int *);
75
    extern int dswap_(int *, double *, int *, double *, int *);
76
    extern int drot_(int *, double *, int *, double *, int *, double *, double *);
77
    extern int idamax_(int *, double *, int *);
78
    extern int dscal_(int *, double *, double *, int *);
79
    extern double ddot_(int *, double *, int *, double *, int *);
80
    extern int dcopy_(int *, double *, int *, double *, int *);
81
    extern int daxpy_(int *, double *, double *, int *, double *, int *); 
82
83
84
    // SP level 2 //
85
    extern int sgbmv_(char *, int *, int *, int * , int *, float *, float *, int *, float *, int *, float *, float *, int *);
86
    extern int sspmv_(char *, int *, float *, float *, float *, int *, float *, float *, int *);
87
    extern int ssymv_(char *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
88
    extern int sgemv_(char *, int *, int * , float *, float *, int *, float *, int *, float *, float *, int *);
89
    extern int ssbmv_(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
90
    extern int stpmv_(char *, char *, char *, int *, float *, float *, int *);
91
    extern int strmv_(char *, char *, char *, int *, float *, int *, float *, int *);
92
    extern int stpsv_(char *, char *, char *, int *, float *, float *, int *);
93
    extern int strsv_(char *, char *, char *, int *, float *, int *, float *, int *);
94
    extern int stbmv_(char *, char *, char *, int *, int *, float *, int *, float *, int *);
95
    extern int stbsv_(char *, char *, char *, int *, int *, float *, int *, float *, int *);
96
    extern int sger_(int *, int *, float *, float *, int *, float *, int *, float *, int *);
97
    extern int sspr_(char *, int *, float *, float *, int *, float *);
98
    extern int ssyr_(char *, int *, float *, float *, int *, float *, int *);
99
    extern int ssyr2_(char *, int *, float *, float *, int *, float *, int *, float *, int *);
100
    extern int sspr2_(char *, int *, float *, float *, int *, float *, int *, float *);
101
102
    // DP level 2 //
103
    extern int dgbmv_(char *, int *, int *, int * , int *, double *, double *, int *, double *, int *, double *, double *, int *);
104
    extern int dgemv_(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
105
    extern int dsymv_(char *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
106
    extern int dsbmv_(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
107
    extern int dspmv_(char *, int *, double *, double *, double *, int *, double *, double *, int *);
108
    extern int dtpmv_(char *, char *, char *, int *, double *, double *, int *);
109
    extern int dtrmv_(char *, char *, char *, int *, double *, int *, double *, int *);
110
    extern int dtpsv_(char *, char *, char *, int *, double *, double *, int *);
111
    extern int dtbmv_(char *, char *, char *, int *, int *, double *, int *, double *, int *);
112
    extern int dtrsv_(char *, char *, char *, int *, double *, int *, double *, int *);
113
    extern int dtbsv_(char *, char *, char *, int *, int *, double *, int *, double *, int *);
114
    extern int dger_(int *, int *, double *, double *, int *, double *, int *, double *, int *);
115
    extern int dsyr_(char *, int *, double *, double *, int *, double *, int *);
116
    extern int dspr_(char *, int *, double *, double *, int *, double *);
117
    extern int dspr2_(char *, int *, double *, double *, int *, double *, int *, double *);
118
    extern int dsyr2_(char *, int *, double *, double *, int *, double *, int *, double *, int *);
119
120
    // SP level 3 //
121
    extern int sgemm_(char *, char *, int *, int *, int *, float *, float *, 
122
                      int *, float *, int *, float *, float *, int *);
123
    extern int ssyrk_(char *, char *, int *, int *, float *, float *, int *, 
124
                      float *, float *, int *);
125
    extern int strsm_(char *, char *, char *, char *, int *, int *, float *, 
126
                      float *, int *, float *, int *);
127
    extern int strmm_(char *, char *, char *, char *, int *, int *, float *, 
128
                      float *, int *, float *, int *);
129
    extern int ssymm_(char *, char *, int *, int *, float *, float *, int *, 
130
                      float *, int *, float *, float *, int *);
131
    extern int ssyr2k_(char *, char *, int *, int *, float *, float *, int *,
132
                       float *, int *, float *, float *, int *);
133
134
    //DP level 3 //
135
    extern int dgemm_(char *, char *, int *, int *, int *, double *, double *, 
136
                      int *, double *, int *, double *, double *, int *); 
137
    extern int dsyrk_(char *, char *, int *, int *,
138
                      double *, double *, int *, double *, double *, int *);
139
    extern int dtrsm_(char *, char *, char *, char *, int *, int *,
140
                      double *, double *, int *, double *, int *);
141
    extern int dtrmm_(char *, char *, char *, char *, int *, int *,
142
                      double *, double *, int *, double *, int *);
143
    extern int dsyr2k_(char *, char *, int *, int *, double *, double *, 
144
                       int *, double *, int *, double *, double *, int *);
145
    extern int dsymm_(char *, char *, int *, int *, double *, double *, int *, double *, int *,
146
                      double *, double *, int *);
147
                      
148
    /*Complex Routines*/
149
    extern void 
150
    cdotu_(complex* retval,
151
           int* N, 
152
           complex* X, int* incX, 
153
           complex* Y, int* incY);
154
    
155
    extern void
156
    cdotc_(complex* retval,
157
           int* N, 
158
           complex* X, int* incX, 
159
           complex* Y, int* incY);
160
    
161
    extern int
162
    icamax_(int* N,
163
            complex* X, int* incX);
164
    
165
    extern int
166
    cswap_(int* N,
167
           complex* X, int* incX,
168
           complex* Y, int* incY);
169
    
170
    extern int
171
    ccopy_(int* N,
172
           complex* X, int* incX,
173
           complex* Y, int* incY);
174
    
175
    extern int
176
    caxpy_(int* N,
177
          complex* alpha,
178
          complex* X, int* incX,
179
          complex* Y, int* incY);
180
    
181
    extern int 
182
    csrot_(int* N, 
183
           complex* X, 
184
           int* incX,
185
            complex* Y,
186
            int* incY,
187
             float* c,
188
             float* s);
189
    extern int
190
    cscal_(int* N,
191
           complex* alpha,
192
           complex* X, int* incX);
193
    extern int
194
    csscal_(int* N,
195
            float* alpha,
196
            complex* X, int* incX);
197
    extern int
198
    cgemv_(char* trans, int* M, int* N,
199
           complex* alpha,
200
           complex* A, int* lda,
201
           complex* X, int* incX,
202
           complex* beta,
203
           complex* Y, int* incY);
204
    
205
    extern int 
206
    cgbmv_(char *trans, int *M, int *N, int *KL, int *KU, 
207
           complex *alpha, 
208
           complex *A, int *lda, 
209
           complex *X, int *incX, 
210
           complex *beta, 
211
           complex *Y, int *incY);
212
    
213
    extern int 
214
    ctrmv_(char* uplo, char *trans, char* diag, int *N,  
215
           complex *A, int *lda, 
216
           complex *X, int *incX);
217
    
218
    extern int
219
    ctbmv_(char* uplo, char* trans, char* diag, int* N, int* K,
220
           complex* A, int* lda,
221
           complex* X, int* incX);
222
    
223
    extern int
224
    ctpmv_(char* uplo, char* trans, char* diag, int* N, 
225
           complex* Ap, 
226
           complex* X, int* incX);
227
    
228
    extern int
229
    ctrsv_(char* uplo, char* trans, char* diag, int* N,
230
           complex* A, int* lda,
231
           complex* X, int* incX);
232
    
233
    extern int
234
    ctbsv_(char* uplo, char* trans, char* diag, int* N, int* K,
235
           complex* A, int* lda, 
236
           complex* X, int* incX);
237
    
238
    extern int
239
    ctpsv_(char* uplo, char* trans, char* diag, int* N, 
240
           complex* Ap, 
241
           complex* X, int* incX);
242
    extern int
243
    chemv_(char* uplo, int* N,
244
           complex* alpha,
245
           complex* A, int* lda,
246
           complex* X, int* incX,
247
           complex* beta,
248
           complex* Y, int* incY);
249
    
250
    extern int
251
    chbmv_(char* uplo, int* N, int* K,
252
           complex* alpha,
253
           complex* A, int* lda,
254
           complex* X, int* incX,
255
           complex* beta,
256
           complex* Y, int* incY);
257
    
258
    extern int
259
    chpmv_(char* uplo, int* N, 
260
           complex* alpha,
261
           complex* Ap, 
262
           complex* X, int* incX,
263
           complex* beta,
264
           complex* Y, int* incY);
265
    
266
    extern int
267
    cgeru_(int* M, int* N,
268
           complex* alpha,
269
           complex* X, int* incX,
270
           complex* Y, int* incY,
271
           complex* A, int* lda);
272
    
273
    extern int
274
    cgerc_(int* M, int* N,
275
           complex* alpha,
276
           complex* X, int* incX,
277
           complex* Y, int* incY,
278
           complex* A, int* lda);
279
    
280
    extern int
281
    cher_(char* uplo, int* N,
282
          float* alpha,
283
          complex* X, int* incX,
284
          complex* A, int* lda);
285
    
286
    extern int
287
    chpr_(char* uplo, int* N,
288
          float* alpha,
289
          complex* X, int* incX,
290
          complex* Ap);
291
    
292
    extern int
293
    cher2_(char* uplo, int* N,
294
           complex* alpha,
295
           complex* X, int* incX,
296
           complex* Y, int* incY,
297
           complex* A, int* lda);
298
    
299
    extern int
300
    chpr2_(char* uplo, int* N,
301
           complex* alpha,
302
           complex* X, int* incX,
303
           complex* Y, int* incY,
304
           complex* Ap);
305
    extern int
306
    cgemm_(char* transA, char* transB, int* M, int* N, int* K,
307
           complex* alpha,
308
           complex* A, int* lda,
309
           complex* B, int* ldb,
310
           complex* beta,
311
           complex* C, int* ldc);
312
    
313
    extern int
314
    csymm_(char* side, char* uplo, int* M, int* N,
315
           complex* alpha,
316
           complex* A, int* lda,
317
           complex* B, int* ldb,
318
           complex* beta,
319
           complex* C, int* ldc);
320
    
321
    extern int
322
    csyrk_(char* uplo, char* trans, int* N, int* K,
323
           complex* alpha,
324
           complex* A, int* lda,
325
           complex* beta,
326
           complex* C, int* ldc);
327
    
328
    extern int
329
    csyr2k_(char* uplo, char* trans, int* N, int* K,
330
            complex* alpha,
331
            complex* A, int* lda,
332
            complex* B, int* ldb,
333
            complex* beta,
334
            complex* C, int* ldc);
335
    
336
    extern int
337
    ctrmm_(char* side, char* uplo, char* trans, char* diag, 
338
           int* M, int* N,
339
           complex* alpha,
340
           complex* A, int* lda,
341
           complex* B, int* ldb);
342
    
343
    extern int 
344
    ctrsm_(char* side, char* uplo, char* trans, char* diag,
345
           int* M, int* N,
346
           complex* alpha,
347
           complex* A, int* lda,
348
           complex* B, int* ldb);
349
    extern int
350
    chemm_(char* side, char* uplo, int* M, int* N,
351
           complex* alpha,
352
           complex* A, int* lda,
353
           complex* B, int* ldb,
354
           complex* beta,
355
           complex* C, int* ldc);
356
    
357
    extern int
358
    cherk_(char* uplo, char* trans, int* N, int* K,
359
           float* alpha,
360
           complex* A, int* lda,
361
           float* beta,
362
           complex* C, int* ldc);
363
    
364
    extern int
365
    cher2k_(char* uplo, char* trans, int* N, int* K,
366
            complex* alpha,
367
            complex* A, int* lda,
368
            complex* B, int* ldb,
369
            float* beta,
370
            complex* C, int* ldc);
371
    
372
    /* Double Complex Routines */
373
    
374
    extern void
375
    zdotu_(doublecomplex* retval,
376
           int* N, 
377
           doublecomplex* X, int* incX, 
378
           doublecomplex* Y, int* incY);
379
    
380
    extern void
381
    zdotc_(doublecomplex* retval,
382
           int* N, 
383
           doublecomplex* X, int* incX, 
384
           doublecomplex* Y, int* incY);
385
    extern double 
386
    dznrm2_(int* N, 
387
            doublecomplex* X, int* incX);
388
    
389
    extern double
390
    dzasum_(int* N, 
391
            doublecomplex* X, int* incX);
392
    extern int
393
    izamax_(int* N,
394
            doublecomplex* X, int* incX);
395
    
396
    extern int
397
    zswap_(int* N,
398
           doublecomplex* X, int* incX,
399
           doublecomplex* Y, int* incY);
400
    
401
    extern int
402
    zcopy_(int* N,
403
           doublecomplex* X, int* incX,
404
           doublecomplex* Y, int* incY);
405
    
406
    extern int
407
    zaxpy_(int* N,
408
           doublecomplex* alpha,
409
           doublecomplex* X, int* incX,
410
           doublecomplex* Y, int* incY);
411
    
412
    extern int  
413
    zdrot_(int* N, 
414
           doublecomplex* X, 
415
           int* incX,
416
           doublecomplex* Y,
417
           int* incY,
418
           double* c,
419
           double* s);
420
    
421
    extern int
422
    zscal_(int* N,
423
           doublecomplex* alpha,
424
           doublecomplex* X, int* incX);
425
    
426
    extern int
427
    zdscal_(int* N,
428
            double* alpha,
429
            doublecomplex* X, int* incX);
430
    
431
    extern int
432
    zgemv_(char* trans, int* M, int* N,
433
           doublecomplex* alpha,
434
           doublecomplex* A, int* lda,
435
           doublecomplex* X, int* incX,
436
           doublecomplex* beta,
437
           doublecomplex* Y, int* incY);
438
    
439
    extern int 
440
    zgbmv_(char *trans, int *M, int *N, int *KL, int *KU, 
441
           doublecomplex *alpha, 
442
           doublecomplex *A, int *lda, 
443
           doublecomplex *X, int *incX, 
444
           doublecomplex *beta, 
445
           doublecomplex *Y, int *incY);
446
    
447
    extern int 
448
    ztrmv_(char* uplo, char *trans, char* diag, int *N,  
449
           doublecomplex *A, int *lda, 
450
           doublecomplex *X, int *incX);
451
    
452
    extern int
453
    ztbmv_(char* uplo, char* trans, char* diag, int* N, int* K,
454
           doublecomplex* A, int* lda,
455
           doublecomplex* X, int* incX);
456
    
457
    extern void  
458
    ztpmv_(char* uplo, char* trans, char* diag, int* N, 
459
          doublecomplex* Ap, 
460
          doublecomplex* X, int* incX);
461
    
462
    extern int
463
    ztrsv_(char* uplo, char* trans, char* diag, int* N,
464
           doublecomplex* A, int* lda,
465
           doublecomplex* X, int* incX);
466
    
467
    extern int
468
    ztbsv_(char* uplo, char* trans, char* diag, int* N, int* K,
469
           doublecomplex* A, int* lda, 
470
           doublecomplex* X, int* incX);
471
    
472
    extern int
473
    ztpsv_(char* uplo, char* trans, char* diag, int* N, 
474
           doublecomplex* Ap, 
475
           doublecomplex* X, int* incX);
476
    
477
    extern int
478
    zhemv_(char* uplo, int* N,
479
           doublecomplex* alpha,
480
           doublecomplex* A, int* lda,
481
           doublecomplex* X, int* incX,
482
           doublecomplex* beta,
483
           doublecomplex* Y, int* incY);
484
    
485
    extern int
486
    zhbmv_(char* uplo, int* N, int* K,
487
           doublecomplex* alpha,
488
           doublecomplex* A, int* lda,
489
           doublecomplex* X, int* incX,
490
           doublecomplex* beta,
491
           doublecomplex* Y, int* incY);
492
    
493
    extern int
494
    zhpmv_(char* uplo, int* N, 
495
           doublecomplex* alpha,
496
           doublecomplex* Ap, 
497
           doublecomplex* X, int* incX,
498
           doublecomplex* beta,
499
           doublecomplex* Y, int* incY);
500
    
501
    extern int
502
    zgeru_(int* M, int* N,
503
           doublecomplex* alpha,
504
           doublecomplex* X, int* incX,
505
           doublecomplex* Y, int* incY,
506
           doublecomplex* A, int* lda);
507
    
508
    extern int
509
    zgerc_(int* M, int* N,
510
           doublecomplex* alpha,
511
           doublecomplex* X, int* incX,
512
           doublecomplex* Y, int* incY,
513
           doublecomplex* A, int* lda);
514
    
515
    extern int
516
    zher_(char* uplo, int* N,
517
          double* alpha,
518
          doublecomplex* X, int* incX,
519
          doublecomplex* A, int* lda);
520
    
521
    extern int
522
    zhpr_(char* uplo, int* N,
523
          double* alpha,
524
          doublecomplex* X, int* incX,
525
          doublecomplex* Ap);
526
    
527
    extern int
528
    zher2_(char* uplo, int* N,
529
           doublecomplex* alpha,
530
           doublecomplex* X, int* incX,
531
           doublecomplex* Y, int* incY,
532
           doublecomplex* A, int* lda);
533
    
534
    extern int
535
    zhpr2_(char* uplo, int* N,
536
           doublecomplex* alpha,
537
           doublecomplex* X, int* incX,
538
           doublecomplex* Y, int* incY,
539
           doublecomplex* Ap);
540
    
541
    extern int
542
    zgemm_(char* transA, char* transB, int* M, int* N, int* K,
543
           doublecomplex* alpha,
544
           doublecomplex* A, int* lda,
545
           doublecomplex* B, int* ldb,
546
           doublecomplex* beta,
547
           doublecomplex* C, int* ldc);
548
    
549
    extern int
550
    zsymm_(char* side, char* uplo, int* M, int* N,
551
           doublecomplex* alpha,
552
           doublecomplex* A, int* lda,
553
           doublecomplex* B, int* ldb,
554
           doublecomplex* beta,
555
           doublecomplex* C, int* ldc);
556
    
557
    extern int
558
    zsyrk_(char* uplo, char* trans, int* N, int* K,
559
           doublecomplex* alpha,
560
           doublecomplex* A, int* lda,
561
           doublecomplex* beta,
562
           doublecomplex* C, int* ldc);
563
    
564
    extern int
565
    zsyr2k_(char* uplo, char* trans, int* N, int* K,
566
            doublecomplex* alpha,
567
            doublecomplex* A, int* lda,
568
            doublecomplex* B, int* ldb,
569
            doublecomplex* beta,
570
            doublecomplex* C, int* ldc);
571
    
572
    extern int
573
    ztrmm_(char* side, char* uplo, char* trans, char* diag, 
574
           int* M, int* N,
575
           doublecomplex* alpha,
576
           doublecomplex* A, int* lda,
577
           doublecomplex* B, int* ldb);
578
    
579
    extern int 
580
    ztrsm_(char* side, char* uplo, char* trans, char* diag,
581
           int* M, int* N,
582
           doublecomplex* alpha,
583
           doublecomplex* A, int* lda,
584
           doublecomplex* B, int* ldb);
585
    
586
    extern int
587
    zhemm_(char* side, char* uplo, int* M, int* N,
588
           doublecomplex* alpha,
589
           doublecomplex* A, int* lda,
590
           doublecomplex* B, int* ldb,
591
           doublecomplex* beta,
592
           doublecomplex* C, int* ldc);
593
    
594
    extern int
595
    zherk_(char* uplo, char* trans, int* N, int* K,
596
           double* alpha,
597
           doublecomplex* A, int* lda,
598
           double* beta,
599
           doublecomplex* C, int* ldc);
600
    
601
    extern int
602
    zher2k_(char* uplo, char* trans, int* N, int* K,
603
            doublecomplex* alpha,
604
            doublecomplex* A, int* lda,
605
            doublecomplex* B, int* ldb,
606
            double* beta,
607
            doublecomplex* C, int* ldc);
608
     
609
#ifdef __cplusplus
610
}
611
#endif                                
612
613
#endif