Skip to content

Instantly share code, notes, and snippets.

@hnh12358
Created September 27, 2010 06:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hnh12358/598695 to your computer and use it in GitHub Desktop.
Save hnh12358/598695 to your computer and use it in GitHub Desktop.
let empty m n =
requires (m = 0 || n = 0) MATRIX_EMPTYCREATION_BADDIMENSIONS
new FMatrix(m,n, fun (i,j) -> failwith MATRIX_EMPTY )
let identity m =
requires (m >= 0) MATRIX_IDENTITYCREATION_BADDIMENSIONS
if m = 0 then
empty 0 0
else
new FMatrix(m,m, fun (i,j) -> if i = j then 1.0 else 0.0)
let diagonal m v =
requires (m > 0) MATRIX_CUSTOMCREATION_BADDIMENSIONS
new FMatrix(m,m, fun (i,j) -> if i = j then v else 0.0)
let zero m n =
requires (m > 0 && n > 0) MATRIX_CUSTOMCREATION_BADDIMENSIONS
new FMatrix(m,n, fun (i,j) -> 0.0)
let scalar m n value =
requires (m > 0 && n > 0) MATRIX_CUSTOMCREATION_BADDIMENSIONS
new FMatrix(m,n, fun (i,j) -> value)
let hilbert m n =
requires (m > 0 && n > 0) MATRIX_CUSTOMCREATION_BADDIMENSIONS
let newGen = (fun (i,j) -> 1.0 / (float(i) + float(j) - 1.0))
new FMatrix(m,n,newGen)
let upperTriangular m n v =
requires (m > 0 && n > 0) MATRIX_CUSTOMCREATION_BADDIMENSIONS
let newGen = (fun (i,j) -> if float(i) > float(j) then 0.0 else v)
new FMatrix(m,n,newGen)
let lowerTriangular m n v =
requires (m > 0 && n > 0) MATRIX_CUSTOMCREATION_BADDIMENSIONS
let newGen = (fun (i,j) -> if float(i) < float(j) then 0.0 else v)
new FMatrix(m,n,newGen)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment