@@ -32,7 +32,7 @@ type CSRMatrix<'a when 'a : struct and 'a : equality>(csrTuples: CSRFormat<'a>)
3232 let spMV ( vector : Vector < 'a >) ( mask : Mask1D ) ( semiring : Semiring < 'a >) : Vector < 'a > =
3333 let csrMatrixRowCount = rowCount
3434 let csrMatrixColumnCount = columnCount
35- let vectorLength = vector.Size
35+ let vectorLength = vector.Length
3636 if csrMatrixColumnCount <> vectorLength then
3737 invalidArg
3838 " vector"
@@ -80,24 +80,27 @@ type CSRMatrix<'a when 'a : struct and 'a : equality>(csrTuples: CSRFormat<'a>)
8080 member this.Columns = csrTuples.Columns
8181 member this.RowPointers = csrTuples.RowPointers
8282
83+ override this.Mask = failwith " Not implemented"
84+ override this.Complemented = failwith " Not implemented"
85+
8386 override this.Item
84- with get ( mask : Mask2D ) : Matrix < 'a > = failwith " Not Implemented"
85- and set ( mask : Mask2D ) ( value : Matrix < 'a >) = failwith " Not Implemented"
87+ with get ( mask : Mask2D option ) : Matrix < 'a > = failwith " Not Implemented"
88+ and set ( mask : Mask2D option ) ( value : Matrix < 'a >) = failwith " Not Implemented"
8689 override this.Item
87- with get ( vectorMask : Mask1D , colIdx : int ) : Vector < 'a > = failwith " Not Implemented"
88- and set ( vectorMask : Mask1D , colIdx : int ) ( value : Vector < 'a >) = failwith " Not Implemented"
90+ with get ( vectorMask : Mask1D option , colIdx : int ) : Vector < 'a > = failwith " Not Implemented"
91+ and set ( vectorMask : Mask1D option , colIdx : int ) ( value : Vector < 'a >) = failwith " Not Implemented"
8992 override this.Item
90- with get ( rowIdx : int , vectorMask : Mask1D ) : Vector < 'a > = failwith " Not Implemented"
91- and set ( rowIdx : int , vectorMask : Mask1D ) ( value : Vector < 'a >) = failwith " Not Implemented"
93+ with get ( rowIdx : int , vectorMask : Mask1D option ) : Vector < 'a > = failwith " Not Implemented"
94+ and set ( rowIdx : int , vectorMask : Mask1D option ) ( value : Vector < 'a >) = failwith " Not Implemented"
9295 override this.Item
9396 with get ( rowIdx : int , colIdx : int ) : Scalar < 'a > = failwith " Not Implemented"
9497 and set ( rowIdx : int , colIdx : int ) ( value : Scalar < 'a >) = failwith " Not Implemented"
9598 override this.Fill
96- with set ( mask : Mask2D ) ( value : Scalar < 'a >) = failwith " Not Implemented"
99+ with set ( mask : Mask2D option ) ( value : Scalar < 'a >) = failwith " Not Implemented"
97100 override this.Fill
98- with set ( vectorMask : Mask1D , colIdx : int ) ( value : Scalar < 'a >) = failwith " Not Implemented"
101+ with set ( vectorMask : Mask1D option , colIdx : int ) ( value : Scalar < 'a >) = failwith " Not Implemented"
99102 override this.Fill
100- with set ( rowIdx : int , vectorMask : Mask1D ) ( value : Scalar < 'a >) = failwith " Not Implemented"
103+ with set ( rowIdx : int , vectorMask : Mask1D option ) ( value : Scalar < 'a >) = failwith " Not Implemented"
101104
102105 override this.Mxm a b c = failwith " Not Implemented"
103106 override this.Mxv a b c = failwith " Not Implemented"
@@ -115,18 +118,21 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
115118 member this.AsList : ( int * 'a ) list = listOfNonzeroes
116119
117120 override this.AsArray = failwith " Not Implemented"
118- override this.Clear () = failwith " Not Implemented"
121+ override this.Clear () = failwith " Not Implemented"
122+
123+ override this.Mask = failwith " Not implemented"
124+ override this.Complemented = failwith " Not implemented"
119125
120126 override this.Item
121- with get ( mask : Mask1D ) : Vector < 'a > = failwith " Not Implemented"
122- and set ( mask : Mask1D ) ( value : Vector < 'a >) = failwith " Not Implemented"
127+ with get ( mask : Mask1D option ) : Vector < 'a > = failwith " Not Implemented"
128+ and set ( mask : Mask1D option ) ( value : Vector < 'a >) = failwith " Not Implemented"
123129 override this.Item
124130 with get ( idx : int ) : Scalar < 'a > = failwith " Not Implemented"
125131 and set ( idx : int ) ( value : Scalar < 'a >) = failwith " Not Implemented"
126132 override this.Fill
127- with set ( mask : Mask1D ) ( value : Scalar < 'a >) = failwith " Not Implemented"
133+ with set ( mask : Mask1D option ) ( value : Scalar < 'a >) = failwith " Not Implemented"
128134
129- override this.Vxm ( matrix : Matrix < 'b >) ( mask : Mask1D ) ( semiring : Semiring < 'a , 'b , 'c >) : Vector < 'c > = failwith " Not Implemented"
135+ override this.Vxm ( matrix : Matrix < 'b >) ( mask : Mask1D option ) ( semiring : Semiring < 'a , 'b , 'c >) : Vector < 'c > = failwith " Not Implemented"
130136 override this.EWiseAdd a b c = failwith " Not Implemented"
131137 override this.EWiseMult a b c = failwith " Not Implemented"
132138 override this.Apply a b = failwith " Not Implemented"
@@ -135,24 +141,40 @@ and SparseVector<'a when 'a : struct and 'a : equality>(size: int, listOfNonzero
135141and DenseVector < 'a when 'a : struct and 'a : equality >( vector : 'a [], monoid : Monoid < 'a >) =
136142 inherit Vector< 'a>( vector.Length)
137143
138- override this.AsArray = vector
139- override this.Clear () = failwith " Not Implemented"
144+ // Not Implemented
145+ new ( monoid: Monoid< 'a>) = DenseVector( Array.zeroCreate< 'a> 0 , monoid)
146+ // Not Implemented
147+ new ( listOfIndices: int list, monoid: Monoid< 'a>) = DenseVector( Array.zeroCreate< 'a> 0 , monoid)
148+
149+ member this.Monoid = monoid
150+ member this.Values = vector
151+
152+ override this.AsArray = failwith " Not Implemented"
153+ override this.Clear () = failwith " Not Implemented"
154+
155+ override this.Mask =
156+ let indices =
157+ [| for i in 0 .. this.Length - 1 do
158+ if this.Values.[ i] <> this.Monoid.Zero then yield i |]
159+ Some <| Mask1D( indices, this.Length, false )
160+
161+ override this.Complemented =
162+ let indices =
163+ [| for i in 0 .. this.Length - 1 do
164+ if this.Values.[ i] <> this.Monoid.Zero then yield i |]
165+ Some <| Mask1D( indices, this.Length, true )
140166
141167 override this.Item
142- with get ( mask : Mask1D ) : Vector < 'a > = failwith " Not Implemented"
143- and set ( mask : Mask1D ) ( value : Vector < 'a >) = failwith " Not Implemented"
168+ with get ( mask : Mask1D option ) : Vector < 'a > = failwith " Not Implemented"
169+ and set ( mask : Mask1D option ) ( value : Vector < 'a >) = failwith " Not Implemented"
144170 override this.Item
145171 with get ( idx : int ) : Scalar < 'a > = failwith " Not Implemented"
146172 and set ( idx : int ) ( value : Scalar < 'a >) = failwith " Not Implemented"
147173 override this.Fill
148- with set ( mask : Mask1D ) ( value : Scalar < 'a >) = failwith " Not Implemented"
174+ with set ( mask : Mask1D option ) ( value : Scalar < 'a >) = failwith " Not Implemented"
149175
150176 override this.Vxm a b c = failwith " Not Implemented"
151177 override this.EWiseAdd a b c = failwith " Not Implemented"
152178 override this.EWiseMult a b c = failwith " Not Implemented"
153179 override this.Apply a b = failwith " Not Implemented"
154- override this.Reduce ( monoid : Monoid < 'a >) =
155- vector
156- |> Array.reduce ( QuotationEvaluator.Evaluate !> monoid.Append)
157- |> Scalar
158-
180+ override this.Reduce ( monoid : Monoid < 'a >) = failwith " Not Implemented"
0 commit comments