Files
calc/lib/test2300.cal
2017-05-21 15:38:27 -07:00

98 lines
1.6 KiB
Plaintext

/*
* Copyright (c) 1995 Landon Curt Noll
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
*
* By: Landon Curt Noll
* chongo@toad.com -or- ...!{pyramid,sun,uunet}!hoptoad!chongo
*
* This library is used by the 2300 series of the regress.cal test suite.
*/
obj matrix {m}
/*
* matrix_inc - increment the matrix inside the object
*/
define matrix_inc(a)
{
local i;
/* increment each matrix member */
for (i= 0; i < size(a.m); i++)
++a.m[[i]];
return a;
}
/*
* matrix_dec - decrement the matrix inside the object
*/
define matrix_dec(a)
{
local i;
/* decrement each matrix member */
for (i= 0; i < size(a.m); i++)
--a.m[[i]];
return a;
}
/*
* mkmat - load the matrix inside the object
*/
define mkmat()
{
local s, M, i, v;
/* firewall */
s = param(0);
if (s == 0)
quit "Need at least one argument";
/* create the matrix */
mat M[s];
/* load the matrix with the args */
for (i = 0; i < s; i++)
M[i] = param(i + 1);
/* create the object with the matrix */
obj matrix v;
v.m = M;
return v;
}
/*
* ckmat - check if the matrix inside an object has a set of given values
*/
define ckmat()
{
local s, a, i;
/* firewall */
s = param(0);
if (s < 2)
quit "Need at least two arguments";
/* get the object to test */
a = param(1);
/* verify the matrix in the object is the right size */
if (size(a.m) != s-1) {
return 0;
}
/* check each matrix element with the args passed */
for (i = 2; i <= s; i++) {
if (a.m[i-2] != param(i)) {
/* args do not match */
return 0;
}
}
/* args match the matrix in the object */
return 1;
}