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