genmprod.c

Go to the documentation of this file.
00001 #include "machine.h"
00002 #include "genmprod.h"
00003 typedef signed char integer1;
00004 typedef short integer2;
00005 /*     Copyright INRIA */
00006 static integer c__1 = 1;
00007 #define MPROD(Type) {\
00008 Type *A;\
00009 Type *V;\
00010     A=(Type *)a;\
00011     V=(Type *)v;\
00012     iv = 0;\
00013     if (*job == 0) {\
00014         t = 1;\
00015         for (j = 0; j < *n; ++j) \
00016             t *=  C2F(genprod)(typ,m, &A[j * (*na)], &c__1);\
00017         V[0] = (Type)t;}\
00018     else if (*job == 1) {\
00019         for (j = 0; j < *n; ++j) {\
00020             t =  C2F(genprod)(typ,m, &A[j * (*na) ], &c__1);\
00021             V[iv] = (Type)t;iv += *nv;\
00022         }}\
00023     else if (*job == 2) {\
00024         for (i = 0; i < *m; ++i) {\
00025             t =  C2F(genprod)(typ,n, &A[i], m);\
00026             V[iv] = (Type)t;iv += *nv;\
00027         }\
00028     }\
00029 }
00030 
00031 int C2F(genmprod)(integer *typ,integer *job, integer *a, integer *na, integer *m, integer *n, integer *v, integer *nv)
00032 {
00033   extern integer  C2F(genprod)();
00034   static integer  i, j, t, iv;
00035 
00036   switch (*typ) {
00037   case 1:
00038     MPROD(integer1);
00039     break;
00040   case 2:
00041     MPROD(integer2);
00042     break;
00043   case 4:
00044     MPROD(integer);
00045     break;
00046   case 11:
00047     MPROD(unsigned char);
00048     break;
00049   case 12:
00050     MPROD(unsigned short);
00051     break;
00052   case 14:
00053     MPROD(unsigned int);
00054     break;
00055   }
00056   return 0;
00057 }

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