mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
100 lines
1.6 KiB
Plaintext
100 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
|
|
* http://reality.sgi.com/chongo
|
|
*
|
|
* chongo <was here> /\../\
|
|
*
|
|
* 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;
|
|
}
|