29 lines
No EOL
574 B
Nim
29 lines
No EOL
574 B
Nim
discard """
|
|
output: "(M: 3, N: 3, fp: ...)"
|
|
"""
|
|
|
|
# bug #6843
|
|
|
|
type
|
|
OrderType = enum colMajor, rowMajor
|
|
Matrix[A] = object
|
|
M, N: int
|
|
fp: ptr A # float pointer
|
|
DoubleArray64[M, N: static[int]] = array[M, array[N, float64]]
|
|
|
|
|
|
proc stackMatrix[M, N: static[int]](a: var DoubleArray64[M, N], order = colMajor): Matrix[float64] =
|
|
Matrix[float64](
|
|
fp: addr a[0][0],
|
|
M: (if order == colMajor: N else: M),
|
|
N: (if order == colMajor: M else: N)
|
|
)
|
|
|
|
var
|
|
data = [
|
|
[1'f64, 2, 3],
|
|
[4'f64, 5, 6],
|
|
[7'f64, 8, 9]
|
|
]
|
|
m = stackMatrix(data)
|
|
echo m |