genvmul.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 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 }

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