Extract fractional parts |
| SFRAC/DFRAC | |
|
| incy > 0 | y is stored forward in array y; that is, |
|
|
| yi is stored in y((i−1)⋅incy+1). |
|
| incy < 0 | y is stored backward in array y; that |
|
|
| is, yi is stored in y((i−n)⋅incy+1). |
|
| Use incy = 1 if the vector y is stored contiguously in | |
|
| array y; that is, if yi is stored in y(i). Refer to “BLAS | |
|
| Indexing Conventions” in the introduction to this | |
|
| chapter. |
|
Output | y | Array of length leny = (n−1)⋅incy+1 containing the | |
|
| ||
|
| fractional part of xi. | |
Notes | The fractional part of a number is either zero or of the same sign as the number. |
Thus, the fractional parts of −1.4, −1.0, 0.6, and 2.0 are −0.4, 0.0, 0.6, and 0.0, respectively. x and y can be the same array if incx = incy. Otherwise, the result is unspecified if x and y overlap such that any element of x shares a memory location with any element of y.
Fortran Equivalent
SUBROUTINE SFRAC (N, X,INCX, Y,INCY) REAL*4 X(*),Y(*)
IF ( N .LE. 0 ) RETURN IX = 1
IY = 1
IF ( INCX .LT. 0 ) IX = 1 -
Y(IY) = X(IX) - AINT ( X(IX) ) IX = IX + INCX
IY = IY + INCY
10CONTINUE RETURN END
Example Extract the fractional parts of the elements of the REAL*8 vector x into y, where x and y are vectors 10 elements long stored in
INTEGER*4 N,INCX,INCY
REAL*8 | X(20),Y(20) | |
N = 10 |
| |
INCX = 1 |
| |
INCY | = 1 |
|
CALL | DFRAC (N,X,INCX,Y,INCY) |
Chapter 2 Basic Vector Operations 93