gentriu.c

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

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