Skip to content

Commit

Permalink
array[N,T]: use comlete generic types to work around Nim devel issues
Browse files Browse the repository at this point in the history
  • Loading branch information
jxy committed Apr 17, 2024
1 parent 708a386 commit ae36753
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
20 changes: 10 additions & 10 deletions src/base/stdUtils.nim
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,19 @@ proc indexOf*[T](x: openArray[T], y: auto): int =
let n = x.len
while result<n and x[result]!=y: inc result

proc `+`*(x: SomeNumber, y: array): auto {.inline,noInit.} =
var r: array[y.len, type(x+y[0])]
proc `+`*[N,T](x: SomeNumber, y: array[N,T]): auto {.inline,noInit.} =
var r: array[N, type(x+y[0])]
for i in 0..<r.len:
r[i] = x + y[i]
r

proc `*`*(x: array, y: SomeNumber): auto {.inline,noInit.} =
var r: array[x.len, type(x[0]*y)]
proc `*`*[N,T](x: array[N,T], y: SomeNumber): auto {.inline,noInit.} =
var r: array[N, type(x[0]*y)]
for i in 0..<r.len:
r[i] = x[i] * y
r
proc `*`*(x: SomeNumber, y: array): auto {.inline,noInit.} =
var r: array[y.len, type(x*y[0])]
proc `*`*[N,T](x: SomeNumber, y: array[N,T]): auto {.inline,noInit.} =
var r: array[N, type(x*y[0])]
for i in 0..<r.len:
r[i] = x * y[i]
r
Expand All @@ -84,14 +84,14 @@ proc `*`*[T](x: SomeNumber, y: seq[T]): seq[T] {.inline,noInit.} =
for i in 0..<result.len:
result[i] = x * y[i]

proc `/`*(x: SomeNumber, y: array): auto {.inline,noInit.} =
var r: array[y.len, type(x/y[0])]
proc `/`*[N,T](x: SomeNumber, y: array[N,T]): auto {.inline,noInit.} =
var r: array[N, type(x/y[0])]
for i in 0..<r.len:
r[i] = x / y[i]
r

proc `mod`*(x: array, y: SomeNumber): auto {.inline,noInit.} =
var r: array[x.len, type(x[0] mod y)]
proc `mod`*[N,T](x: array[N,T], y: SomeNumber): auto {.inline,noInit.} =
var r: array[N, type(x[0] mod y)]
for i in 0..<r.len:
r[i] = x[i] mod y
r
Expand Down
4 changes: 2 additions & 2 deletions tests/base/tshift.nim
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ proc testfb(x,y,z: auto, mu,d: int): float =
# echoAll xi, " ", yi, " ", zi
result = res

proc test2(Smd: typedesc, lat: array): float =
proc test2[N,T](Smd: typedesc, lat: array[N,T]): float =
const vl = int Smd.numNumbers
let nd = lat.len
const nd = lat.len
var lo = newLayout(lat, vl)
type LatReal = Field[vl, Smd]
var x,y,z: LatReal
Expand Down

0 comments on commit ae36753

Please sign in to comment.