Synopsis

module nmf64: {
val nmf [m] [n]: (A: [m][n]f64) -> (k: i64) -> (max_iter: i64) -> (tol: f64) -> ([m][k]f64, [k][n]f64, i64)
val frob_norm [m] [n]: (xss: [m][n]f64) -> f64
}
module linalg64: {
type t = f64
val dotprod [n]: [n]f64 -> [n]f64 -> f64
val outer [n] [m]: [n]f64 -> [m]f64 -> [n][m]f64
val cross: [3]f64 -> [3]f64 -> [3]f64
val matvecmul_row [n] [m]: [n][m]f64 -> [m]f64 -> [n]f64
val matvecmul_col [n] [m]: [n][m]f64 -> [n]f64 -> [n][n]f64
val matmul [n] [p] [m]: [n][p]f64 -> [p][m]f64 -> [n][m]f64
val kronecker [n] [m] [p] [q]: [m][n]f64 -> [p][q]f64 -> ?[d₀][d₁].[d₀][d₁]f64
val kronecker' [m] [n] [p] [q]: [m][n]f64 -> [p][q]f64 -> [m][n][p][q]f64
val inv [n]: [n][n]f64 -> [n][n]f64
val ols [n] [m]: [n][m]f64 -> [n]f64 -> [m]f64
}
val nmf [m₀] [n₁] : (A: [m₀][n₁]f64) -> (k: i64) -> (max_iter: i64) -> (tol: f64) -> ([m₀][k]f64, [k][n₁]f64, i64)
val matsub [n₂] [n₆] : (as: [n₆][n₂]f64) -> (bs: [n₆][n₂]f64) -> *[n₆][n₂]f64
val matprod [n₂] [n₆] : (as: [n₆][n₂]f64) -> (bs: [n₆][n₂]f64) -> *[n₆][n₂]f64
val matmean [m] [n] : (xss: [m][n]f64) -> f64
val nmf_test [m] [n] : (A: [m][n]f64) -> (max_iter: i64) -> (tol: f64) -> (test_tol: f64) -> bool

Description

module nmf64
val nmf [m₀] [n₁]: (A: [m₀][n₁]f64) -> (k: i64) -> (max_iter: i64) -> (tol: f64) -> ([m₀][k]f64, [k][n₁]f64, i64)
val matsub [n₂] [n₆]: (as: [n₆][n₂]f64) -> (bs: [n₆][n₂]f64) -> *[n₆][n₂]f64
val matprod [n₂] [n₆]: (as: [n₆][n₂]f64) -> (bs: [n₆][n₂]f64) -> *[n₆][n₂]f64
val matmean [m] [n]: (xss: [m][n]f64) -> f64
val nmf_test [m] [n]: (A: [m][n]f64) -> (max_iter: i64) -> (tol: f64) -> (test_tol: f64) -> bool