genmin2.c

Go to the documentation of this file.
00001 #include "machine.h"
00002 #include "genmin2.h"
00003 typedef signed char integer1;
00004 typedef short integer2;
00005 /*     Author: Serge Steer, Copyright INRIA */
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   /*    printf("%d %d\n",*xtyp,*ytyp);*/
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 

Generated on Sun Mar 4 15:03:57 2007 for Scilab [trunk] by  doxygen 1.5.1