text: #include "clapack.h"
  
  /* Subroutine */ int sswap_(integer* n, real* sx, integer* incx, real* sy,
                              integer* incy) {
      /* System generated locals */
      integer i__1;
  
      /* Local variables */
      integer i__, m, ix, iy, mp1;
      real stemp;
  
      /*     .. Scalar Arguments .. */
      /*     .. */
      /*     .. Array Arguments .. */
      /*     .. */
  
      /*  Purpose */
      /*  ======= */
  
      /*     interchanges two vectors. */
      /*     uses unrolled loops for increments equal to 1. */
      /*     jack dongarra, linpack, 3/11/78. */
      /*     modified 12/3/93, array(1) declarations changed to array(*) */
  
  
      /*     .. Local Scalars .. */
      /*     .. */
      /*     .. Intrinsic Functions .. */
      /*     .. */
      /* Parameter adjustments */
      --sy;
      --sx;
  
      /* Function Body */
      if (*n <= 0) {
          return 0;
      }
      if (*incx == 1 && *incy == 1) {
          goto L20;
      }
  
      /*       code for unequal increments or equal increments not equal */
      /*         to 1 */
  
      ix = 1;
      iy = 1;
      if (*incx < 0) {
          ix = (-(*n) + 1) * *incx + 1;
      }
      if (*incy < 0) {
          iy = (-(*n) + 1) * *incy + 1;
      }
      i__1 = *n;
      for (i__ = 1; i__ <= i__1; ++i__) {
          stemp = sx[ix];
          sx[ix] = sy[iy];
          sy[iy] = stemp;
          ix += *incx;
          iy += *incy;
          /* L10: */
      }
      return 0;
  
      /*       code for both increments equal to 1 */
  
  
      /*       clean-up loop */
  
  L20:
      m = *n % 3;
      if (m == 0) {
          goto L40;
      }
      i__1 = m;
      for (i__ = 1; i__ <= i__1; ++i__) {
          stemp = sx[i__];
          sx[i__] = sy[i__];
          sy[i__] = stemp;
          /* L30: */
      }
      if (*n < 3) {
          return 0;
      }
  L40:
      mp1 = m + 1;
      i__1 = *n;
      for (i__ = mp1; i__ <= i__1; i__ += 3) {
          stemp = sx[i__];
          sx[i__] = sy[i__];
          sy[i__] = stemp;
          stemp = sx[i__ + 1];
          sx[i__ + 1] = sy[i__ + 1];
          sy[i__ + 1] = stemp;
          stemp = sx[i__ + 2];
          sx[i__ + 2] = sy[i__ + 2];
          sy[i__ + 2] = stemp;
          /* L50: */
      }
      return 0;
  } /* sswap_ */
  