gendiag.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 Abs(x) ( ( (x) >= 0) ? (x) : -( x) )
00007 
00008 #define DIAG(Type) {\
00009 Type *DX;\
00010 Type *DY;\
00011     DX=(Type *)dx;\
00012     DY=(Type *)dy;\
00013     --DY;\
00014     for (i = 1; i <= nn*nn; ++i) {\
00015        DY[i] = 0;}\
00016     if (*k>=0) {\
00017       iy=1+(*k)*nn;}\
00018     else {\
00019       iy=1-(*k);}\
00020     for (i = 0; i < *n; ++i) {\
00021        DY[iy+i*(nn+1)] = DX[i];}\
00022  }
00023 
00024 int C2F(gendiag)(typ,n,k,dx,dy) 
00025 integer *n;
00026 integer *k;
00027 integer *typ;
00028 int *dx;
00029 int *dy;
00030 {
00031   static integer i, iy, nn;
00032 
00033   nn = *n+Abs(*k);
00034 
00035   switch (*typ) {
00036   case 1:
00037     DIAG(integer1);
00038     break;
00039   case 2:
00040     DIAG(integer2);
00041     break;
00042   case 4:
00043     DIAG(integer);
00044     break;
00045   case 11:
00046     DIAG(unsigned char);
00047     break;
00048   case 12:
00049     DIAG(unsigned short);
00050     break;
00051   case 14:
00052     DIAG(unsigned int);
00053     break;
00054   }
00055   return 0;
00056 }
00057 

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