genmsum.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 c__1 = 1;
00006 #define MSUM(Type) {\
00007 Type *A;\
00008 Type *V;\
00009     A=(Type *)a;\
00010     V=(Type *)v;\
00011     iv = 0;\
00012     if (*job == 0) {\
00013         t = 0;\
00014         for (j = 0; j < *n; ++j) \
00015             t +=  C2F(gensum)(typ,m, &A[j * (*na)], &c__1);\
00016         V[0] = (Type)t;}\
00017     else if (*job == 1) {\
00018         for (j = 0; j < *n; ++j) {\
00019             t =  C2F(gensum)(typ,m, &A[j * (*na) ], &c__1);\
00020             V[iv] = (Type)t;iv += *nv;\
00021         }}\
00022     else if (*job == 2) {\
00023         for (i = 0; i < *m; ++i) {\
00024             t =  C2F(gensum)(typ,n, &A[i], m);\
00025             V[iv] = (Type)t;iv += *nv;\
00026         }\
00027     }\
00028 }
00029 
00030 int C2F(genmsum)(typ,job, a, na, m, n, v, nv)
00031      integer *typ, *job, *a, *na, *m, *n, *v, *nv;
00032 {
00033   extern integer  C2F(gensum)();
00034   static integer  i, j, t, iv;
00035 
00036   switch (*typ) {
00037   case 1:
00038     MSUM(integer1);
00039     break;
00040   case 2:
00041     MSUM(integer2);
00042     break;
00043   case 4:
00044     MSUM(integer);
00045     break;
00046   case 11:
00047     MSUM(unsigned char);
00048     break;
00049   case 12:
00050     MSUM(unsigned short);
00051     break;
00052   case 14:
00053     MSUM(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