genadd.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 ADD(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 <= nv; ++i) \
00015          DY[i] = DX[i] + DY[i];\
00016     else {\
00017       ix = 1; iy = 1;\
00018       if (*incx < 0) ix = (-nv + 1) * *incx + 1;\
00019       if (*incy < 0) iy = (-nv + 1) * *incy + 1;\
00020       for (i = 1; i <= nv; ++i) {\
00021         DY[iy] = DX[ix] + DY[iy];\
00022         ix += *incx; iy += *incy;\
00023       }\
00024     }\
00025 }
00026 
00027 int C2F(genadd1)(typ, n, dx, incx, dy, incy)
00028 integer *n;
00029 integer *incx;
00030 integer *incy;
00031 integer *typ;
00032 int *dx;
00033 int *dy;
00034 {
00035   static integer i, ix, iy, nv;
00036   nv=*n;
00037   if (nv <= 0) return 0;
00038 
00039 
00040   switch (*typ) {
00041   case 1:
00042     ADD(integer1);
00043     break;
00044   case 2:
00045     ADD(integer2);
00046     break;
00047   case 4:
00048     ADD(integer);
00049     break;
00050   case 11:
00051     ADD(unsigned char);
00052     break;
00053   case 12:
00054     ADD(unsigned short);
00055     break;
00056   case 14:
00057     ADD(unsigned int);
00058     break;
00059   }
00060   return 0;
00061 }
00062 

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