Skip to content

Commit

Permalink
Move LAPACK trunk into position.
Browse files Browse the repository at this point in the history
  • Loading branch information
jason committed Oct 28, 2008
0 parents commit baba851
Show file tree
Hide file tree
Showing 4,065 changed files with 2,004,332 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
171 changes: 171 additions & 0 deletions BLAS/SRC/Makefile
@@ -0,0 +1,171 @@
include ../../make.inc

#######################################################################
# This is the makefile to create a library for the BLAS.
# The files are grouped as follows:
#
# SBLAS1 -- Single precision real BLAS routines
# CBLAS1 -- Single precision complex BLAS routines
# DBLAS1 -- Double precision real BLAS routines
# ZBLAS1 -- Double precision complex BLAS routines
#
# CB1AUX -- Real BLAS routines called by complex routines
# ZB1AUX -- D.P. real BLAS routines called by d.p. complex
# routines
#
# ALLBLAS -- Auxiliary routines for Level 2 and 3 BLAS
#
# SBLAS2 -- Single precision real BLAS2 routines
# CBLAS2 -- Single precision complex BLAS2 routines
# DBLAS2 -- Double precision real BLAS2 routines
# ZBLAS2 -- Double precision complex BLAS2 routines
#
# SBLAS3 -- Single precision real BLAS3 routines
# CBLAS3 -- Single precision complex BLAS3 routines
# DBLAS3 -- Double precision real BLAS3 routines
# ZBLAS3 -- Double precision complex BLAS3 routines
#
# The library can be set up to include routines for any combination
# of the four precisions. To create or add to the library, enter make
# followed by one or more of the precisions desired. Some examples:
# make single
# make single complex
# make single double complex complex16
# Note that these commands are not safe for parallel builds.
#
# Alternatively, the commands
# make all
# or
# make
# without any arguments creates a library of all four precisions.
# The name of the library is held in BLASLIB, which is set in the
# top-level make.inc
#
# To remove the object files after the library is created, enter
# make clean
# To force the source files to be recompiled, enter, for example,
# make single FRC=FRC
#
#---------------------------------------------------------------------
#
# Edward Anderson, University of Tennessee
# March 26, 1990
# Susan Ostrouchov, Last updated September 30, 1994
# ejr, May 2006.
#
#######################################################################

all: $(BLASLIB)

#---------------------------------------------------------
# Comment out the next 6 definitions if you already have
# the Level 1 BLAS.
#---------------------------------------------------------
SBLAS1 = isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \
srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o
$(SBLAS1): $(FRC)

CBLAS1 = scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \
cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o
$(CBLAS1): $(FRC)

DBLAS1 = idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \
drot.o drotg.o dscal.o dswap.o drotmg.o drotm.o
$(DBLAS1): $(FRC)

ZBLAS1 = dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \
zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o
$(ZBLAS1): $(FRC)

CB1AUX = isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o
$(CB1AUX): $(FRC)

ZB1AUX = idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o
$(ZB1AUX): $(FRC)

#---------------------------------------------------------------------
# The following line defines auxiliary routines needed by both the
# Level 2 and Level 3 BLAS. Comment it out only if you already have
# both the Level 2 and 3 BLAS.
#---------------------------------------------------------------------
ALLBLAS = lsame.o xerbla.o xerbla_array.o ila_len_trim.o
$(ALLBLAS) : $(FRC)

#---------------------------------------------------------
# Comment out the next 4 definitions if you already have
# the Level 2 BLAS.
#---------------------------------------------------------
SBLAS2 = sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \
strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \
sger.o ssyr.o sspr.o ssyr2.o sspr2.o
$(SBLAS2): $(FRC)

CBLAS2 = cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \
ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \
cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o
$(CBLAS2): $(FRC)

DBLAS2 = dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \
dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \
dger.o dsyr.o dspr.o dsyr2.o dspr2.o
$(DBLAS2): $(FRC)

ZBLAS2 = zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \
ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \
zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o
$(ZBLAS2): $(FRC)

#---------------------------------------------------------
# Comment out the next 4 definitions if you already have
# the Level 3 BLAS.
#---------------------------------------------------------
SBLAS3 = sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o
$(SBLAS3): $(FRC)

CBLAS3 = cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \
chemm.o cherk.o cher2k.o
$(CBLAS3): $(FRC)

DBLAS3 = dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o
$(DBLAS3): $(FRC)

ZBLAS3 = zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \
zhemm.o zherk.o zher2k.o
$(ZBLAS3): $(FRC)

ALLOBJ=$(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
$(CBLAS1) $(CB1AUX) $(CBLAS2) $(CBLAS3) $(ZBLAS1) $(ZB1AUX) \
$(ZBLAS2) $(ZBLAS3) $(ALLBLAS)

$(BLASLIB): $(ALLOBJ)
$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
$(RANLIB) $@

single: $(SBLAS1) $(ALLBLAS) $(SBLAS2) $(SBLAS3)
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(SBLAS1) $(ALLBLAS) \
$(SBLAS2) $(SBLAS3)
$(RANLIB) $(BLASLIB)

double: $(DBLAS1) $(ALLBLAS) $(DBLAS2) $(DBLAS3)
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(DBLAS1) $(ALLBLAS) \
$(DBLAS2) $(DBLAS3)
$(RANLIB) $(BLASLIB)

complex: $(CBLAS1) $(CB1AUX) $(ALLBLAS) $(CBLAS2) $(CBLAS3)
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(CBLAS1) $(CB1AUX) \
$(ALLBLAS) $(CBLAS2) $(CBLAS3)
$(RANLIB) $(BLASLIB)

complex16: $(ZBLAS1) $(ZB1AUX) $(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(ZBLAS1) $(ZB1AUX) \
$(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
$(RANLIB) $(BLASLIB)

FRC:
@FRC=$(FRC)

clean:
rm -f *.o

.f.o:
$(FORTRAN) $(OPTS) -c $< -o $@
52 changes: 52 additions & 0 deletions BLAS/SRC/caxpy.f
@@ -0,0 +1,52 @@
SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
* .. Scalar Arguments ..
COMPLEX CA
INTEGER INCX,INCY,N
* ..
* .. Array Arguments ..
COMPLEX CX(*),CY(*)
* ..
*
* Purpose
* =======
*
* CAXPY constant times a vector plus a vector.
*
* Further Details
* ===============
*
* jack dongarra, linpack, 3/11/78.
* modified 12/3/93, array(1) declarations changed to array(*)
*
* .. Local Scalars ..
INTEGER I,IX,IY
* ..
* .. External Functions ..
REAL SCABS1
EXTERNAL SCABS1
* ..
IF (N.LE.0) RETURN
IF (SCABS1(CA).EQ.0.0E+0) RETURN
IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
*
* code for unequal increments or equal increments
* not equal to 1
*
IX = 1
IY = 1
IF (INCX.LT.0) IX = (-N+1)*INCX + 1
IF (INCY.LT.0) IY = (-N+1)*INCY + 1
DO 10 I = 1,N
CY(IY) = CY(IY) + CA*CX(IX)
IX = IX + INCX
IY = IY + INCY
10 CONTINUE
RETURN
*
* code for both increments equal to 1
*
20 DO 30 I = 1,N
CY(I) = CY(I) + CA*CX(I)
30 CONTINUE
RETURN
END
46 changes: 46 additions & 0 deletions BLAS/SRC/ccopy.f
@@ -0,0 +1,46 @@
SUBROUTINE CCOPY(N,CX,INCX,CY,INCY)
* .. Scalar Arguments ..
INTEGER INCX,INCY,N
* ..
* .. Array Arguments ..
COMPLEX CX(*),CY(*)
* ..
*
* Purpose
* =======
*
* CCOPY copies a vector x to a vector y.
*
* Further Details
* ===============
*
* jack dongarra, linpack, 3/11/78.
* modified 12/3/93, array(1) declarations changed to array(*)
*
* .. Local Scalars ..
INTEGER I,IX,IY
* ..
IF (N.LE.0) RETURN
IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
*
* code for unequal increments or equal increments
* not equal to 1
*
IX = 1
IY = 1
IF (INCX.LT.0) IX = (-N+1)*INCX + 1
IF (INCY.LT.0) IY = (-N+1)*INCY + 1
DO 10 I = 1,N
CY(IY) = CX(IX)
IX = IX + INCX
IY = IY + INCY
10 CONTINUE
RETURN
*
* code for both increments equal to 1
*
20 DO 30 I = 1,N
CY(I) = CX(I)
30 CONTINUE
RETURN
END
55 changes: 55 additions & 0 deletions BLAS/SRC/cdotc.f
@@ -0,0 +1,55 @@
COMPLEX FUNCTION CDOTC(N,CX,INCX,CY,INCY)
* .. Scalar Arguments ..
INTEGER INCX,INCY,N
* ..
* .. Array Arguments ..
COMPLEX CX(*),CY(*)
* ..
*
* Purpose
* =======
*
* forms the dot product of two vectors, conjugating the first
* vector.
*
* Further Details
* ===============
*
* jack dongarra, linpack, 3/11/78.
* modified 12/3/93, array(1) declarations changed to array(*)
*
* .. Local Scalars ..
COMPLEX CTEMP
INTEGER I,IX,IY
* ..
* .. Intrinsic Functions ..
INTRINSIC CONJG
* ..
CTEMP = (0.0,0.0)
CDOTC = (0.0,0.0)
IF (N.LE.0) RETURN
IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
*
* code for unequal increments or equal increments
* not equal to 1
*
IX = 1
IY = 1
IF (INCX.LT.0) IX = (-N+1)*INCX + 1
IF (INCY.LT.0) IY = (-N+1)*INCY + 1
DO 10 I = 1,N
CTEMP = CTEMP + CONJG(CX(IX))*CY(IY)
IX = IX + INCX
IY = IY + INCY
10 CONTINUE
CDOTC = CTEMP
RETURN
*
* code for both increments equal to 1
*
20 DO 30 I = 1,N
CTEMP = CTEMP + CONJG(CX(I))*CY(I)
30 CONTINUE
CDOTC = CTEMP
RETURN
END
51 changes: 51 additions & 0 deletions BLAS/SRC/cdotu.f
@@ -0,0 +1,51 @@
COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
* .. Scalar Arguments ..
INTEGER INCX,INCY,N
* ..
* .. Array Arguments ..
COMPLEX CX(*),CY(*)
* ..
*
* Purpose
* =======
*
* CDOTU forms the dot product of two vectors.
*
* Further Details
* ===============
*
* jack dongarra, linpack, 3/11/78.
* modified 12/3/93, array(1) declarations changed to array(*)
*
* .. Local Scalars ..
COMPLEX CTEMP
INTEGER I,IX,IY
* ..
CTEMP = (0.0,0.0)
CDOTU = (0.0,0.0)
IF (N.LE.0) RETURN
IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
*
* code for unequal increments or equal increments
* not equal to 1
*
IX = 1
IY = 1
IF (INCX.LT.0) IX = (-N+1)*INCX + 1
IF (INCY.LT.0) IY = (-N+1)*INCY + 1
DO 10 I = 1,N
CTEMP = CTEMP + CX(IX)*CY(IY)
IX = IX + INCX
IY = IY + INCY
10 CONTINUE
CDOTU = CTEMP
RETURN
*
* code for both increments equal to 1
*
20 DO 30 I = 1,N
CTEMP = CTEMP + CX(I)*CY(I)
30 CONTINUE
CDOTU = CTEMP
RETURN
END

0 comments on commit baba851

Please sign in to comment.