proc `*`[T: not SomeNumber](t1: Tensor[float]; t2: Tensor[T]): Tensor[T]
proc `*`[T: not SomeNumber](t1: Tensor[T]; t2: Tensor[float]): Tensor[T]
proc `*`[T: not SomeNumber](t1: Tensor[T]; t2: Tensor[T]): Tensor[T]
proc `+`[T: not SomeNumber](t1: Tensor[T]; t2: Tensor[T]): Tensor[T]
proc dot[T: not SomeNumber](t1: Tensor[float]; t2: Tensor[T]): T