+++ /dev/null
-char *malloc ();
-
-main ()
-{
- char *buf1;
- int i;
- int cnt;
-
- buf1 = malloc (8193);
-
- read (0, buf1, 8192);
-
- for (i = 500; i > 0; i--)
- cnt = shift (buf1, 8192, '\n');
- printf ("%d ", cnt);
-
- for (i = 500; i > 0; i--)
- cnt = shift_xor (buf1, 8192, '\n');
- printf ("%d ", cnt);
-
- for (i = 500; i > 0; i--)
- cnt = bitfield (buf1, 8192, '\n');
- printf ("%d ", cnt);
-
- for (i = 500; i > 0; i--)
- cnt = char_autoincr (buf1, 8192, '\n');
- printf ("%d ", cnt);
-
- for (i = 500; i > 0; i--)
- cnt = xorand (buf1, 8192, '\n');
- printf ("%d ", cnt);
-}
-
-shift (b1, n, c)
- int *b1;
- int n;
- char c;
-{
- int nn;
- int cnt = 0;
- int w1;
-
- for (nn = n / (4 * 4); nn > 0; nn--)
- {
- w1 = *b1++;
- if ((char)w1 == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- w1 = *b1++;
- if ((char)w1 == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- w1 = *b1++;
- if ((char)w1 == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- w1 = *b1++;
- if ((char)w1 == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- if ((char)(w1 >>= 8) == c) cnt++;
- }
- return cnt;
-}
-
-shift_xor (b1, n, c)
- int *b1;
- int n;
- char c;
-{
- int nn;
- int cnt = 0;
- int w1;
- int cccc = (c << 24) | (c << 16) | (c << 8) | c;
-
- for (nn = n / (4 * 4); nn > 0; nn--)
- {
- w1 = *b1++ ^ cccc;
- if ((char)w1 == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- w1 = *b1++ ^ cccc;
- if ((char)w1 == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- w1 = *b1++ ^ cccc;
- if ((char)w1 == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- w1 = *b1++ ^ cccc;
- if ((char)w1 == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- if ((char)(w1 >>= 8) == 0) cnt++;
- }
- return cnt;
-}
-
-typedef
-struct
-{
- unsigned b0:8;
- unsigned b1:8;
- unsigned b2:8;
- unsigned b3:8;
-} foo;
-
-bitfield (b1, n, c)
- foo *b1;
- int n;
- char c;
-{
- int nn;
- int cnt = 0;
- register foo w1;
-
- for (nn = n / (4 * 4); nn > 0; nn--)
- {
- w1 = *b1++;
- if (w1.b0 == c) cnt++;
- if (w1.b1 == c) cnt++;
- if (w1.b2 == c) cnt++;
- if (w1.b3 == c) cnt++;
- w1 = *b1++;
- if (w1.b0 == c) cnt++;
- if (w1.b1 == c) cnt++;
- if (w1.b2 == c) cnt++;
- if (w1.b3 == c) cnt++;
- w1 = *b1++;
- if (w1.b0 == c) cnt++;
- if (w1.b1 == c) cnt++;
- if (w1.b2 == c) cnt++;
- if (w1.b3 == c) cnt++;
- w1 = *b1++;
- if (w1.b0 == c) cnt++;
- if (w1.b1 == c) cnt++;
- if (w1.b2 == c) cnt++;
- if (w1.b3 == c) cnt++;
- }
- return cnt;
-}
-
-
-char_autoincr (b1, n, c)
- char *b1;
- int n;
- char c;
-{
- int cnt = 0;
- char *bend = b1 + n;
- *bend = c;
-
- for (;;)
- {
- while (*b1++ != c)
- ;
- cnt++;
- if (b1 > bend)
- break;
- }
- return cnt;
-}
-
-typedef unsigned int uint;
-
-xorand (b1, n, c)
- int *b1;
- int n;
- unsigned char c;
-{
- int xm = ((int) c << 24) | ((int) c << 16) | ((int) c << 8) | ((int) c);
- byte_match_count2 (b1, n, xm, 0xff000000, 0xff0000, 0xff00, 0xff);
-}
-
-byte_match_count2 (buf, n, xm, m1, m2, m3, m4)
- int *buf;
- int n;
- uint m1, m2, m3, m4;
-{
- int w, cnt = 0;
- int *bp;
-
- n /= 4;
-
- buf[n] = xm;
-
- bp = buf;
- while (bp < buf + n)
- {
- w = *bp++ ^ xm;
- cnt += ((m1 & w) == 0);
- cnt += ((m2 & w) == 0);
- cnt += ((m3 & w) == 0);
- cnt += ((m4 & w) == 0);
-
- w = *bp++ ^ xm;
- cnt += ((m1 & w) == 0);
- cnt += ((m2 & w) == 0);
- cnt += ((m3 & w) == 0);
- cnt += ((m4 & w) == 0);
-
- w = *bp++ ^ xm;
- cnt += ((m1 & w) == 0);
- cnt += ((m2 & w) == 0);
- cnt += ((m3 & w) == 0);
- cnt += ((m4 & w) == 0);
-
- w = *bp++ ^ xm;
- cnt += ((m1 & w) == 0);
- cnt += ((m2 & w) == 0);
- cnt += ((m3 & w) == 0);
- cnt += ((m4 & w) == 0);
- }
- return cnt;
-}
+++ /dev/null
-/* EXTRA_OPTIONS: -fcaller-saves */
-
-extern char *malloc();
-
-main()
-{
- char w[1000];
- int i, j, nres, t[1000];
- float dv, (**dmat)[4][4];
- short at1, at2;
-
- nres = 200;
-
- for (i = 0; i < nres; i++)
- {
- w[i] = rand() & 15;
- t[i] = 0;
- }
-
- dmat = (float (**)[4][4]) malloc(nres * sizeof(*dmat));
- if (!dmat)
- return 1;
- for (i = 0; i < nres; i++)
- {
- dmat[i] = (float (*)[4][4]) malloc(nres * sizeof(**dmat));
- if (!dmat[i])
- return 1;
- }
-
- for (i = 0; i < nres; i++)
- for (j = i; j < nres; j++)
- for (at1 = 0; at1 <= 3; at1++)
- for (at2 = 0; at2 <= 3; at2++)
- if (i != j || at1 != at2)
- if ((w[i] & (1 << at1)) && (w[j] & (1 << at2)))
- {
- dv = 20.0 * (rand() & 32767) / 32768.0;
- dmat[i][j][at1][at2] = dmat[j][i][at2][at1] = dv;
- }
- else
- dmat[i][j][at1][at2] = dmat[j][i][at2][at1] = 999.0;
- else
- dmat[i][j][at1][at2] = 0.0;
-
- return 0;
-}
+++ /dev/null
-const int h (double value);
-const double scalb (double x, int n);
-const double logb (double x);
-static const double a = 0;
-
-double f (y, x)
- double y, x;
-{
- static const double zero=0, one=1, small=1.0E-9, big=1.0E18;
- double t,z,sy,sx,hi,lo;
- int k,m;
-
- if (x!=x)
- return x;
- if (y!=y)
- return y;
-
- sy = g (one);
- sx = g (one);
-
- if (x==1)
- {
- y=g (y);
- t=y;
- if (h (t))
- goto begin;
- }
-
- if (y==zero)
- return (sx==one)?y:g (a);
-
- if (x==zero)
- return g (a);
-
- if (!h (x))
- if (!h (y))
- return g ((sx==one)?a:3*a);
- else
- return g ((sx==one)?zero:a);
-
- if (!h (y))
- return g (a);
-
- x=g (x);
- y=g (y);
- if ((m=(k=logb (y))- logb (x)) > 60)
- t=big+big;
- else if (m < -80)
- t=y/x;
- else
- {
- t = y/x;
- y = scalb (y,-k);
- x=scalb (x,-k);
- }
-
- begin:
- if (t < 2.4375)
- {
- k = 4 * (t+0.0625);
- switch (k)
- {
- case 0:
- case 1:
- if (t < small)
- {
- big + small;
- return g ((sx>zero)?t:a-t);
- }
- hi = zero; lo = zero; break;
-
- case 2:
- hi = a; lo = a;
- z = x+x;
- t = ((y+y) - x) / (z + y); break;
-
- case 3:
- case 4:
- hi = a; lo = zero;
- t = (y - x) / (x + y); break;
-
- default:
- hi = a; lo = a;
- z = y-x; y=y+y+y; t = x+x;
- t = ((z+z)-x) / (t + y); break;
- }
- }
- else
- {
- hi = a; lo = zero;
-
- if (t <= big)
- t = - x / y;
- else
- {
- big+small;
- t = zero;
- }
- }
-
- z = t*(z*(a+z*(a+z*(a+z*(a+z*(a+z*(a+z*(a+z*(a+z*(a+z*(a+z*a)))))))))));
-
- return g ((sx>zero)?z:a-z);
-}
+++ /dev/null
-extern unsigned short statesCount;
-extern short cn_cadrstates[38][37];
-extern short coutstate[38][37][5];
-extern short ccostate[38][37][5];
-extern short cdel_E[38][37][5];
-extern short cn[38][37][5][3];
-extern short cd[38][37][5][3];
-
-extern short c[4][37];
-
-extern double vrandNext[64];
-
-f (unsigned long long maddrOutState[37][8 * 8],
- int maddrIndices[8 * 8],
- int delta_E[8 * 8],
- int after_x_hash[8 * 8],
- int after_y_hash[8 * 8],
- int after_z_hash[8 * 8],
- int nActivePlane)
-{
- int class[8 * 8];
- int ccoeff[8 * 8];
- int nx[8 * 8];
- int ny[8 * 8];
- int nz[8 * 8];
- int phat[8 * 8];
- int i;
- int inState;
-
- for (inState = 0; inState < statesCount; inState++) {
- long long Nf[8 * 8];
- long long Ns[8 * 8];
- long long Nb[8 * 8];
- int bbState[8 * 8];
- int not_flag_p[8 * 8];
- int j;
- int max_cadrstates = 0;
-
- for (i = 0; i < nActivePlane; i++) {
- int in = maddrIndices[i];
- int k = cn_cadrstates[class[in]][inState];
-
- if (k > max_cadrstates)
- max_cadrstates = k;
- }
-
- for (j = 0; j < max_cadrstates; j++) {
- int coState[8 * 8];
- int N_co[8 * 8];
- for (i = 0; i < nActivePlane; i++) {
- int in = maddrIndices[i];
- int k = cn_cadrstates[class[in]][inState];
-
- if (j < k-1) {
- long long numer = (nx[in] * cn[class[in]][inState][j][0] +
- ny[in] * cn[class[in]][inState][j][1] +
- nz[in] * cn[class[in]][inState][j][2]);
- long long denom = (nx[in] * cd[class[in]][inState][j][0] +
- ny[in] * cd[class[in]][inState][j][1] +
- nz[in] * cd[class[in]][inState][j][2]);
- long long Nj = ((denom == 0) ? 0 : (((((long long)(const64(0,0x10000)) * numer * Ns[in]) / denom) + (long long)(((unsigned) vrandNext[in]) & 0xffff)) >> 16));
- int outState = coutstate[class[in]][inState][j];
- int this_coState = ccostate[class[in]][inState][j];
- int del_E = cdel_E[class[in]][inState][j];
- int old_Ns = Ns[in];
-
- maddrOutState[outState][in] += Nj;
- Ns[in] -= Nj;
- delta_E[in] += Nj * del_E;
- if (not_flag_p[in]) {
- after_x_hash[in] += Nj * c[0][outState];
- after_y_hash[in] += Nj * c[1][outState];
- after_z_hash[in] += Nj * c[2][outState];
- }
- coState[in] = this_coState;
- N_co[in] = Nj;
- }
- else if (j == k-1) {
- long long Nj = Ns[in];
- int outState = coutstate[class[in]][inState][j];
- int this_coState = ccostate[class[in]][inState][j];
- int del_E = cdel_E[class[in]][inState][j];
- maddrOutState[outState][in] += Nj;
- delta_E[in] += Nj * del_E;
- coState[in] = this_coState;
- N_co[in] = Nj;
- }
- }
- }
- }
-}