00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include <Stiostream.h>
00038 #include "StMicky.h"
00039
00040 inline double dabs(double d){ return d>0?d: -d;}
00041 inline int min(int n1, int n2){ return n1 < n2 ? n1 : n2;}
00042
00043
00044
00045 StMicky::StMicky(){ Minit(); }
00046
00047
00048 void StMicky::Prtest(){
00049 if (param_1.ntest <= 0 ) return;
00050 if (param_1.nfail) cout << " TESTS FAIL ";
00051 else cout << " Tests pass ";
00052 for (int i =0;i<=param_1.ntest;i++) cout << param_1.mtestv[i] << " ";
00053 cout << endl;
00054 param_1.ntest = 0;
00055 };
00056
00057
00058 void StMicky::Minit()
00059 {
00060
00061
00062 static struct {
00063 char e_1[188];
00064 int e_2;
00065 } equiv_7 = { {' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', '1', ' ', ' ',
00066 ' ', '2', ' ', ' ', ' ', '3', ' ', ' ', ' ', '4', ' ', ' ',
00067 ' ', '5', ' ', ' ', ' ', '6', ' ', ' ', ' ', '7', ' ', ' ',
00068 ' ', '8', ' ', ' ', ' ', '9', ' ', ' ', ' ', 'A', ' ', ' ',
00069 ' ', 'B', ' ', ' ', ' ', 'C', ' ', ' ', ' ', 'D', ' ', ' ',
00070 ' ', 'E', ' ', ' ', ' ', 'F', ' ', ' ', ' ', 'G', ' ', ' ',
00071 ' ', 'H', ' ', ' ', ' ', 'I', ' ', ' ', ' ', 'J', ' ', ' ',
00072 ' ', 'K', ' ', ' ', ' ', 'L', ' ', ' ', ' ', 'M', ' ', ' ',
00073 ' ', 'N', ' ', ' ', ' ', 'O', ' ', ' ', ' ', 'P', ' ', ' ',
00074 ' ', 'Q', ' ', ' ', ' ', 'R', ' ', ' ', ' ', 'S', ' ', ' ',
00075 ' ', 'T', ' ', ' ', ' ', 'U', ' ', ' ', ' ', 'V', ' ', ' ',
00076 ' ', 'W', ' ', ' ', ' ', 'X', ' ', ' ', ' ', 'Y', ' ', ' ',
00077 ' ', 'Z', ' ', ' ', ' ', '+', ' ', ' ', ' ', '-', ' ', ' ',
00078 ' ', '=', ' ', ' ', ' ', '*', ' ', ' ', ' ', '/', ' ', ' ',
00079 ' ', '(', ' ', ' ', ' ', ')', ' ', ' ', ' ', '.', ' ', ' ',
00080 ' ', ',', ' ', ' ', ' ', '\'', ' ', ' ', ' '}, 0 };
00081
00082 #define mbcd ((int *)&equiv_7)
00083
00084
00085
00086 int j;
00087
00088 ia = (int *)(&(_BLNK__1.a));
00089 ib = (int *)(&(_BLNK__1.b));
00090
00091 da = (double *)(&(_BLNK__1.a));
00092 db = (double *)(&(_BLNK__1.b));
00093
00094 param_1.iqbitw = 32;
00095 param_1.iqchaw = 4;
00096 param_1.itb = 6;
00097 param_1.itimes = 0;
00098 for (j = 1; j <= 47; ++j) _BLNK__1.ibcd[j - 1] = mbcd[j - 1];
00099 for (j = 1; j <= 100; ++j) _BLNK__1.intg[j - 1] = j;
00100
00101
00102
00103
00104 param_1.zerov[0] = (float)1e-10;
00105 param_1.zerov[1] = (float)1e-6;
00106 param_1.zerov[2] = (float)1e-5;
00107 param_1.zerov[3] = (float)1e-4;
00108 param_1.zerov[4] = (float).001;
00109 param_1.zergu = param_1.zerov[0];
00110 param_1.zerlev = param_1.zerov[0];
00111 param_1.nfaipr = 4;
00112 param_1.neachp = 0;
00113 param_1.nfailt = 0;
00114 param_1.nfail = 0;
00115 param_1.ntest = 0;
00116
00117 cout << " MICKY executing." << endl;
00118 cout << " MICKY 2.71 950712 9.30" << endl;
00119
00120
00121
00122 }
00123
00124
00125
00126 void StMicky::Mverif(int ntt, float *have, float *amust, int nn)
00127 {
00128
00129 float r__1;
00130
00131
00132 float diff, test[200], zeru;
00133 int j, nhave, ntuse, n1, n2;
00134
00135 int jj;
00136 float sum;
00137
00138
00139
00140
00141
00142 --amust;
00143 --have;
00144
00145
00146 ntuse = ntt;
00147 nhave = nn;
00148 if (nhave >= 201) {
00149 Prtest();
00150 cout << endl << " VERIFF VECTOR FOR TEST" << ntuse
00151 << " MORE THAN 200 WORDS, namely " << nhave << endl;
00152 return;
00153 }
00154
00155 zeru = param_1.zerlev;
00156 if (param_1.ntest >= 10) StMicky::Prtest();
00157
00158
00159 for (jj = 1; jj <= nhave; ++jj) {
00160 j = jj;
00161 diff = (r__1 = have[j] - amust[j], dabs(r__1));
00162 if (diff < zeru) continue;
00163 sum = (r__1 = have[j] + amust[j], dabs(r__1));
00164
00165 if (sum < 2. || (diff * (float)2. / sum > zeru)) goto L41;
00166 }
00167
00168 if (param_1.nfail) {
00169 Prtest();
00170 param_1.nfail = 0;
00171 }
00172
00173 ++param_1.ntest;
00174 param_1.mtestv[param_1.ntest - 1] = ntuse;
00175 if (param_1.neachp == 0) return ;
00176 Prtest();
00177 return ;
00178
00179 L41:
00180 jj = j;
00181 ++param_1.nfailt;
00182 if (param_1.nfail == 0) Prtest();
00183 else if (param_1.nfail > param_1.nfaipr) ++param_1.nfail;
00184
00185 cout << " TEST " << ntuse << " FAILED, Dump follows" << endl;
00186 ++param_1.nfail;
00187 n1 = jj;
00188 do {
00189
00190 n2 = min(n1 + 4,nhave);
00191 cout << n1 << " MUST ";
00192 for (j = n1; j <= n2; ++j) {
00193
00194 cout << amust[j] << " ";
00195 if ((j-n1)%5 == 0) cout << endl;
00196 }
00197 cout << endl;
00198
00199 cout << " HAVE ";
00200 for (j = n1; j <= n2; ++j) {
00201
00202 cout << have[j] << " ";
00203 if ((j-n1)%5 == 0) cout << endl;
00204 }
00205 cout << endl;
00206
00207 n1 += 5;
00208 } while (n1 <= nhave);
00209
00210 if (n1 - 1 != nhave) cout << endl;
00211
00212
00213
00214 cout << " Floating point values, ZERLEV= "<< zeru << endl;
00215
00216 for (j = jj; j <= nhave; ++j) {
00217 diff = (r__1 = have[j] - amust[j], dabs(r__1));
00218 sum = (r__1 = have[j] + amust[j], dabs(r__1));
00219 test[j - 1] = (float)0.;
00220 if (diff < zeru) continue;
00221 test[j - 1] = diff;
00222 if (sum < (float)2.) continue;
00223 test[j - 1] = test[j - 1] * (float)2. / sum;
00224 }
00225 n1 = jj;
00226
00227 do {
00228
00229 n2 = min(n1 + 4,nhave);
00230 cout << n1 << " MUST ";
00231 for (j = n1; j <= n2; ++j) {
00232 cout << amust[j] << " ";
00233 if ((j-n1)%5 == 0) cout << endl;
00234 }
00235 cout << endl;
00236
00237 cout << " HAVE ";
00238 for (j = n1; j <= n2; ++j) {
00239 cout << have[j] << " ";
00240 if ((j-n1)%5 == 0) cout << endl;
00241 }
00242 cout << endl;
00243
00244 cout << " TEST ";
00245 for (j = n1; j <= n2; ++j) {
00246 cout << test[j - 1] << " ";
00247 if ((j-n1)%5 == 0) cout << endl;
00248 }
00249 cout << endl;
00250
00251 n1 += 5;
00252 } while (n1 <= nhave);
00253
00254 cout << endl;
00255 return;
00256 }
00257
00258
00259 void StMicky::Newguy(const char *t1, const char *t2) {
00260 Prtest();
00261 param_1.nfail = 0;
00262 cout << " ---------------------------------------------------------------" << endl <<
00263 " Routing " << t2 << " testing " << t1 << endl;
00264 }
00265