1/*
2 *
3 * cblas_sspr.c
4 * This program is a C interface to sspr.
5 * Written by Keita Teranishi
6 * 4/6/1998
7 *
8 */
9
10#include "cblas.h"
11#include "cblas_f77.h"
12void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
13                const int N, const  float alpha, const float *X,
14                const int incX, float *Ap)
15{
16   char UL;
17#ifdef F77_CHAR
18   F77_CHAR F77_UL;
19#else
20   #define F77_UL &UL
21#endif
22
23#ifdef F77_INT
24   F77_INT F77_N=N, F77_incX=incX;
25#else
26   #define F77_N N
27   #define F77_incX incX
28#endif
29
30   extern int CBLAS_CallFromC;
31   extern int RowMajorStrg;
32   RowMajorStrg = 0;
33
34   CBLAS_CallFromC = 1;
35   if (order == CblasColMajor)
36   {
37      if (Uplo == CblasLower) UL = 'L';
38      else if (Uplo == CblasUpper) UL = 'U';
39      else
40      {
41         cblas_xerbla(2, "cblas_sspr","Illegal Uplo setting, %d\n",Uplo );
42         CBLAS_CallFromC = 0;
43         RowMajorStrg = 0;
44         return;
45      }
46      #ifdef F77_CHAR
47         F77_UL = C2F_CHAR(&UL);
48      #endif
49
50      F77_sspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap);
51
52   }  else if (order == CblasRowMajor)
53   {
54      RowMajorStrg = 1;
55      if (Uplo == CblasLower) UL = 'U';
56      else if (Uplo == CblasUpper) UL = 'L';
57      else
58      {
59         cblas_xerbla(2, "cblas_sspr","Illegal Uplo setting, %d\n",Uplo );
60         CBLAS_CallFromC = 0;
61         RowMajorStrg = 0;
62         return;
63      }
64      #ifdef F77_CHAR
65         F77_UL = C2F_CHAR(&UL);
66      #endif
67      F77_sspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap);
68   } else cblas_xerbla(1, "cblas_sspr", "Illegal Order setting, %d\n", order);
69   CBLAS_CallFromC = 0;
70   RowMajorStrg = 0;
71   return;
72}
73