gendot.c

Go to the documentation of this file.
00001 #include "machine.h"
00002 typedef signed char integer1;
00003 typedef short integer2;
00004 /*     Copyright INRIA */
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 

Generated on Sun Mar 4 15:03:57 2007 for Scilab [trunk] by  doxygen 1.5.1