Mercurial > hg > qm-dsp
comparison ext/clapack/src/s_copy.c @ 430:335af74a25b6
Merge from branch clapack-included
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 30 Sep 2016 16:24:24 +0100 |
parents | 905e45637745 |
children |
comparison
equal
deleted
inserted
replaced
426:a23b9f8b4a59 | 430:335af74a25b6 |
---|---|
1 /* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the | |
2 * target of an assignment to appear on its right-hand side (contrary | |
3 * to the Fortran 77 Standard, but in accordance with Fortran 90), | |
4 * as in a(2:5) = a(4:7) . | |
5 */ | |
6 | |
7 #include "f2c.h" | |
8 #ifdef __cplusplus | |
9 extern "C" { | |
10 #endif | |
11 | |
12 /* assign strings: a = b */ | |
13 | |
14 #ifdef KR_headers | |
15 VOID s_copy(a, b, la, lb) register char *a, *b; ftnlen la, lb; | |
16 #else | |
17 void s_copy(register char *a, register char *b, ftnlen la, ftnlen lb) | |
18 #endif | |
19 { | |
20 register char *aend, *bend; | |
21 | |
22 aend = a + la; | |
23 | |
24 if(la <= lb) | |
25 #ifndef NO_OVERWRITE | |
26 if (a <= b || a >= b + la) | |
27 #endif | |
28 while(a < aend) | |
29 *a++ = *b++; | |
30 #ifndef NO_OVERWRITE | |
31 else | |
32 for(b += la; a < aend; ) | |
33 *--aend = *--b; | |
34 #endif | |
35 | |
36 else { | |
37 bend = b + lb; | |
38 #ifndef NO_OVERWRITE | |
39 if (a <= b || a >= bend) | |
40 #endif | |
41 while(b < bend) | |
42 *a++ = *b++; | |
43 #ifndef NO_OVERWRITE | |
44 else { | |
45 a += lb; | |
46 while(b < bend) | |
47 *--a = *--bend; | |
48 a += lb; | |
49 } | |
50 #endif | |
51 while(a < aend) | |
52 *a++ = ' '; | |
53 } | |
54 } | |
55 #ifdef __cplusplus | |
56 } | |
57 #endif |