28void tri_direct(
unsigned *data,
unsigned *iwork,
unsigned *index,
int n,
int irecl,
unsigned *inds)
33 unsigned range=65535,mask=0xffff;
36 for(k=irecl-1;k >= 0;k--){
39 for(i = 0 ;i < range+2 ; i++) iwork[i] = 0 ;
40 for(i = 0 ;i <
n ; i++){
41 iwork[(data[irecl*index[i]+k] & mask) + 1] += 1 ;
43 for(i = 0 ;i < range ; i++) iwork[i+1] += iwork[i];
44 for(i = 0 ;i <
n ; i++){
45 j = data[irecl*index[i]+k] & mask;
46 inds[iwork[j]] = index[i] ;
51 for(i = 0 ;i < range+2 ; i++) iwork[i] = 0 ;
52 for(i = 0 ;i <
n ; i++) {
53 iwork[((data[irecl*inds[i]+k] >> 16) & mask) + 1] += 1 ;
55 for(i = 0 ;i < range ; i++) iwork[i+1] += iwork[i];
56 for(i = 0 ;i <
n ; i++){
57 j = (data[irecl*inds[i]+k] >> 16) & mask;
58 index[iwork[j]] = inds[i] ;
64void my_orders_(
int *mode,
unsigned *iwork,
unsigned *data,
unsigned *index,
int *
n,
int *irecl)
68 for(i = 0 ;i < *
n ; i++) index[i] = i ;
70 for(i = 0 ;i < *
n ; i++) index[i] += 1 ;
71 }
else if(*mode == 10){
72 for(i = 0 ;i < *
n ; i++) index[i] -= 1 ;
74 for(i = 0 ;i < *
n ; i++) index[i] += 1 ;
80{
my_orders_(mode,(
unsigned*)iwork,(
unsigned*)data,(
unsigned*)index,
n,irecl);}
82void my_orders(
int *mode,
int *iwork,
int *data,
int *index,
int *
n,
int *irecl)
83{
my_orders_(mode,(
unsigned*)iwork,(
unsigned*)data,(
unsigned*)index,
n,irecl);}
85void my_orders__(
int *mode,
int *iwork,
int *data,
int *index,
int *
n,
int *irecl)
86{
my_orders_(mode,(
unsigned*)iwork,(
unsigned*)data,(
unsigned*)index,
n,irecl);}
void my_orders__(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
void _FCALL MY_ORDERS(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
void tri_direct(unsigned *data, unsigned *iwork, unsigned *index, int n, int irecl, unsigned *inds)
void my_orders_(int *mode, unsigned *iwork, unsigned *data, unsigned *index, int *n, int *irecl)