00001 #include "machine.h"
00002 typedef signed char integer1;
00003 typedef short integer2;
00004
00005 static integer c__1 = 1;
00006 #define MCUSUM(Type) {\
00007 Type *A;\
00008 A=(Type *)a;\
00009 if (*job == 0) {\
00010 C2F(gencusum)(typ,&mn, A, &c__1);\
00011 }\
00012 else if (*job == 1) {\
00013 for (j = 0; j < *n; ++j) {\
00014 C2F(gencusum)(typ,m, &A[j * (*na) ], &c__1);\
00015 }}\
00016 else if (*job == 2) {\
00017 for (i = 0; i < *m; ++i) {\
00018 C2F(gencusum)(typ,n, &A[i], na);\
00019 }\
00020 }\
00021 }
00022
00023 int C2F(genmcusum)(typ,job, a, na, m, n)
00024 integer *typ, *job, *a, *na, *m, *n;
00025 {
00026 extern integer C2F(gencusum)();
00027 static integer i, j, mn;
00028
00029 mn=(*m)*(*n);
00030
00031 switch (*typ) {
00032 case 1:
00033 MCUSUM(integer1);
00034 break;
00035 case 2:
00036 MCUSUM(integer2);
00037 break;
00038 case 4:
00039 MCUSUM(integer);
00040 break;
00041 case 11:
00042 MCUSUM(unsigned char);
00043 break;
00044 case 12:
00045 MCUSUM(unsigned short);
00046 break;
00047 case 14:
00048 MCUSUM(unsigned int);
00049 break;
00050 }
00051 return 0;
00052 }