annotate ext/cblas/src/dswap.c @ 209:ccd2019190bf msvc

Some MSVC fixes, including (temporarily, probably) renaming the FFT source file to avoid getting it mixed up with the Vamp SDK one in our object dir
author Chris Cannam
date Thu, 01 Feb 2018 16:34:08 +0000
parents 45330e0d2819
children
rev   line source
Chris@202 1 /* dswap.f -- translated by f2c (version 20061008).
Chris@202 2 You must link the resulting object file with libf2c:
Chris@202 3 on Microsoft Windows system, link with libf2c.lib;
Chris@202 4 on Linux or Unix systems, link with .../path/to/libf2c.a -lm
Chris@202 5 or, if you install libf2c.a in a standard place, with -lf2c -lm
Chris@202 6 -- in that order, at the end of the command line, as in
Chris@202 7 cc *.o -lf2c -lm
Chris@202 8 Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
Chris@202 9
Chris@202 10 http://www.netlib.org/f2c/libf2c.zip
Chris@202 11 */
Chris@202 12
Chris@202 13 #include "f2c.h"
Chris@202 14 #include "blaswrap.h"
Chris@202 15
Chris@202 16 /* Subroutine */ int dswap_(integer *n, doublereal *dx, integer *incx,
Chris@202 17 doublereal *dy, integer *incy)
Chris@202 18 {
Chris@202 19 /* System generated locals */
Chris@202 20 integer i__1;
Chris@202 21
Chris@202 22 /* Local variables */
Chris@202 23 integer i__, m, ix, iy, mp1;
Chris@202 24 doublereal dtemp;
Chris@202 25
Chris@202 26 /* .. Scalar Arguments .. */
Chris@202 27 /* .. */
Chris@202 28 /* .. Array Arguments .. */
Chris@202 29 /* .. */
Chris@202 30
Chris@202 31 /* Purpose */
Chris@202 32 /* ======= */
Chris@202 33
Chris@202 34 /* interchanges two vectors. */
Chris@202 35 /* uses unrolled loops for increments equal one. */
Chris@202 36 /* jack dongarra, linpack, 3/11/78. */
Chris@202 37 /* modified 12/3/93, array(1) declarations changed to array(*) */
Chris@202 38
Chris@202 39
Chris@202 40 /* .. Local Scalars .. */
Chris@202 41 /* .. */
Chris@202 42 /* .. Intrinsic Functions .. */
Chris@202 43 /* .. */
Chris@202 44 /* Parameter adjustments */
Chris@202 45 --dy;
Chris@202 46 --dx;
Chris@202 47
Chris@202 48 /* Function Body */
Chris@202 49 if (*n <= 0) {
Chris@202 50 return 0;
Chris@202 51 }
Chris@202 52 if (*incx == 1 && *incy == 1) {
Chris@202 53 goto L20;
Chris@202 54 }
Chris@202 55
Chris@202 56 /* code for unequal increments or equal increments not equal */
Chris@202 57 /* to 1 */
Chris@202 58
Chris@202 59 ix = 1;
Chris@202 60 iy = 1;
Chris@202 61 if (*incx < 0) {
Chris@202 62 ix = (-(*n) + 1) * *incx + 1;
Chris@202 63 }
Chris@202 64 if (*incy < 0) {
Chris@202 65 iy = (-(*n) + 1) * *incy + 1;
Chris@202 66 }
Chris@202 67 i__1 = *n;
Chris@202 68 for (i__ = 1; i__ <= i__1; ++i__) {
Chris@202 69 dtemp = dx[ix];
Chris@202 70 dx[ix] = dy[iy];
Chris@202 71 dy[iy] = dtemp;
Chris@202 72 ix += *incx;
Chris@202 73 iy += *incy;
Chris@202 74 /* L10: */
Chris@202 75 }
Chris@202 76 return 0;
Chris@202 77
Chris@202 78 /* code for both increments equal to 1 */
Chris@202 79
Chris@202 80
Chris@202 81 /* clean-up loop */
Chris@202 82
Chris@202 83 L20:
Chris@202 84 m = *n % 3;
Chris@202 85 if (m == 0) {
Chris@202 86 goto L40;
Chris@202 87 }
Chris@202 88 i__1 = m;
Chris@202 89 for (i__ = 1; i__ <= i__1; ++i__) {
Chris@202 90 dtemp = dx[i__];
Chris@202 91 dx[i__] = dy[i__];
Chris@202 92 dy[i__] = dtemp;
Chris@202 93 /* L30: */
Chris@202 94 }
Chris@202 95 if (*n < 3) {
Chris@202 96 return 0;
Chris@202 97 }
Chris@202 98 L40:
Chris@202 99 mp1 = m + 1;
Chris@202 100 i__1 = *n;
Chris@202 101 for (i__ = mp1; i__ <= i__1; i__ += 3) {
Chris@202 102 dtemp = dx[i__];
Chris@202 103 dx[i__] = dy[i__];
Chris@202 104 dy[i__] = dtemp;
Chris@202 105 dtemp = dx[i__ + 1];
Chris@202 106 dx[i__ + 1] = dy[i__ + 1];
Chris@202 107 dy[i__ + 1] = dtemp;
Chris@202 108 dtemp = dx[i__ + 2];
Chris@202 109 dx[i__ + 2] = dy[i__ + 2];
Chris@202 110 dy[i__ + 2] = dtemp;
Chris@202 111 /* L50: */
Chris@202 112 }
Chris@202 113 return 0;
Chris@202 114 } /* dswap_ */