annotate ext/clapack/src/s_copy.c @ 211:a41bea655151 msvc

Rename FFT back again, now we have our own project
author Chris Cannam
date Mon, 05 Feb 2018 17:40:13 +0000
parents 45330e0d2819
children
rev   line source
Chris@202 1 /* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the
Chris@202 2 * target of an assignment to appear on its right-hand side (contrary
Chris@202 3 * to the Fortran 77 Standard, but in accordance with Fortran 90),
Chris@202 4 * as in a(2:5) = a(4:7) .
Chris@202 5 */
Chris@202 6
Chris@202 7 #include "f2c.h"
Chris@202 8 #ifdef __cplusplus
Chris@202 9 extern "C" {
Chris@202 10 #endif
Chris@202 11
Chris@202 12 /* assign strings: a = b */
Chris@202 13
Chris@202 14 #ifdef KR_headers
Chris@202 15 VOID s_copy(a, b, la, lb) register char *a, *b; ftnlen la, lb;
Chris@202 16 #else
Chris@202 17 void s_copy(register char *a, register char *b, ftnlen la, ftnlen lb)
Chris@202 18 #endif
Chris@202 19 {
Chris@202 20 register char *aend, *bend;
Chris@202 21
Chris@202 22 aend = a + la;
Chris@202 23
Chris@202 24 if(la <= lb)
Chris@202 25 #ifndef NO_OVERWRITE
Chris@202 26 if (a <= b || a >= b + la)
Chris@202 27 #endif
Chris@202 28 while(a < aend)
Chris@202 29 *a++ = *b++;
Chris@202 30 #ifndef NO_OVERWRITE
Chris@202 31 else
Chris@202 32 for(b += la; a < aend; )
Chris@202 33 *--aend = *--b;
Chris@202 34 #endif
Chris@202 35
Chris@202 36 else {
Chris@202 37 bend = b + lb;
Chris@202 38 #ifndef NO_OVERWRITE
Chris@202 39 if (a <= b || a >= bend)
Chris@202 40 #endif
Chris@202 41 while(b < bend)
Chris@202 42 *a++ = *b++;
Chris@202 43 #ifndef NO_OVERWRITE
Chris@202 44 else {
Chris@202 45 a += lb;
Chris@202 46 while(b < bend)
Chris@202 47 *--a = *--bend;
Chris@202 48 a += lb;
Chris@202 49 }
Chris@202 50 #endif
Chris@202 51 while(a < aend)
Chris@202 52 *a++ = ' ';
Chris@202 53 }
Chris@202 54 }
Chris@202 55 #ifdef __cplusplus
Chris@202 56 }
Chris@202 57 #endif