1 /* i7shft.f -- translated by f2c (version 20010821).
2 You must link the resulting object file with the libraries:
3 -lf2c -lm (in that order)
4 */
5
6 #include "f2c.h"
7
i7shft_(integer * n,integer * k,integer * x)8 /* Subroutine */ int i7shft_(integer *n, integer *k, integer *x)
9 {
10 /* System generated locals */
11 integer i__1;
12
13 /* Local variables */
14 static integer i__, t, k1, ii, nm1;
15
16
17 /* *** SHIFT X(K),...,X(N) LEFT CIRCULARLY ONE POSITION IF K .GT. 0. */
18 /* *** SHIFT X(-K),...,X(N) RIGHT CIRCULARLY ONE POSITION IF K .LT. 0. */
19
20
21
22 /* Parameter adjustments */
23 --x;
24
25 /* Function Body */
26 if (*k < 0) {
27 goto L20;
28 }
29 if (*k >= *n) {
30 goto L999;
31 }
32 nm1 = *n - 1;
33 t = x[*k];
34 i__1 = nm1;
35 for (i__ = *k; i__ <= i__1; ++i__) {
36 /* L10: */
37 x[i__] = x[i__ + 1];
38 }
39 x[*n] = t;
40 goto L999;
41
42 L20:
43 k1 = -(*k);
44 if (k1 >= *n) {
45 goto L999;
46 }
47 t = x[*n];
48 nm1 = *n - k1;
49 i__1 = nm1;
50 for (ii = 1; ii <= i__1; ++ii) {
51 i__ = *n - ii;
52 x[i__ + 1] = x[i__];
53 /* L30: */
54 }
55 x[k1] = t;
56 L999:
57 return 0;
58 /* *** LAST LINE OF I7SHFT FOLLOWS *** */
59 } /* i7shft_ */
60
61