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