Browse Source

FSharp: support new F#3.1 slicing getters on matrices (setters prepared as well)

v2
Christoph Ruegg 13 years ago
parent
commit
e106872e73
  1. 28
      src/FSharp/LinearAlgebra.fs

28
src/FSharp/LinearAlgebra.fs

@ -85,3 +85,31 @@ module FSharpExtensions =
let cfinish = defaultArg cfinish (x.ColumnCount - 1) let cfinish = defaultArg cfinish (x.ColumnCount - 1)
let rfinish = defaultArg rfinish (x.RowCount - 1) let rfinish = defaultArg rfinish (x.RowCount - 1)
x.SetSubMatrix(rstart, rfinish - rstart + 1, cstart, cfinish - cstart + 1, values) x.SetSubMatrix(rstart, rfinish - rstart + 1, cstart, cfinish - cstart + 1, values)
/// Gets a row subvector using a specified row index and column range.
/// This method can be used via the x.[r, c1 .. c2] syntax (F#3.1)
member x.GetSlice(r, cstart, cfinish) =
let cstart = defaultArg cstart 0
let cfinish = defaultArg cfinish (x.ColumnCount - 1)
x.Row(r, cstart, cfinish - cstart + 1)
/// Gets a column subvector using a specified row index and column range.
/// This method can be used via the x.[r, c1 .. c2] syntax (F#3.1)
member x.GetSlice(rstart, rfinish, c) =
let rstart = defaultArg rstart 0
let rfinish = defaultArg rfinish (x.RowCount - 1)
x.Column(c, rstart, rfinish - rstart + 1)
// /// Sets a row subvector using a specified row index and column range.
// /// This method can be used via the x.[r, c1 .. c2] <- v syntax (F#3.1)
// member x.GetSlice(r, cstart, cfinish, values) =
// let cstart = defaultArg cstart 0
// let cfinish = defaultArg cfinish (x.ColumnCount - 1)
// x.SetRow(r, cstart, cfinish - cstart + 1, values)
//
// /// Sets a column subvector using a specified row index and column range.
// /// This method can be used via the x.[r, c1 .. c2] <- v syntax (F#3.1)
// member x.GetSlice(rstart, rfinish, c, values) =
// let rstart = defaultArg rstart 0
// let rfinish = defaultArg rfinish (x.RowCount - 1)
// x.SetColumn(c, rstart, rfinish - rstart + 1, values)

Loading…
Cancel
Save