Fix f2c compilation
[scilab.git] / scilab / modules / elementary_functions / src / c / unsfdcopy.c
1 /*
2  * Copyright (C) 1978-1993 - Jack Dongarra, linpack
3  * Modified 12/3/93, array(1) declarations changed to array(*)
4  * Copyright (C) 2007 - INRIA - Allan CORNET (translation to C)
5  */
6
7 /*--------------------------------------------------------------------------*/
8 /* rewrite unsfdcopy.f */
9 /*--------------------------------------------------------------------------*/
10 /* WARNING :*/
11 /* ALWAYS BUILD unsfdcopy without optimization (Blended) */
12 /* unsfdcopy same thing as scidcopy but built without optimization */
13 /*--------------------------------------------------------------------------*/
14 #include <string.h> /* memcpy */
15 #include "machine.h"
16 #include "unsfdcopy.h"
17 /*--------------------------------------------------------------------------*/
18 int C2F(unsfdcopy)(int *n, long long *dx, int *incx, long long *dy, int *incy)
19 {
20     if (*n <= 0)
21     {
22         return 0;
23     }
24
25     if ( (*incx == 1) && (*incy == 1) )
26     {
27         /*  code for both increments equal to 1 */
28         /*  clean-up loop */
29         memmove(dy , dx , (*n * sizeof(double)) );
30     }
31     else
32     {
33         int i = 0;
34
35         /* code for unequal increments or equal increments */
36         /* not equal to 1 */
37         int ix = *incx >= 0 ? 0 : (1 - *n) * *incx;
38         int iy = *incy >= 0 ? 0 : (1 - *n) * *incy ;
39
40         for (i = 0; i < *n; i++)
41         {
42             dy[iy] = dx[ix];
43             ix += *incx;
44             iy += *incy;
45         }
46     }
47     return 0;
48 }
49 /*--------------------------------------------------------------------------*/