MATMAN - The Matrix Manipulator
MATMAN is an interactive matrix manipulator. It is intended to
do the arithmetic, while forcing a student to specify the correct
sequence of operations to transform an arbitrary matrix into row
echelon form.
MATMAN was developed by Professor Charles Cullen of the University
of Pittsburgh, and John Burkardt, itinerant programmer.
MATMAN features include:
-
Interactivity: students prescribe each row operation;
-
Accuracy: MATMAN does the arithmetic operations;
-
Flexibility: rational, real or decimal arithmetic may be used;
-
Affordability: the price is right (it's freeware);
-
Portability: complete FORTRAN source code available, executes
on IBM (DOS or Windows), Mac (68K or PPC), UNIX, VMS.
-
Repeatability: A transcript file records all work;
-
Improvability: The developers are responsive to user requests.
MATMAN allows the user to:
-
Request a sample problem, or type in a new one;
-
Choose decimal, integer, rational or real arithmetic;
-
Specify row or column operations in a natural form: "R1 <= 3 R1 + R2";
-
Determine if the matrix is in row echelon form;
Files you may copy include:
The list of routines includes:
-
MATMAN is a program for interactive linear algebra demonstrations.
-
C_CAP capitalizes a single character.
-
C_EQI is a case insensitive comparison of two characters for equality.
-
C_IS_ALPHA returns TRUE if C is an alphabetic character.
-
C_IS_DIGIT returns .TRUE. if a character is a decimal digit.
-
C_TO_DIGIT returns the integer value of a base 10 digit.
-
CHANGE allows the user to change an entry in the array.
-
CHRCTF reads an integer or rational fraction from a string.
-
CHRCTG reads an integer, decimal fraction or a ratio from a string.
-
CHRINP requests new input if the LINE buffer is empty.
-
COL_ADD adds a multiple of one column to another.
-
COL_ADD_PARAM gets and checks the column add parameters.
-
COL_AUTO automatically column reduces the current matrix.
-
COL_DIV divides a column of the matrix by a scale factor.
-
COL_DIV_PARAM gets and checks the column divide parameters.
-
COL_MUL multiplies a column of the matrix by a scale factor.
-
COL_MUL_PARAM gets and checks the column multiply parameters.
-
COL_OP_CHECK checks for commands given in the form of ECO's.
-
COL_SWAP swaps two columns of a matrix.
-
DBL_TO_DEC converts a double precision quantity to a decimal representation.
-
DEC_ADD adds two decimal quantities.
-
DEC_DIGIT_SET allows the user to specify the number of decimal digits.
-
DEC_DIV divides two decimal values.
-
DEC_MUL multiplies two decimals.
-
DEC_PRINT prints out decimal vectors and matrices.
-
DEC_READ reads a decimal, rational or integer, and returns a decimal fraction.
-
DEC_ROUND rounds a decimal fraction to a given number of digits.
-
DEC_TO_R converts a decimal ITOP * 10**IBOT to a real value.
-
DEC_TO_RAT converts a decimal to a rational representation.
-
DEC_TO_S_LEFT returns a left-justified representation of IVAL * 10**JVAL.
-
DIGIT_TO_C returns the character representation of a decimal digit.
-
FORM converts from one arithmetic form to another.
-
HELLO greets the user on startup.
-
HELP prints out a brief list of the available commands.
-
I_DATA stores and retrieves common data items.
-
I_GCF finds the greatest common factor of I and J.
-
I_RANDOM returns a random integer in a given range.
-
I_READ reads an integer from the input buffer.
-
I_SWAP switches two integer values.
-
I_TO_S_LEFT converts an integer to a left_justified string.
-
INIT initializes the data.
-
LA_HELP prints out a brief list of useful linear algebra commands.
-
LA_INP0 begins the process of receiving a matrix from the user.
-
LA_INP1 accepts the values of the entries of a matrix from the user.
-
LA_OPT checks for row echelon or reduced row echelon form.
-
MAT_COPY makes a copy of the current problem information.
-
MAT_PRINT prints out the matrix or table and solution.
-
R_PRINT prints out real vectors and matrices.
-
R_READ "reads" a real value from a line of text.
-
R_SWAP switches two real values.
-
R_TO_DEC converts a real value to a decimal fraction form.
-
R_TO_RAT converts a real value to a rational value.
-
R_TO_S_LEFT represents a real using 14 left_justified characters.
-
RAT_ADD adds two rational values.
-
RAT_MUL multiplies two fractions.
-
RAT_PRINT prints out rational vectors or matrices.
-
RAT_READ reads a rational value, expressed as integer, decimal or fraction.
-
RAT_TO_DEC converts a rational value to a decimal value.
-
RAT_TO_R converts rational values to real values.
-
RAT_TO_S_LEFT returns a left-justified representation of IVAL/JVAL.
-
ROW_ADD adds a multiple of one row to another.
-
ROW_ADD_PARAM gets and checks the row add parameters.
-
ROW_AUTO automatically row reduces the current matrix.
-
ROW_DIV divides row IROW of the A matrix by a scale factor.
-
ROW_DIV_PARAM gets and checks the row divide parameters.
-
ROW_MUL multiplies a row of the matrix by a scale factor.
-
ROW_MUL_PARAM gets and checks the row multiply parameters.
-
ROW_OP_CHECK checks for commands given in the form of ERO's.
-
ROW_SWAP swaps two rows of a matrix.
-
S_BLANK_DELETE removes blanks from a string, left justifying the remainder.
-
S_BLANKS_DELETE replaces consecutive blanks by one blank.
-
S_CAP replaces any lowercase letters by uppercase ones in a string.
-
S_CHOP "chops out" a portion of a string, and closes up the hole.
-
S_EQI is a case insensitive comparison of two strings for equality.
-
S_LEFT flushes a string left.
-
S_READ extracts a character string from the input buffer.
-
S_RIGHT flushes a string right.
-
S_TO_DEC reads a number from a string, returning a decimal result.
-
S_TO_I reads an integer value from a string.
-
S_TO_R reads a real number from a string.
-
SAMPLE allows the user to choose a particular sample problem.
Return to the FORTRAN software page.
Last revised on 27 March 2001.