aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cblas/src/cblas_zgerc.c
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2023-07-30 16:42:12 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2023-07-30 16:42:12 +0300
commitc3f888e801f16a6a34204639b386a77340acf4e9 (patch)
tree46d965a71238a5e6a9c4a0244d0ac64e09bb4540 /contrib/libs/cblas/src/cblas_zgerc.c
parent6a4a0ea7b10e768714b024f72f84e88a4448b503 (diff)
downloadydb-c3f888e801f16a6a34204639b386a77340acf4e9.tar.gz
Intermediate changes
Diffstat (limited to 'contrib/libs/cblas/src/cblas_zgerc.c')
-rw-r--r--contrib/libs/cblas/src/cblas_zgerc.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/contrib/libs/cblas/src/cblas_zgerc.c b/contrib/libs/cblas/src/cblas_zgerc.c
new file mode 100644
index 0000000000..2acde748e4
--- /dev/null
+++ b/contrib/libs/cblas/src/cblas_zgerc.c
@@ -0,0 +1,84 @@
+/*
+ * cblas_zgerc.c
+ * The program is a C interface to zgerc.
+ *
+ * Keita Teranishi 5/20/98
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include "cblas.h"
+#include "cblas_f77.h"
+void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda)
+{
+#ifdef F77_INT
+ F77_INT F77_M=M, F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY;
+#else
+ #define F77_M M
+ #define F77_N N
+ #define F77_incX incX
+ #define F77_incY incy
+ #define F77_lda lda
+#endif
+
+ int n, i, tincy, incy=incY;
+ double *y=(double *)Y, *yy=(double *)Y, *ty, *st;
+
+ extern int CBLAS_CallFromC;
+ extern int RowMajorStrg;
+ RowMajorStrg = 0;
+
+ CBLAS_CallFromC = 1;
+ if (order == CblasColMajor)
+ {
+ F77_zgerc( &F77_M, &F77_N, alpha, X, &F77_incX, Y, &F77_incY, A,
+ &F77_lda);
+ } else if (order == CblasRowMajor)
+ {
+ RowMajorStrg = 1;
+ if (N > 0)
+ {
+ n = N << 1;
+ y = malloc(n*sizeof(double));
+
+ ty = y;
+ if( incY > 0 ) {
+ i = incY << 1;
+ tincy = 2;
+ st= y+n;
+ } else {
+ i = incY *(-2);
+ tincy = -2;
+ st = y-2;
+ y +=(n-2);
+ }
+ do
+ {
+ *y = *yy;
+ y[1] = -yy[1];
+ y += tincy ;
+ yy += i;
+ }
+ while (y != st);
+ y = ty;
+
+ #ifdef F77_INT
+ F77_incY = 1;
+ #else
+ incy = 1;
+ #endif
+ }
+ else y = (double *) Y;
+
+ F77_zgeru( &F77_N, &F77_M, alpha, y, &F77_incY, X, &F77_incX, A,
+ &F77_lda);
+ if(Y!=y)
+ free(y);
+
+ } else cblas_xerbla(1, "cblas_zgerc", "Illegal Order setting, %d\n", order);
+ CBLAS_CallFromC = 0;
+ RowMajorStrg = 0;
+ return;
+}