genkron.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 KRON(Type) {\
00007 Type *DX;\
00008 Type *DY;\
00009 Type *DR;\
00010     DX=(Type *)dx;\
00011     --DX;\
00012     DY=(Type *)dy;\
00013     --DY;\
00014     DR=(Type *)dr;\
00015     --DR;\
00016     kx1 = 1 - ix;\
00017     kk1 = -*ny;\
00018     for (jx = 1; jx <= *nx; ++jx) {\
00019       ky = 1;\
00020       kx1 = kx1 + ix;\
00021       kk1 = kk1 + *ny;\
00022       for (jy = 1; jy <= *ny; ++jy){\
00023         kx = kx1;\
00024         kk = 1 + (jy - 1 + kk1) * ir;\
00025         for (i = 1; i <= *mx; ++i){\
00026           for (l = 0; l < *my; ++l)\
00027                DR[kk + l] = DY[ky + l] * DX[kx];\
00028              kk = kk + *my;\
00029              kx = kx + 1;}\
00030            ky = ky + iy;}}\
00031 }
00032 
00033 
00034 int C2F(genkron)(typ,dx,incx,mx,nx,dy,incy,my,ny,dr,incr)
00035 integer *incx, *mx, *nx;
00036 integer *incy, *my, *ny;
00037 integer *incr;
00038 integer *typ;
00039 int *dx;
00040 int *dy;
00041 int *dr;
00042 {
00043   static integer i, ix, iy, ir, jx, jy, l, kk1, kx1, kk, kx, ky;
00044   ix = *incx;
00045   iy = *incy;
00046   ir = *incr;
00047 
00048   switch (*typ) {
00049   case 1:
00050     KRON(integer1);
00051     break;
00052   case 2:
00053     KRON(integer2);
00054     break;
00055   case 4:
00056     KRON(integer);
00057     break;
00058   case 11:
00059     KRON(unsigned char);
00060     break;
00061   case 12:
00062     KRON(unsigned short);
00063     break;
00064   case 14:
00065     KRON(unsigned int);
00066     break;
00067   }
00068   return 0;
00069 }
00070 

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