00001 #include "stack-c.h"
00002
00003 extern int ex1c __PARAMS((char *ch, int *a, int *ia, float *b, int *ib, double *c, int *mc, int *nc, double *d, double *w, int *err));
00004
00005
00006
00007
00008
00009
00010
00011
00012 int intex1c(fname)
00013 char *fname;
00014 {
00015 int i1, i2;
00016 static int ierr;
00017 static int l1, m1, n1, m2, n2, l2, m3, n3, l3, m4, n4, l4, l5, l6;
00018 static int minlhs=1, minrhs=4, maxlhs=5, maxrhs=4;
00019
00020 CheckRhs(minrhs,maxrhs) ;
00021 CheckLhs(minlhs,maxlhs) ;
00022
00023
00024
00025
00026
00027
00028
00029 GetRhsVar(1, "c", &m1, &n1, &l1);
00030
00031
00032
00033
00034
00035 GetRhsVar(2, "i", &m2, &n2, &l2);
00036
00037
00038
00039
00040
00041
00042 GetRhsVar(3, "r", &m3, &n3, &l3);
00043
00044
00045
00046
00047
00048
00049 GetRhsVar(4, "d", &m4, &n4, &l4);
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 CreateVar(5, "d", &m4, &n4, &l5);
00060 CreateVar(6, "d", &m4, &n4, &l6);
00061
00062 i1 = n2 * m2;
00063 i2 = n3 * m3;
00064
00065 ex1c( cstk(l1),istk(l2), &i1, sstk(l3), &i2, stk(l4),
00066 &m4, &n4, stk(l5),stk(l6), &ierr);
00067
00068 if (ierr > 0)
00069 {
00070 Scierror(999,"%s: Internal error \r\n",fname);
00071 return 0;
00072 }
00073
00074
00075
00076
00077
00078
00079
00080 LhsVar(1) = 5;
00081 LhsVar(2) = 4;
00082 LhsVar(3) = 3;
00083 LhsVar(4) = 2;
00084 LhsVar(5) = 1;
00085 return 0;
00086 }
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102 int ex1c(ch, a, ia, b, ib, c, mc, nc, d, w, err)
00103 char *ch; int *a, *ia; float *b;
00104 int *ib; double *c; int *mc, *nc;
00105 double *d, *w; int *err;
00106 {
00107 static int i, j, k;
00108 *err = 0;
00109 if (strcmp(ch, "mul") == 0)
00110 {
00111 for (k = 0 ; k < *ib; ++k)
00112 a[k] <<= 1;
00113 for (k = 0; k < *ib ; ++k)
00114 b[k] *= (float)2.;
00115 for (i = 0 ; i < *mc ; ++i)
00116 for (j = 0 ; j < *nc ; ++j)
00117 c[i + j *(*mc) ] *= 2.;
00118 for (i = 0 ; i < *mc ; ++i)
00119 for (j = 0 ; j < *nc ; ++j)
00120 {
00121 w[i + j * (*mc) ] = (double) (i + j);
00122 d[i + j * (*mc) ] = w[i + j *(*mc)] * c[i + j *(*mc)];
00123 }
00124 }
00125 else if (strcmp(ch, "add") == 0)
00126 {
00127 for (k = 0; k < *ia ; ++k)
00128 a[k] += 2;
00129 for (k = 0 ; k < *ib ; ++k)
00130 b[k] += (float)2.;
00131 for (i = 0 ; i < *mc ; ++i)
00132 for (j = 0 ; j < *nc ; ++j)
00133 c[i + j *(*mc) ] += 2.;
00134 for (i = 0 ; i < *mc ; ++i)
00135 for (j = 0 ; j < *nc ; ++j)
00136 {
00137 w[i + j * (*mc) ] = (double) (i + j);
00138 d[i + j * (*mc) ] = w[i + j *(*mc)] + c[i + j *(*mc)];
00139 }
00140 }
00141 else
00142 {
00143 *err = 1;
00144 }
00145 return(0);
00146 }
00147
00148
00149
00150
00151
00152
00153