proc `*`[T: SomeNumber | Complex[float32] | Complex[float64]](a: T; t: Tensor[T]): Tensor[ T] {.noinit.}
proc `*`[T: SomeNumber | Complex[float32] | Complex[float64]](t: Tensor[T]; a: T): Tensor[ T] {.noinit.}
proc `*=`[T: SomeNumber | Complex[float32] | Complex[float64]](t: var Tensor[T]; a: T)
proc `+`[T: SomeNumber | Complex[float32] | Complex[float64]](a, b: Tensor[T]): Tensor[ T] {.noinit.}
proc `+`[T: SomeNumber | Complex[float32] | Complex[float64]](a: Tensor[T]; val: T): Tensor[T] {.noinit, inline.}
proc `+`[T: SomeNumber | Complex[float32] | Complex[float64]](val: T; a: Tensor[T]): Tensor[T] {.noinit, inline.}
proc `+=`[T: SomeNumber | Complex[float32] | Complex[float64]](a: var Tensor[T]; b: Tensor[T])
proc `-`[T: SomeNumber | Complex[float32] | Complex[float64]](a, b: Tensor[T]): Tensor[ T] {.noinit.}
proc `-`[T: SomeNumber | Complex[float32] | Complex[float64]](a: Tensor[T]; val: T): Tensor[T] {.noinit, inline.}
proc `-`[T: SomeNumber | Complex[float32] | Complex[float64]](val: T; a: Tensor[T]): Tensor[T] {.noinit, inline.}
proc `-=`[T: SomeNumber | Complex[float32] | Complex[float64]](a: var Tensor[T]; b: Tensor[T])
proc `/`[T: SomeNumber | Complex[float32] | Complex[float64]](t: Tensor[T]; a: T): Tensor[ T] {.noinit.}
proc `/=`[T: SomeFloat | Complex[float32] | Complex[float64]](t: var Tensor[T]; a: T)
proc `/=`[T: SomeInteger](t: var Tensor[T]; a: T)
proc `div`[T: SomeInteger](t: Tensor[T]; a: T): Tensor[T] {.noinit.}
proc dot[T: SomeFloat](a, b: Tensor[T]): T {.noSideEffect.}
proc dot[T: SomeInteger](a, b: Tensor[T]): T {.noSideEffect.}
proc `mod`[T: SomeNumber](t: Tensor[T]; val: T): Tensor[T] {.noinit.}
proc `mod`[T: SomeNumber](val: T; t: Tensor[T]): Tensor[T] {.noinit.}