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