modified: makefile
[GalaxyCodeBases.git] / c_cpp / etc / calc / cal / test2300.cal
blobbef457a3eef7b0792e6864c328dd80232e0e80ce
1 /*
2  * test2300 - 2300 series of the regress.cal test suite
3  *
4  * Copyright (C) 1999  Landon Curt Noll
5  *
6  * Calc is open software; you can redistribute it and/or modify it under
7  * the terms of the version 2.1 of the GNU Lesser General Public License
8  * as published by the Free Software Foundation.
9  *
10  * Calc is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
13  * Public License for more details.
14  *
15  * A copy of version 2.1 of the GNU Lesser General Public License is
16  * distributed with calc under the filename COPYING-LGPL.  You should have
17  * received a copy with calc; if not, write to Free Software Foundation, Inc.
18  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  *
20  * @(#) $Revision: 30.1 $
21  * @(#) $Id: test2300.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $
22  * @(#) $Source: /usr/local/src/bin/calc/cal/RCS/test2300.cal,v $
23  *
24  * Under source code control:   1995/07/09 06:12:13
25  * File existed as early as:    1995
26  *
27  * chongo <was here> /\oo/\     http://www.isthe.com/chongo/
28  * Share and enjoy!  :-)        http://www.isthe.com/chongo/tech/comp/calc/
29  */
32 obj matrix {m}
36  * matrix_inc - increment the matrix inside the object
37  */
38 define matrix_inc(a)
40         local i;
42         /* increment each matrix member */
43         for (i= 0; i < size(a.m); i++)
44                 ++a.m[[i]];
45         return a;
49  * matrix_dec - decrement the matrix inside the object
50  */
51 define matrix_dec(a)
53         local i;
55         /* decrement each matrix member */
56         for (i= 0; i < size(a.m); i++)
57                 --a.m[[i]];
58         return a;
62  * mkmat - load the matrix inside the object
63  */
64 define mkmat()
66         local s, M, i, v;
68         /* firewall */
69         s = param(0);
70         if (s == 0)
71                 quit "Need at least one argument";
73         /* create the matrix */
74         mat M[s];
76         /* load the matrix with the args */
77         for (i = 0; i < s; i++)
78                 M[i] = param(i + 1);
80         /* create the object with the matrix */
81         obj matrix v;
82         v.m = M;
83         return v;
87  * ckmat - check if the matrix inside an object has a set of given values
88  */
89 define ckmat()
91         local s, a, i;
93         /* firewall */
94         s = param(0);
95         if (s < 2)
96                 quit "Need at least two arguments";
98         /* get the object to test */
99         a = param(1);
101         /* verify the matrix in the object is the right size */
102         if (size(a.m) != s-1) {
103                 return 0;
104         }
106         /* check each matrix element with the args passed */
107         for (i = 2; i <= s; i++) {
108                 if (a.m[i-2] != param(i)) {
109                         /* args do not match */
110                         return 0;
111                 }
112         }
114         /* args match the matrix in the object */
115         return 1;