///|
/// Ndarray 基本操作示例
/// 演示 Owl-MBT 的核心 n 维数组功能
fn main raise {
  // 创建数组
  let a = @ndarray.of_array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], [2, 3])
  println("数组 a (2x3):")
  println(@ndarray.to_string(a))

  // 数组运算
  let b = @ndarray.of_array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6], [2, 3])
  let c = @ndarray.add(a, b)
  println("\na + b:")
  println(@ndarray.to_string(c))

  // 矩阵转置
  let at = @ndarray.transpose(a)
  println("\na 转置 (3x2):")
  println(@ndarray.to_string(at))

  // 矩阵乘法
  let d = @ndarray.of_array([1.0, 0.0, 0.0, 1.0], [2, 2])
  let e = @ndarray.dot(d, a)
  println("\n单位矩阵 * a = a:")
  println(@ndarray.to_string(e))

  // 元素求和
  let s = @ndarray.sum(a)
  println("\nsum(a) = \{s.data[0]}")

  // 数学函数
  let x = @ndarray.of_array([0.0, 1.0, 2.0], [3])
  let sx = @ndarray.map_elem(x, fn(v) { @math.sin(v) })
  println("\nsin([0, 1, 2]):")
  println(@ndarray.to_string(sx))
}