modified: makefile
[GalaxyCodeBases.git] / c_cpp / etc / calc / cal / test3300.cal
blob4dae4a6720564944d6ea922c1e1a293b739f5102
1 /*
2  * test3300 - 3300 series of the regress.cal test suite
3  *
4  * Copyright (C) 1999  Ernest Bowen and Landon Curt Noll
5  *
6  * Primary author:  Ernest Bowen
7  *
8  * Calc is open software; you can redistribute it and/or modify it under
9  * the terms of the version 2.1 of the GNU Lesser General Public License
10  * as published by the Free Software Foundation.
11  *
12  * Calc is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
15  * Public License for more details.
16  *
17  * A copy of version 2.1 of the GNU Lesser General Public License is
18  * distributed with calc under the filename COPYING-LGPL.  You should have
19  * received a copy with calc; if not, write to Free Software Foundation, Inc.
20  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21  *
22  * @(#) $Revision: 30.1 $
23  * @(#) $Id: test3300.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
24  * @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test3300.cal,v $
25  *
26  * Under source code control:   1995/12/02 04:27:41
27  * File existed as early as:    1995
28  *
29  * Share and enjoy!  :-)        http://www.isthe.com/chongo/tech/comp/calc/
30  */
33 defaultverbose = 1;     /* default verbose value */
35 define testi(str, n, N, verbose)
37         local A, t, i, j, d1, d2;
38         local m;
40         if (isnull(verbose)) verbose = defaultverbose;
41         if (verbose > 0) {
42                 print str:":",:;
43         }
44         if (isnull(N))
45                 N = 1e6;
46         mat A[n,n];
47         for (i = 0; i < n; i++)
48                 for (j = 0; j < n; j++)
49                         A[i,j] = rand(-N, N);
50         t = runtime();
51         d1 = det(A);
52         t = runtime() - t;
53         d2 = det(A^2);
54         if (d2 != d1^2) {
55                 if (verbose > 0) {
56                         printf("*** Failure for n=%d, N=%d, d1=%d\n", n, N, d1);
57                 }
58                 return 1;       /* error */
59         } else {
60                 if (verbose > 0) {
61                         printf("no errors\n");
62                 }
63                 if (verbose > 1) {
64                         printf("ok: n=%d, N=%d, d1=%d, t=%d\n", n, N, d1, t);
65                 }
66         }
67         return 0;       /* ok */
70 define testr(str, n, N, verbose)
72         local A, t, i, j, d1, d2;
74         if (isnull(verbose)) verbose = defaultverbose;
75         if (verbose > 0) {
76                 print str:":",:;
77         }
78         if (isnull(N))
79                 N = 1e6;
80         mat A[n,n];
81         for (i = 0; i < n; i++)
82                 for (j = 0; j < n; j++)
83                         A[i,j] = rand(-(N^2), N^2)/rand(1, N);
84         t = usertime();
85         d1 = det(A);
86         t = usertime() - t;
87         d2 = det(A^2);
88         if (d2 != d1^2) {
89                 if (verbose > 0) {
90                         printf("*** Failure for n=%d, N=%d, d1=%d\n", n, N, d1);
91                 }
92                 return 1;       /* error */
93         } else {
94                 if (verbose > 0) {
95                         printf("no errors\n");
96                 }
97                 if (verbose > 1) {
98                         printf("ok: n=%d, N=%d, d1=%d, t=%d\n", n, N, d1, t);
99                 }
100         }
101         return 0;       /* ok */
105  * test3300 - perform all of the above tests a bunch of times
106  */
107 define test3300(verbose, tnum)
109         local N;        /* test parameter */
110         local i;
112         /*
113          * set test parameters
114          */
115         if (isnull(verbose)) {
116                 verbose = defaultverbose;
117         }
118         N = 1e6;
119         srand(3300e3300);
121         /*
122          * test a lot of stuff
123          */
124         for (i=0; i < 19; ++i) {
125                 err += testi(strcat(str(tnum++), ": testi(", str(i), ")"), \
126                              i, N, verbose);
127         }
128         for (i=0; i < 9; ++i) {
129                 err += testr(strcat(str(tnum++), ": testr(", str(i), ")"), \
130                              i, N, verbose);
131         }
133         /*
134          * test results
135          */
136         if (verbose > 1) {
137                 if (err) {
138                         print "***", err, "error(s) found in testall";
139                 } else {
140                         print "no errors in testall";
141                 }
142         }
143         return tnum;