Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Files containing the data structures to make the CSDP library work.
[simgrid.git] / include / csdp / index.h
1 /*
2   Declarations needed to handle indexing into Fortran arrays and packed
3   arrays.
4 */
5
6 #ifndef BIT64
7
8 /*
9   First, to convert fortran i,j indices into a C vector index.
10 */
11
12 #define ijtok(iiii,jjjj,lda) ((jjjj-1)*lda+iiii-1)
13
14 /* 
15    Packed indexing.
16  */
17
18 #define ijtokp(iii,jjj,lda) ((iii+jjj*(jjj-1)/2)-1)
19
20 /*
21   Next, to convert C vector index into Fortran i,j indices.
22 */
23
24 #define ktoi(k,lda) ((k % lda)+1)
25 #define ktoj(k,lda) ((k/lda)+1)
26
27 #else
28
29 /*
30   First, to convert fortran i,j indices into a C vector index.
31 */
32
33 #define ijtok(iiii,jjjj,lda) ((jjjj-1L)*lda+iiii-1L)
34
35 /* 
36    Packed indexing.
37  */
38
39 #define ijtokp(iii,jjj,lda) (((long int)iii+(long int)jjj*(jjj-1L)/2-1L))
40
41 /*
42   Next, to convert C vector index into Fortran i,j indices.
43 */
44
45 #define ktoi(k,lda) (((long int)k % lda)+1L)
46 #define ktoj(k,lda) (((long int)k/lda)+1L)
47
48
49 #endif
50