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