00001 #include "machine.h"
00002 typedef signed char integer1;
00003 typedef short integer2;
00004
00005
00006 #define VMUL(Type) {\
00007 Type *DX;\
00008 Type *DY;\
00009 DX=(Type *)dx;\
00010 --DX;\
00011 DY=(Type *)dy;\
00012 --DY;\
00013 if (*incx == 1 && *incy == 1) {\
00014 for (i = 1; i <= i1; ++i) DY[i] *= DX[i];\
00015 }\
00016 else {\
00017 ix = 1;iy = 1;\
00018 if (*incx < 0) ix = (-(*n) + 1) * *incx + 1;\
00019 if (*incy < 0) iy = (-(*n) + 1) * *incy + 1;\
00020 for (i = 1; i <= i1; ++i) {\
00021 DY[iy] *= DX[ix];\
00022 ix += *incx;iy += *incy;\
00023 }\
00024 }\
00025 }
00026
00027
00028 int C2F(genvmul)(typ,n, dx, incx, dy, incy)
00029 integer *typ;
00030 integer *n;
00031 integer1 *dx;
00032 integer *incx;
00033 integer1 *dy;
00034 integer *incy;
00035 {
00036 integer i1;
00037 static integer i, ix, iy;
00038
00039 i1 = *n;
00040
00041 if (i1 <= 0) {
00042 return 0;
00043 }
00044 switch (*typ) {
00045 case 1:
00046 VMUL(integer1);
00047 break;
00048 case 2:
00049 VMUL(integer2);
00050 break;
00051 case 4:
00052 VMUL(integer);
00053 break;
00054 case 11:
00055 VMUL(unsigned char);
00056 break;
00057 case 12:
00058 VMUL(unsigned short);
00059 break;
00060 case 14:
00061 VMUL(unsigned int);
00062 break;
00063 }
00064 return 0;
00065 }