1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#include "../machine.h"
typedef char integer1;
typedef short integer2;
/* Copyright INRIA */
#define MIN2(Xtype,Ytype) {\
Xtype *DX;\
Ytype *DY;\
DY=(Ytype *)dy;\
--DY;\
DX=(Xtype *)dx;\
--DX;\
ix = 1;\
for (i = 1; i <= *n; ++i) {\
if ((Ytype)DX[ix] < DY[i]) {\
DY[i] = (Ytype)DX[ix];\
ind[i-1] = *no;}\
ix = ix + *incx;\
}\
}
int C2F(genmin2)(n, dx, incx, xtyp, dy, ytyp, ind, no)
integer *n, *no;
integer *xtyp, *ytyp;
integer *incx;
void *dx;
void *dy;
integer *ind;
{
static integer i,ix;
switch (*xtyp) {
case 0:
switch (*ytyp) {
case 0:
MIN2(double,double);
break;
}
break;
case 1:
switch (*ytyp) {
case 0:
MIN2(integer1,double);
break;
case 1:
MIN2(integer1,integer1);
break;
}
break;
case 2:
switch (*ytyp) {
case 0:
MIN2(integer2,double);
break;
case 2:
MIN2(integer2,integer2);
break;
case 4:
MIN2(integer2,integer);
break;
case 12:
MIN2(integer2,unsigned short);
break;
case 14:
MIN2(integer2,unsigned int);
break;
}
break;
case 4:
switch (*ytyp) {
case 0:
MIN2(integer,double);
break;
case 4:
MIN2(integer,integer);
break;
case 14:
MIN2(integer,unsigned int);
break;
}
break;
}
}
|