CSHIFT(3I) Last changed: 1-6-98
CSHIFT - Performs a circular shift on an array expression
CSHIFT ([ARRAY=]array, [SHIFT=]shift [, [DIM=]dim])
UNICOS, UNICOS/mk, and IRIX systems
Fortran 90
The CSHIFT intrinsic function performs a circular shift on an array
expression of rank 1 or performs circular shifts on all the complete
rank 1 sections along a given array expression of rank 2 or greater.
Elements shifted out at one end are shifted in at the other end.
Different sections can be shifted by different amounts and in
different directions; positive for left shifts, negative for right
shifts.
CSHIFT accepts the following arguments:
array Can be of any type. It must not be a scalar.
shift Must be integer. If array has rank 1, shift must be a
scalar. Otherwise, shift must be scalar or have rank n-1
and have
shape (d , d , ..., d , d , ..., d ),
1 2 dim-1 dim+1 n
where (d , d , ..., d )
1 2 n
is the shape of array.
dim Must be a scalar. It is an integer with a value in the
range 1 <= dim <= n, where n is the rank of array. If dim
is omitted, a value of 1 is assumed.
CSHIFT is a transformational function. The name of this intrinsic
cannot be passed as an argument.
The result is an array of the same type, type parameters, and shape as
array.
If array has rank 1, element i of the result is
array(1 + modulo(i + shift - 1, size(array))).
If array has rank greater than 1,
section (s , s , ..., s , : , s , ..., s )
1 2 dim-1 dim+1 n
of the result has a value equal to
CSHIFT(array (s , s , ..., s , : , s , ..., s ), sh, 1),
1 2 dim-1 dim+1 n
where sh is shift or
shift(s , s , ..., s , s , ..., s )
1 2 dim-1 dim+1 n
Example 1: If V is a rank 1 array [1, 2, 3, 4, 5, 6], the effect of
shifting V circularly to the left by two positions is achieved by
CSHIFT ( V, SHIFT = 2), which has the value [3, 4, 5, 6, 1, 2].
Specifying CSHIFT ( V, SHIFT = -2 ) achieves a circular shift to the
right by two positions and has the value [5, 6, 1, 2, 3, 4].
Example 2: The rows of an array of rank 2 can all be shifted by the
same amount or by different amounts. Assume M is the following array:
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |
The value of CSHIFT(M, SHIFT =-1, DIM = 2) is as follows:
| 3 1 2 |
| 6 4 5 |
| 9 7 8 |
The value of CSHIFT(M, SHIFT =(/ -1, 1, 0 /), DIM = 2) is as follows:
| 3 1 2 |
| 5 6 4 |
| 7 8 9 |
Example 3: N is the following array:
| 1 2 3 4 |
| 5 6 7 8 |
| 9 10 11 12 |
The value of CSHIFT(N, SHIFT =-1, DIM = 1) is as follows:
| 9 10 11 12 |
| 1 2 3 4 |
| 5 6 7 8 |
With an array section of multidimensional array N, the value of
SHIFT(N(2:3,2:4), SHIFT=-1, DIM=1) is as follows:
| 10 11 12 |
| 6 7 8 |
Intrinsic Procedures Reference Manual, publication SR-2138, for the
printed version of this man page.
CSHIFT(3I) Last changed: 1-6-98
CSHIFT - Performs a circular shift on an array expression
CSHIFT ([ARRAY=]array, [SHIFT=]shift [, [DIM=]dim])
UNICOS, UNICOS/mk, and IRIX systems
Fortran 90
The CSHIFT intrinsic function performs a circular shift on an array
expression of rank 1 or performs circular shifts on all the complete
rank 1 sections along a given array expression of rank 2 or greater.
Elements shifted out at one end are shifted in at the other end.
Different sections can be shifted by different amounts and in
different directions; positive for left shifts, negative for right
shifts.
CSHIFT accepts the following arguments:
array Can be of any type. It must not be a scalar.
shift Must be integer. If array has rank 1, shift must be a
scalar. Otherwise, shift must be scalar or have rank n-1
and have
shape (d , d , ..., d , d , ..., d ),
1 2 dim-1 dim+1 n
where (d , d , ..., d )
1 2 n
is the shape of array.
dim Must be a scalar. It is an integer with a value in the
range 1 <= dim <= n, where n is the rank of array. If dim
is omitted, a value of 1 is assumed.
CSHIFT is a transformational function. The name of this intrinsic
cannot be passed as an argument.
The result is an array of the same type, type parameters, and shape as
array.
If array has rank 1, element i of the result is
array(1 + modulo(i + shift - 1, size(array))).
If array has rank greater than 1,
section (s , s , ..., s , : , s , ..., s )
1 2 dim-1 dim+1 n
of the result has a value equal to
CSHIFT(array (s , s , ..., s , : , s , ..., s ), sh, 1),
1 2 dim-1 dim+1 n
where sh is shift or
shift(s , s , ..., s , s , ..., s )
1 2 dim-1 dim+1 n
Example 1: If V is a rank 1 array [1, 2, 3, 4, 5, 6], the effect of
shifting V circularly to the left by two positions is achieved by
CSHIFT ( V, SHIFT = 2), which has the value [3, 4, 5, 6, 1, 2].
Specifying CSHIFT ( V, SHIFT = -2 ) achieves a circular shift to the
right by two positions and has the value [5, 6, 1, 2, 3, 4].
Example 2: The rows of an array of rank 2 can all be shifted by the
same amount or by different amounts. Assume M is the following array:
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |
The value of CSHIFT(M, SHIFT =-1, DIM = 2) is as follows:
| 3 1 2 |
| 6 4 5 |
| 9 7 8 |
The value of CSHIFT(M, SHIFT =(/ -1, 1, 0 /), DIM = 2) is as follows:
| 3 1 2 |
| 5 6 4 |
| 7 8 9 |
Example 3: N is the following array:
| 1 2 3 4 |
| 5 6 7 8 |
| 9 10 11 12 |
The value of CSHIFT(N, SHIFT =-1, DIM = 1) is as follows:
| 9 10 11 12 |
| 1 2 3 4 |
| 5 6 7 8 |
With an array section of multidimensional array N, the value of
SHIFT(N(2:3,2:4), SHIFT=-1, DIM=1) is as follows:
| 10 11 12 |
| 6 7 8 |
Intrinsic Procedures Reference Manual, publication SR-2138, for the
printed version of this man page.
[ Back ]
|