+++ /dev/null
-using System;\r
-\r
-namespace Psychlops\r
-{\r
-\r
-\r
- public abstract class Matrix\r
- {\r
- public abstract double this[int row, int col]\r
- {\r
- get;\r
- set;\r
- }\r
-\r
- /*\r
- public abstract Internal.MatrixExpression this[Interval row, Interval col]\r
- {\r
- get;\r
- set;\r
- }\r
-\r
-\r
- /*\r
- public static Matrix operator +(Matrix m, double d)\r
- {\r
- return new Internal.MatrixExpression();\r
- }\r
- */\r
-\r
- public abstract int rows { get; }\r
- public abstract int cols { get; }\r
- public int getRows() { return rows; }\r
- public int getCols() { return cols; }\r
-\r
- }\r
-\r
-\r
- namespace Internal\r
- {\r
-\r
- public class MatrixImplementation : Matrix\r
- {\r
- internal double[,] elements;\r
-\r
- public MatrixImplementation(int dnrow, int dncol)\r
- {\r
- elements = new double[dnrow, dncol];\r
- }\r
-\r
- public override double this[int row, int col]\r
- {\r
- get\r
- {\r
- return elements[row - 1, col - 1];\r
- }\r
- set\r
- {\r
- elements[row - 1, col - 1] = value;\r
- }\r
- }\r
- /*\r
- public override MatrixExpression this[Interval row, Interval col]\r
- {\r
- get\r
- {\r
- return new MatrixExpression(this, row.int_floor(), col.int_floor(), row.int_ceil(), col.int_ceil());\r
- }\r
- set\r
- {\r
- for(int r = 0, r<)\r
- elements[row - 1, col - 1] = value;\r
- }\r
- }\r
- * */\r
-\r
- public override int rows { get { return elements.GetLength(0); } }\r
- public override int cols { get { return elements.GetLength(1); } }\r
-\r
- }\r
-\r
- public class MatrixExpression : Matrix\r
- {\r
- MatrixImplementation imp;\r
- readonly int brow, bcol;\r
- readonly int erow, ecol;\r
-\r
- internal MatrixExpression(MatrixImplementation target, int dbrow, int dbcol, int derow, int decol)\r
- {\r
- brow = dbrow;\r
- bcol = dbcol;\r
- erow = derow;\r
- ecol = decol;\r
- imp = target;\r
- }\r
-\r
- public override double this[int row, int col]\r
- {\r
- get\r
- {\r
- return imp.elements[(row - 1 - brow), (col - 1 - bcol)];\r
- }\r
- set\r
- {\r
- imp.elements[(row - 1 - brow), (col - 1 - bcol)] = value;\r
- }\r
- }\r
-\r
- public override int rows { get { return erow - brow + 1; } }\r
- public override int cols { get { return ecol - bcol + 1; } }\r
- }\r
- }\r
-\r
-}
\ No newline at end of file