Skip to content

Commit

Permalink
Scaling routines do a quick return if scaling with one
Browse files Browse the repository at this point in the history
 * SCAL: Quick return if scaling factor is one
 * LASCL: If cto == cfrom and neither input is NaN or Inf, skip scaling
  • Loading branch information
angsch committed May 21, 2022
1 parent 3b177e9 commit d0ad95c
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 9 deletions.
6 changes: 5 additions & 1 deletion BLAS/SRC/cscal.f
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,11 @@ SUBROUTINE CSCAL(N,CA,CX,INCX)
* .. Local Scalars ..
INTEGER I,NINCX
* ..
IF (N.LE.0 .OR. INCX.LE.0) RETURN
* .. Parameters ..
COMPLEX ONE
PARAMETER (ONE= (1.0E+0,0.0E+0))
* ..
IF (N.LE.0 .OR. INCX.LE.0 .OR. CA.EQ.ONE) RETURN
IF (INCX.EQ.1) THEN
*
* code for increment equal to 1
Expand Down
6 changes: 5 additions & 1 deletion BLAS/SRC/csscal.f
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,14 @@ SUBROUTINE CSSCAL(N,SA,CX,INCX)
* .. Local Scalars ..
INTEGER I,NINCX
* ..
* .. Parameters ..
REAL ONE
PARAMETER (ONE=1.0E+0)
* ..
* .. Intrinsic Functions ..
INTRINSIC AIMAG,CMPLX,REAL
* ..
IF (N.LE.0 .OR. INCX.LE.0) RETURN
IF (N.LE.0 .OR. INCX.LE.0 .OR. SA.EQ.ONE) RETURN
IF (INCX.EQ.1) THEN
*
* code for increment equal to 1
Expand Down
5 changes: 4 additions & 1 deletion BLAS/SRC/dscal.f
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,14 @@ SUBROUTINE DSCAL(N,DA,DX,INCX)
*
* .. Local Scalars ..
INTEGER I,M,MP1,NINCX
* .. Parameters ..
DOUBLE PRECISION ONE
PARAMETER (ONE=1.0D+0)
* ..
* .. Intrinsic Functions ..
INTRINSIC MOD
* ..
IF (N.LE.0 .OR. INCX.LE.0) RETURN
IF (N.LE.0 .OR. INCX.LE.0 .OR. DA.EQ.ONE) RETURN
IF (INCX.EQ.1) THEN
*
* code for increment equal to 1
Expand Down
6 changes: 5 additions & 1 deletion BLAS/SRC/sscal.f
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,14 @@ SUBROUTINE SSCAL(N,SA,SX,INCX)
* .. Local Scalars ..
INTEGER I,M,MP1,NINCX
* ..
* .. Parameters ..
REAL ONE
PARAMETER (ONE=1.0E+0)
* ..
* .. Intrinsic Functions ..
INTRINSIC MOD
* ..
IF (N.LE.0 .OR. INCX.LE.0) RETURN
IF (N.LE.0 .OR. INCX.LE.0 .OR. SA.EQ.ONE) RETURN
IF (INCX.EQ.1) THEN
*
* code for increment equal to 1
Expand Down
11 changes: 7 additions & 4 deletions BLAS/SRC/zdscal.f
Original file line number Diff line number Diff line change
Expand Up @@ -92,25 +92,28 @@ SUBROUTINE ZDSCAL(N,DA,ZX,INCX)
*
* .. Local Scalars ..
INTEGER I,NINCX
* .. Parameters ..
DOUBLE PRECISION ONE
PARAMETER (ONE=1.0D+0)
* ..
* .. Intrinsic Functions ..
INTRINSIC DCMPLX
INTRINSIC DBLE, DCMPLX, DIMAG
* ..
IF (N.LE.0 .OR. INCX.LE.0) RETURN
IF (N.LE.0 .OR. INCX.LE.0 .OR. DA.EQ.ONE) RETURN
IF (INCX.EQ.1) THEN
*
* code for increment equal to 1
*
DO I = 1,N
ZX(I) = DCMPLX(DA,0.0d0)*ZX(I)
ZX(I) = DCMPLX(DA*DBLE(ZX(I)),DA*DIMAG(ZX(I)))
END DO
ELSE
*
* code for increment not equal to 1
*
NINCX = N*INCX
DO I = 1,NINCX,INCX
ZX(I) = DCMPLX(DA,0.0d0)*ZX(I)
ZX(I) = DCMPLX(DA*DBLE(ZX(I)),DA*DIMAG(ZX(I)))
END DO
END IF
RETURN
Expand Down
6 changes: 5 additions & 1 deletion BLAS/SRC/zscal.f
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,11 @@ SUBROUTINE ZSCAL(N,ZA,ZX,INCX)
* .. Local Scalars ..
INTEGER I,NINCX
* ..
IF (N.LE.0 .OR. INCX.LE.0) RETURN
* .. Parameters ..
COMPLEX*16 ONE
PARAMETER (ONE= (1.0D+0,0.0D+0))
* ..
IF (N.LE.0 .OR. INCX.LE.0 .OR. ZA.EQ.ONE) RETURN
IF (INCX.EQ.1) THEN
*
* code for increment equal to 1
Expand Down
2 changes: 2 additions & 0 deletions SRC/clascl.f
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ SUBROUTINE CLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*
Expand Down
2 changes: 2 additions & 0 deletions SRC/dlascl.f
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*
Expand Down
2 changes: 2 additions & 0 deletions SRC/slascl.f
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ SUBROUTINE SLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*
Expand Down
2 changes: 2 additions & 0 deletions SRC/zlascl.f
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ SUBROUTINE ZLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*
Expand Down

0 comments on commit d0ad95c

Please sign in to comment.