rem optimization: string = "yes", "no". Sets whether the test should be 
rem optimized. Defaults to "no".
rem speedtest: string = "yes", "no". Sets whether a speedtest should be done.
rem Defaults to "no".
rem operation. string = InsertRows, InsertColumns, InsertNullRows,
rem InsertNullColumns, RemoveRows, RemoveColumns, OptimizeRows, OptimizeColumns.
rem Selects the operation to test.
rem mode: integer. Sets the mode of the operation (>=0 performs a copy-type
rem operation and <0 performs an operation on the original matrix.) Defaults to
rem 0.
rem A, B: matrices. Operands.
rem row, column, rows, columns: integers. Operands.
rem repetitions, size: integers. The number of repetitions to perform in a 
rem speed test, and the size of the matrix to perform the test on.

echo Problem 1. Row insertion test, copy-type.
operation InsertRows
mode 1
A 2 3
1 2 3
7 8 9

B 1 3
4 5 6
row 1
done

echo Problem 2. Row insertion test, modification-type, optimized.
operation InsertRows
A 2 3
1 2 3
4 5 6

B 1 3
7 8 9
optimization yes
done

echo Problem 3. Column insertion test, modification-type, optimized.
operation InsertColumns
A 3 2
1 3
4 6
7 9

B 3 1
2
5
8
optimization yes
column 1
done

echo Problem 4. Column insertion test, copy-type.
operation InsertColumns
A 3 2
1 3
4 6
7 9

B 3 1
2
5
8
column 1
done

echo Problem 5. Null row insertion test, copy-type.
operation InsertNullRows
A 2 2
1 1
3 3
done

echo Problem 6. Null row insertion test, modification type, unoptimized.
operation InsertNullRows
A 2 2
1 1
3 3
mode -1
row 0
done

echo Problem 7. Null column insertion test, copy type.
operation InsertNullColumns
A 2 2
1 2
3 2
column 0
done

echo Problem 8. Null column insertion test, modification type, optimized.
operation InsertNullColumns
A 2 2
1 2
3 2
column 0
optimization yes
done

echo Problem 9. Row removal test, copy type.
operation RemoveRows
A 3 2
1 2
3 4
5 6
row 0
rows 1
mode 3
done

echo Problem 10. Row removal test, modification type, unoptimized.
operation RemoveRows
A 3 2
1 2
3 4
5 6
row 2
rows 1
mode -1
done

echo Problem 11. Column removal test, copy type.
operation RemoveColumns
A 2 3
1 2 3
4 5 6
column 1
columns 2
done

echo Problem 12. Column removal test, modification type, optimized.
operation RemoveColumns
A 2 3
1 2 3
4 5 6
column 1
columns 1
optimization yes
done

echo Problem 13. Null row insertion, unoptimized speedtest.
operation InsertNullRows
size 20
repetitions 20000
speedtest yes
optimization no
row 1
rows 2
done

echo Problem 14. Null row insertion, optimized speedtest.
operation InsertNullRows
size 20
repetitions 20000
speedtest yes
optimization yes
row 1
rows 2
done

echo Problem 15. Column insertion, unoptimized speedtest.
operation InsertColumns
size 20
repetitions 20000
speedtest yes
optimization no
column 1
columns 2
done

echo Problem 16. Column insertion, optimized speedtest.
operation InsertColumns
size 20
repetitions 20000
speedtest yes
optimization yes
column 1
columns 2
done

echo Problem 17. Row removal, unoptimized speedtest.
operation RemoveRows
size 20
repetitions 20000
speedtest yes
optimization no
row 1
rows 2
done

echo Problem 18. Row removal, optimized speedtest.
operation RemoveRows
size 20
repetitions 20000
speedtest yes
optimization yes
row 1
rows 2
done

echo Problem 19. Row optimization.
A 3 5
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
operation OptimizeRows
done

echo Problem 20. Column optimization.
A 3 5
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
operation OptimizeColumns
done

echo Problem 21. Row Swap.
A 3 3
1 2 3
4 5 6
7 8 9
B 3 3
10 11 12
13 14 15
16 17 18
row 1
operation SwapRows
optimization no
done

echo Problem 22. Column Swap.
A 3 3
1 2 3
4 5 6
7 8 9
B 3 3
10 11 12
13 14 15
16 17 18
column 1
operation SwapColumns
optimization yes
done

echo Problem 23. Speed-test row swap (unoptimized).
size 10
repetitions 20000
row 3
optimization no
speedtest yes
operation SwapRows
done

echo Problem 24. Speed-test row swap (optimized).
size 10
repetitions 20000
row 3
optimization yes
speedtest yes
operation SwapRows
done
quit
