00001 #include "machine.h"
00002 #include "genmin2.h"
00003 typedef signed char integer1;
00004 typedef short integer2;
00005
00006
00007 #define MIN2(Xtype,Ytype) {\
00008 Xtype *DX;\
00009 Ytype *DY;\
00010 DY=(Ytype *)dy;\
00011 --DY;\
00012 DX=(Xtype *)dx;\
00013 --DX;\
00014 ix = 1;\
00015 for (i = 1; i <= *n; ++i) {\
00016 if ((Ytype)DX[ix] < DY[i]) {\
00017 DY[i] = (Ytype)DX[ix];\
00018 ind[i-1] = *no;}\
00019 ix = ix + *incx;\
00020 }\
00021 }
00022
00023 void C2F(genmin2)(integer *n, void *dx, integer *incx, integer *xtyp, void *dy, integer *ytyp, integer *ind, integer *no)
00024 {
00025 static integer i,ix;
00026
00027 switch (*xtyp) {
00028 case 0:
00029 switch (*ytyp) {
00030 case 0:
00031 MIN2(double,double);
00032 break;
00033 case 4:
00034 MIN2(double,integer);
00035 break;
00036 case 2:
00037 MIN2(double,integer2);
00038 break;
00039 case 1:
00040 MIN2(double,integer1);
00041 break;
00042 case 14:
00043 MIN2(double,unsigned int);
00044 break;
00045 case 12:
00046 MIN2(double,unsigned short);
00047 break;
00048 case 11:
00049 MIN2(double,unsigned char);
00050 break;
00051 }
00052 break;
00053 case 1:
00054 switch (*ytyp) {
00055 case 0:
00056 MIN2(integer1,double);
00057 break;
00058 case 4:
00059 MIN2(integer1,integer);
00060 break;
00061 case 2:
00062 MIN2(integer1,integer2);
00063 break;
00064 case 1:
00065 MIN2(integer1,integer1);
00066 break;
00067 case 14:
00068 MIN2(integer1,unsigned int);
00069 break;
00070 case 12:
00071 MIN2(integer1,unsigned short);
00072 break;
00073 case 11:
00074 MIN2(integer1,unsigned char);
00075 break;
00076 }
00077 break;
00078 case 2:
00079 switch (*ytyp) {
00080 case 0:
00081 MIN2(integer2,double);
00082 break;
00083 case 4:
00084 MIN2(integer2,integer);
00085 break;
00086 case 2:
00087 MIN2(integer2,integer2);
00088 break;
00089 case 1:
00090 MIN2(integer2,integer1);
00091 break;
00092 case 14:
00093 MIN2(integer2,unsigned int);
00094 break;
00095 case 12:
00096 MIN2(integer2,unsigned short);
00097 break;
00098 case 11:
00099 MIN2(integer2,unsigned char);
00100 break;
00101 }
00102 break;
00103 case 4:
00104 switch (*ytyp) {
00105 case 0:
00106 MIN2(integer,double);
00107 break;
00108 case 2:
00109 MIN2(integer,integer2);
00110 break;
00111 case 4:
00112 MIN2(integer,integer);
00113 break;
00114 case 11:
00115 MIN2(integer,unsigned char);
00116 break;
00117 case 12:
00118 MIN2(integer,unsigned short);
00119 break;
00120 case 14:
00121 MIN2(integer,unsigned int);
00122 break;
00123 }
00124 break;
00125 case 11:
00126 switch (*ytyp) {
00127 case 0:
00128 MIN2(unsigned char,double);
00129 break;
00130 case 4:
00131 MIN2(unsigned char,integer);
00132 break;
00133 case 2:
00134 MIN2(unsigned char,integer2);
00135 break;
00136 case 1:
00137 MIN2(unsigned char,integer1);
00138 break;
00139 case 14:
00140 MIN2(unsigned char,unsigned int);
00141 break;
00142 case 12:
00143 MIN2(unsigned char,unsigned short);
00144 break;
00145 case 11:
00146 MIN2(unsigned char,unsigned char);
00147 break;
00148 }
00149 break;
00150 case 12:
00151 switch (*ytyp) {
00152 case 0:
00153 MIN2(unsigned short,double);
00154 break;
00155 case 4:
00156 MIN2(unsigned short,integer);
00157 break;
00158 case 2:
00159 MIN2(unsigned short,integer2);
00160 break;
00161 case 1:
00162 MIN2(unsigned short,integer1);
00163 break;
00164 case 14:
00165 MIN2(unsigned short,unsigned int);
00166 break;
00167 case 12:
00168 MIN2(unsigned short,unsigned short);
00169 break;
00170 case 11:
00171 MIN2(unsigned short,unsigned char);
00172 break;
00173 }
00174 break;
00175 case 14:
00176 switch (*ytyp) {
00177 case 0:
00178 MIN2(integer,double);
00179 break;
00180 case 4:
00181 MIN2(integer,integer);
00182 break;
00183 case 2:
00184 MIN2(integer,integer2);
00185 break;
00186 case 1:
00187 MIN2(integer,integer1);
00188 break;
00189 case 14:
00190 MIN2(integer,unsigned int);
00191 break;
00192 case 12:
00193 MIN2(integer,unsigned short);
00194 break;
00195 case 11:
00196 MIN2(integer,unsigned char);
00197 break;
00198 }
00199 break;
00200 }
00201 }
00202