genmdiag.c File Reference

#include "machine.h"
#include "genmdiag.h"

Include dependency graph for genmdiag.c:

Go to the source code of this file.

Defines

#define Min(x, y)   (((x)<(y))?(x):(y))
#define Max(x, y)   (((x)>(y))?(x):(y))
#define MDIAG(Type)

Typedefs

typedef signed char integer1
typedef short integer2

Functions

int C2F() genmdiag (integer *typ, integer *m, integer *n, integer *k, int *dx, int *dy)


Define Documentation

#define Max ( x,
y   )     (((x)>(y))?(x):(y))

Definition at line 7 of file genmdiag.c.

#define MDIAG ( Type   ) 

Value:

{\
Type *DX;\
Type *DY;\
    DX=(Type *)dx;\
    --DX;\
    DY=(Type *)dy;\
    if (*k>=0)\
      ix=1+(*k)*(*m);\
    else\
      ix=1-(*k);\
    for (i = 0; i < mn; ++i) \
       DY[i] = DX[ix+i*(*m+1)];\
 }

Definition at line 9 of file genmdiag.c.

Referenced by genmdiag().

#define Min ( x,
y   )     (((x)<(y))?(x):(y))

Definition at line 6 of file genmdiag.c.


Typedef Documentation

typedef signed char integer1

Definition at line 3 of file genmdiag.c.

typedef short integer2

Definition at line 4 of file genmdiag.c.


Function Documentation

int C2F() genmdiag ( integer typ,
integer m,
integer n,
integer k,
int dx,
int dy 
)

Definition at line 24 of file genmdiag.c.

References i, ix, m, Max, MDIAG, Min, n, and typ.

00031 {
00032   static integer i, ix, mn;
00033 
00034   if (*k >= 0) 
00035     mn=Max(0,Min(*m,*n-*k));
00036   else
00037     mn=Max(0,Min(*m+*k,*n));
00038 
00039   switch (*typ) {
00040   case 1:
00041     MDIAG(integer1);
00042     break;
00043   case 2:
00044     MDIAG(integer2);
00045     break;
00046   case 4:
00047     MDIAG(integer);
00048     break;
00049   case 11:
00050     MDIAG(unsigned char);
00051     break;
00052   case 12:
00053     MDIAG(unsigned short);
00054     break;
00055   case 14:
00056     MDIAG(unsigned int);
00057     break;
00058   }
00059   return 0;
00060 }


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