genmmax.c

Go to the documentation of this file.
00001 #include "machine.h"
00002 typedef signed char integer1;
00003 typedef short integer2;
00004 /*     Copyright INRIA */
00005 
00006 #define MMAX(Type) {\
00007 Type *DX;\
00008 Type *DY;\
00009     DX=(Type *)dx;\
00010     --DX;\
00011     DY=(Type *)dy;\
00012     --DY;\
00013       if (*job==2) {\
00014         for (l = 1; l <= *m; ++l){\
00015           DY[l] = DX[l];DK[l] = 1;\
00016           for (k = 1; k < *n; ++k) {\
00017             if (DX[l+k*ix] > DY[l]) {\
00018               DY[l] = DX[l+k*ix];DK[l] = k+1;}}}}\
00019       if (*job==1) {\
00020         for (k = 0; k < *n; ++k){\
00021           kk = k*ix;\
00022           DY[1+k*iy] = DX[1+kk];DK[1+k*iy] = 1;\
00023           for (l = 2; l <= *m; ++l) {\
00024             if (DX[l+kk] > DY[1+k*iy]) {\
00025               DY[1+k*iy] = DX[l+kk];DK[1+k*iy] = l;}}}}\
00026       if (*job==0) {\
00027         DY[1] = DX[1];DK[1] = 1;\
00028         for (k = 0; k < *n; ++k){\
00029           kk = k*ix;\
00030           for (l = 1; l <= *m; ++l) {\
00031             if (DX[l+kk] > DY[1]) {\
00032               DY[1] = DX[l+kk];DK[1] = l + kk;}}}}\
00033 }
00034 
00035 
00036 int C2F(genmmax)(typ, job, m, n, dx, incx, dy, dk, incy)
00037 integer *m, *n;
00038 integer *incx;
00039 integer *incy;
00040 integer *typ;
00041 integer *job;
00042 int *dx;
00043 int *dy;
00044 int *dk;
00045 {
00046   static integer ix, iy, l, k, kk, *DK;
00047 
00048   DK=--dk;
00049   ix = *incx;
00050   iy = *incy;
00051 
00052   switch (*typ) {
00053   case 1:
00054     MMAX(integer1);
00055     break;
00056   case 2:
00057     MMAX(integer2);
00058     break;
00059   case 4:
00060     MMAX(integer);
00061     break;
00062   case 11:
00063     MMAX(unsigned char);
00064     break;
00065   case 12:
00066     MMAX(unsigned short);
00067     break;
00068   case 14:
00069     MMAX(unsigned int);
00070     break;
00071   }
00072   return 0;
00073 }
00074 

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