genmmul.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 static integer c1 = 1;
00006 
00007 extern int C2F(gendot)(integer *typ,integer *n,void *dx,integer *incx,void *dy,integer *incy); /* Defined in SCI/routines/int/gendot.c */
00008 
00009 #define MMUL(Type) {\
00010 Type *A;\
00011 Type *B;\
00012 Type *C;\
00013     A=(Type *)a;\
00014     --A;\
00015     B=(Type *)b;\
00016     --B;\
00017     C=(Type *)c;\
00018     --C;\
00019     for (j = 1; j <= i1; ++j) {\
00020         i2 = *l;\
00021         for (i = 1; i <= i2; ++i) \
00022             C[ic + i] = C2F(gendot)(typ,m, &A[i], na, &B[ib], &c1);\
00023         ic += *nc;ib += *nb;\
00024     }\
00025 }
00026 
00027 int C2F(genmmul)(typ, a, na, b, nb, c, nc, l, m, n)
00028 integer *na, *nb, *nc, *m, *n, *l;
00029 integer *typ;
00030 int *a;
00031 int *b;
00032 int *c;
00033 {
00034   static integer i1, i2;
00035   static integer i, j, ib, ic;
00036   ib = 1;
00037   ic = 0;
00038   i1 = *n;
00039 
00040 
00041   switch (*typ) {
00042   case 1:
00043     MMUL(integer1);
00044     break;
00045   case 2:
00046     MMUL(integer2);
00047     break;
00048   case 4:
00049     MMUL(integer);
00050     break;
00051   case 11:
00052     MMUL(unsigned char);
00053     break;
00054   case 12:
00055     MMUL(unsigned short);
00056     break;
00057   case 14:
00058     MMUL(unsigned int);
00059     break;
00060   }
00061   return 0;
00062 }
00063 

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