Open
Description
This is a continuation of #100924 and covers the various operation like APIs that do meaningful work with Tensor<T>
and supporting types.
ReadOnlyTensorSpan
and ReadOnlySpan
have been abbreviated to ROTensorSpan
and TensorSpan
, respectively, to save roughly 3000 characters and fit in the comment length limit of GitHub
API Proposal -- Changes to already approve surface area
The new C# ref struct + interfaces work in C# 9 means that we can use [UnscopedRef]
on interface members now:
namespace System.Numerics.Tensors;
public partial interface IReadOnlyTensor<TSelf, T>
{
+ [UnscopedRef]
+ ROSpan<nint> Lengths { get;}
+ [UnscopedRef]
+ ROSpan<nint> Lengths { get;}
- void GetLengths(scoped Span<nint> destination);
- void GetStrides(scoped Span<nint> destination);
}
API Proposal -- Parity with TensorPrimitives
These cover parity with what TensorPrimitives
currently supports, but operating over the proper multi-dimensional types:
namespace System.Numerics.Tensors;
public static partial class Tensor
{
// Other
public static Tensor<T> CosineSimilarity<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IRootFunctions<T>;
public static Tensor<T> CosineSimilarity<T>(in ROTensorSpan<T> x, T y) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> CosineSimilarity<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> CosineSimilarity<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IRootFunctions<T>;
public static T Distance<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IRootFunctions<T>;
public static T Distance<T>(in ROTensorSpan<T> x, T y) where T : IRootFunctions<T>;
public static T Distance<T>(T x, in ROTensorSpan<T> y) where T : IRootFunctions<T>;
public static T Dot<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>, IMultiplicativeIdentity<T, T>, IMultiplyOperators<T, T, T>;
public static T Dot<T>(in ROTensorSpan<T> x, T y) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>, IMultiplicativeIdentity<T, T>, IMultiplyOperators<T, T, T>;
public static T Norm<T>(in ROTensorSpan<T> x) where T : IRootFunctions<T>;
public static T Product<T>(in ROTensorSpan<T> x) where T : IMultiplicativeIdentity<T, T>, IMultiplyOperators<T, T, T>;
public static Tensor<T> Sigmoid<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> Sigmoid<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static Tensor<T> SoftMax<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> SoftMax<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static T Sum<T>(in ROTensorSpan<T> x) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>;
// IAdditionOperators
public static Tensor<T> Add<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>;
public static Tensor<T> Add<T>(in ROTensorSpan<T> x, T y) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>;
public static ref readonly TensorSpan<T> Add<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>;
public static ref readonly TensorSpan<T> Add<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IAdditionOperators<T, T, T>, IAdditiveIdentity<T, T>;
// IBinaryInteger
public static Tensor<T> LeadingZeroCount<T>(in ROTensorSpan<T> x) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> LeadingZeroCount<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
public static Tensor<T> PopCount<T>(in ROTensorSpan<T> x) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> PopCount<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
public static Tensor<T> RotateLeft<T>(in ROTensorSpan<T> x, int rotateAmount) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> RotateLeft<T>(scoped in ROTensorSpan<T> x, int rotateAmount, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
public static Tensor<T> RotateRight<T>(in ROTensorSpan<T> x, int rotateAmount) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> RotateRight<T>(scoped in ROTensorSpan<T> x, int rotateAmount, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
public static Tensor<T> TrailingZeroCount<T>(in ROTensorSpan<T> x) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> TrailingZeroCount<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
// IBitwiseOperators
public static Tensor<T> BitwiseAnd<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IBitwiseOperators<T, T, T>;
public static Tensor<T> BitwiseAnd<T>(in ROTensorSpan<T> x, T y) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> BitwiseAnd<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> BitwiseAnd<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
public static Tensor<T> BitwiseOr<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IBitwiseOperators<T, T, T>;
public static Tensor<T> BitwiseOr<T>(in ROTensorSpan<T> x, T y) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> BitwiseOr<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> BitwiseOr<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
public static Tensor<T> OnesComplement<T>(in ROTensorSpan<T> x) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> OnesComplement<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
public static Tensor<T> Xor<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IBitwiseOperators<T, T, T>;
public static Tensor<T> Xor<T>(in ROTensorSpan<T> x, T y) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> Xor<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
public static ref readonly TensorSpan<T> Xor<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IBitwiseOperators<T, T, T>;
// IComparisonOperators
public static Tensor<bool> GreaterThan<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> GreaterThan<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> GreaterThan<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> GreaterThan<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> GreaterThan<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> GreaterThan<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanAll<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanAll<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanAll<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanAny<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanAny<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanAny<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> GreaterThanOrEqual<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> GreaterThanOrEqual<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> GreaterThanOrEqual<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> GreaterThanOrEqual<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> GreaterThanOrEqual<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> GreaterThanOrEqual<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanOrEqualAll<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanOrEqualAll<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanOrEqualAll<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanOrEqualAny<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanOrEqualAny<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool GreaterThanOrEqualAny<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> LessThan<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> LessThan<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> LessThan<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> LessThan<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> LessThan<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> LessThan<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanAll<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanAll<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanAll<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanAny<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanAny<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanAny<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> LessThanOrEqual<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> LessThanOrEqual<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> LessThanOrEqual<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> LessThanOrEqual<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> LessThanOrEqual<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> LessThanOrEqual<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanOrEqualAll<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanOrEqualAll<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanOrEqualAll<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanOrEqualAny<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanOrEqualAny<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool LessThanOrEqualAny<T>(T x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
// IDivisionOperators
public static Tensor<T> Divide<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IDivisionOperators<T, T, T>;
public static Tensor<T> Divide<T>(in ROTensorSpan<T> x, T y) where T : IDivisionOperators<T, T, T>;
public static Tensor<T> Divide<T>(T x, in ROTensorSpan<T> y) where T : IDivisionOperators<T, T, T>;
public static ref readonly TensorSpan<T> Divide<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IDivisionOperators<T, T, T>;
public static ref readonly TensorSpan<T> Divide<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IDivisionOperators<T, T, T>;
public static ref readonly TensorSpan<T> Divide<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IDivisionOperators<T, T, T>;
// IEqualityOperators
public static Tensor<bool> Equals<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static Tensor<bool> Equals<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> Equals<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static TensorSpan<bool> Equals<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<bool> destination) where T : IComparisonOperators<T, T, bool>;
public static bool EqualsAll<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool EqualsAll<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
public static bool EqualsAny<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IComparisonOperators<T, T, bool>;
public static bool EqualsAny<T>(in ROTensorSpan<T> x, T y) where T : IComparisonOperators<T, T, bool>;
// IExponentialFunctions
public static Tensor<T> Exp<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> Exp<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static Tensor<T> ExpM1<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> ExpM1<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static Tensor<T> Exp2<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> Exp2<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static Tensor<T> Exp2M1<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> Exp2M1<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static Tensor<T> Exp10<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> Exp10<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
public static Tensor<T> Exp10M1<T>(in ROTensorSpan<T> x) where T : IExponentialFunctions<T>;
public static ref readonly TensorSpan<T> Exp10M1<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IExponentialFunctions<T>;
// IFloatingPoint
public static Tensor<T> Ceiling<T>(in ROTensorSpan<T> x) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Ceiling<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Floor<T>(in ROTensorSpan<T> x) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Floor<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Reciprocal<T>(in ROTensorSpan<T> x) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Reciprocal<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Round<T>(in ROTensorSpan<T> x) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Round<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Round<T>(in ROTensorSpan<T> x, int digits, MidpointRounding mode) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Round<T>(scoped in ROTensorSpan<T> x, int digits, MidpointRounding mode, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Round<T>(in ROTensorSpan<T> x, int digits) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Round<T>(scoped in ROTensorSpan<T> x, int digits, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Round<T>(in ROTensorSpan<T> x, MidpointRounding mode) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Round<T>(scoped in ROTensorSpan<T> x, MidpointRounding mode, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static Tensor<T> Truncate<T>(in ROTensorSpan<T> x) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> Truncate<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPoint<T>;
// IFloatingPointIeee754
public static Tensor<T> Atan2<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Atan2<T>(in ROTensorSpan<T> x, T y) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Atan2<T>(T x, in ROTensorSpan<T> y) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Atan2<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Atan2<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Atan2<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Atan2Pi<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Atan2Pi<T>(in ROTensorSpan<T> x, T y) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Atan2Pi<T>(T x, in ROTensorSpan<T> y) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Atan2Pi<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Atan2Pi<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Atan2Pi<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> FusedMultiplyAdd<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, in ROTensorSpan<T> addend) where T : IFloatingPointIeee754<T>;
public static Tensor<T> FusedMultiplyAdd<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, T addend) where T : IFloatingPointIeee754<T>;
public static Tensor<T> FusedMultiplyAdd<T>(in ROTensorSpan<T> x, T y, in ROTensorSpan<T> addend) where T : IFloatingPointIeee754<T>;
public static Tensor<T> FusedMultiplyAdd<T>(in ROTensorSpan<T> x, T y, T addend) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> FusedMultiplyAdd<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, scoped in ROTensorSpan<T> addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> FusedMultiplyAdd<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, T addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> FusedMultiplyAdd<T>(scoped in ROTensorSpan<T> x, T y, scoped in ROTensorSpan<T> addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> FusedMultiplyAdd<T>(scoped in ROTensorSpan<T> x, T y, T addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Ieee754Remainder<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Ieee754Remainder<T>(in ROTensorSpan<T> x, T y) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Ieee754Remainder<T>(T x, in ROTensorSpan<T> y) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Ieee754Remainder<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Ieee754Remainder<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Ieee754Remainder<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<int> ILogB<T>(in ROTensorSpan<T> x) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<int> ILogB<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, in ROTensorSpan<T> amount) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, T amount) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(in ROTensorSpan<T> x, T y, in ROTensorSpan<T> amount) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(in ROTensorSpan<T> x, T y, T amount) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(T x, in ROTensorSpan<T> y, in ROTensorSpan<T> amount) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(T x, in ROTensorSpan<T> y, T amount) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Lerp<T>(T x, T y, in ROTensorSpan<T> amount) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, scoped in ROTensorSpan<T> amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, T amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(scoped in ROTensorSpan<T> x, T y, scoped in ROTensorSpan<T> amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(scoped in ROTensorSpan<T> x, T y, T amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(T x, scoped in ROTensorSpan<T> y, scoped in ROTensorSpan<T> amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(T x, scoped in ROTensorSpan<T> y, T amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> Lerp<T>(T x, T y, scoped in ROTensorSpan<T> amount, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> ReciprocalEstimate<T>(in ROTensorSpan<T> x) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> ReciprocalEstimate<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> ReciprocalSqrtEstimate<T>(in ROTensorSpan<T> x) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> ReciprocalSqrtEstimate<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<int> ScaleB<T>(in ROTensorSpan<T> x, int n) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<int> ScaleB<T>(scoped in ROTensorSpan<T> x, int n, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
// IHyperbolicFunctions
public static Tensor<T> Acosh<T>(in ROTensorSpan<T> x) where T : IHyperbolicFunctions<T>;
public static ref readonly TensorSpan<T> Acosh<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IHyperbolicFunctions<T>;
public static Tensor<T> Asinh<T>(in ROTensorSpan<T> x) where T : IHyperbolicFunctions<T>;
public static ref readonly TensorSpan<T> Asinh<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IHyperbolicFunctions<T>;
public static Tensor<T> Atanh<T>(in ROTensorSpan<T> x) where T : IHyperbolicFunctions<T>;
public static ref readonly TensorSpan<T> Atanh<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IHyperbolicFunctions<T>;
public static Tensor<T> Cosh<T>(in ROTensorSpan<T> x) where T : IHyperbolicFunctions<T>;
public static ref readonly TensorSpan<T> Cosh<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IHyperbolicFunctions<T>;
public static Tensor<T> Sinh<T>(in ROTensorSpan<T> x) where T : IHyperbolicFunctions<T>;
public static ref readonly TensorSpan<T> Sinh<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IHyperbolicFunctions<T>;
public static Tensor<T> Tanh<T>(in ROTensorSpan<T> x) where T : IHyperbolicFunctions<T>;
public static ref readonly TensorSpan<T> Tanh<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IHyperbolicFunctions<T>;
// ILogarithmicFunctions
public static Tensor<T> Log<T>(in ROTensorSpan<T> x) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log<T>(in ROTensorSpan<T> x, T y) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log<T>(T x, in ROTensorSpan<T> y) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static Tensor<T> LogP1<T>(in ROTensorSpan<T> x) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> LogP1<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log2<T>(in ROTensorSpan<T> x) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log2<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log2P1<T>(in ROTensorSpan<T> x) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log2P1<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log10<T>(in ROTensorSpan<T> x) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log10<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
public static Tensor<T> Log10P1<T>(in ROTensorSpan<T> x) where T : ILogarithmicFunctions<T>;
public static ref readonly TensorSpan<T> Log10P1<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ILogarithmicFunctions<T>;
// IMultiplyOperators
public static Tensor<T> Multiply<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IMultiplyOperators<T, T, T>, IMultiplicativeIdentity<T, T>;
public static Tensor<T> Multiply<T>(in ROTensorSpan<T> x, T y) where T : IMultiplyOperators<T, T, T>, IMultiplicativeIdentity<T, T>;
public static ref readonly TensorSpan<T> Multiply<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IMultiplyOperators<T, T, T>, IMultiplicativeIdentity<T, T>;
public static ref readonly TensorSpan<T> Multiply<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IMultiplyOperators<T, T, T>, IMultiplicativeIdentity<T, T>;
// INumber
public static Tensor<T> CopySign<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> sign) where T : INumber<T>;
public static Tensor<T> CopySign<T>(in ROTensorSpan<T> x, T sign) where T : INumber<T>;
public static Tensor<T> CopySign<T>(T x, in ROTensorSpan<T> sign) where T : INumber<T>;
public static ref readonly TensorSpan<T> CopySign<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> sign, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> CopySign<T>(scoped in ROTensorSpan<T> x, T sign, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> CopySign<T>(T x, scoped in ROTensorSpan<T> sign, in TensorSpan<T> destination) where T : INumber<T>;
public static int IndexOfMax<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static int IndexOfMaxNumber<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static int IndexOfMin<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static int IndexOfMinNumber<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static T Max<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static Tensor<T> Max<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> Max<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> Max<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Max<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static T MaxNumber<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static Tensor<T> MaxNumber<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static Tensor<T> MaxNumber<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static ref readonly TensorSpan<T> MaxNumber<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> MaxNumber<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static T Min<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static Tensor<T> Min<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> Min<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> Min<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Min<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static T MinNumber<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static Tensor<T> MinNumber<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> MinNumber<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> MinNumber<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> MinNumber<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
// INumberBase
public static Tensor<T> Abs<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static ref readonly TensorSpan<T> Abs<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : INumberBase<T>;
public static Tensor<TTo> ConvertChecked<TFrom, TTo>(in ROTensorSpan<TFrom> source) where TFrom : INumberBase<TFrom> where TTo : INumberBase<TTo>;
public static ref readonly TensorSpan<TTo> ConvertChecked<TFrom, TTo>(scoped in ROTensorSpan<TFrom> source, in TensorSpan<TTo> destination) where TFrom : INumberBase<TFrom> where TTo : INumberBase<TTo>;
public static Tensor<TTo> ConvertSaturating<TFrom, TTo>(in ROTensorSpan<TFrom> source) where TFrom : INumberBase<TFrom> where TTo : INumberBase<TTo>;
public static ref readonly TensorSpan<TTo> ConvertSaturating<TFrom, TTo>(scoped in ROTensorSpan<TFrom> source, in TensorSpan<TTo> destination) where TFrom : INumberBase<TFrom> where TTo : INumberBase<TTo>;
public static Tensor<TTo> ConvertTruncating<TFrom, TTo>(in ROTensorSpan<TFrom> source) where TFrom : INumberBase<TFrom> where TTo : INumberBase<TTo>;
public static ref readonly TensorSpan<TTo> ConvertTruncating<TFrom, TTo>(scoped in ROTensorSpan<TFrom> source, in TensorSpan<TTo> destination) where TFrom : INumberBase<TFrom> where TTo : INumberBase<TTo>;
public static int IndexOfMaxMagnitude<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static int IndexOfMaxMagnitudeNumber<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static int IndexOfMinMagnitude<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static int IndexOfMinMagnitudeNumber<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static T MaxMagnitude<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static Tensor<T> MaxMagnitude<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> MaxMagnitude<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> MaxMagnitude<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> MaxMagnitude<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static T MaxMagnitudeNumber<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static Tensor<T> MaxMagnitudeNumber<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> MaxMagnitudeNumber<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> MaxMagnitudeNumber<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> MaxMagnitudeNumber<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static T MinMagnitude<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static Tensor<T> MinMagnitude<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> MinMagnitude<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> MinMagnitude<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> MinMagnitude<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static T MinMagnitudeNumber<T>(in ROTensorSpan<T> x) where T : INumberBase<T>;
public static Tensor<T> MinMagnitudeNumber<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : INumber<T>;
public static Tensor<T> MinMagnitudeNumber<T>(in ROTensorSpan<T> x, T y) where T : INumber<T>;
public static ref readonly TensorSpan<T> MinMagnitudeNumber<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> MinMagnitudeNumber<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : INumber<T>;
public static Tensor<T> MultiplyAddEstimate<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, in ROTensorSpan<T> addend) where T : IFloatingPointIeee754<T>;
public static Tensor<T> MultiplyAddEstimate<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, T addend) where T : IFloatingPointIeee754<T>;
public static Tensor<T> MultiplyAddEstimate<T>(in ROTensorSpan<T> x, T y, in ROTensorSpan<T> addend) where T : IFloatingPointIeee754<T>;
public static Tensor<T> MultiplyAddEstimate<T>(in ROTensorSpan<T> x, T y, T addend) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> MultiplyAddEstimate<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, scoped in ROTensorSpan<T> addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> MultiplyAddEstimate<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, T addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> MultiplyAddEstimate<T>(scoped in ROTensorSpan<T> x, T y, scoped in ROTensorSpan<T> addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static ref readonly TensorSpan<T> MultiplyAddEstimate<T>(scoped in ROTensorSpan<T> x, T y, T addend, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
// IPowerFunctions
public static Tensor<T> Pow<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IPowerFunctions<T>;
public static Tensor<T> Pow<T>(in ROTensorSpan<T> x, T y) where T : IPowerFunctions<T>;
public static Tensor<T> Pow<T>(T x, in ROTensorSpan<T> y) where T : IPowerFunctions<T>;
public static ref readonly TensorSpan<T> Pow<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IPowerFunctions<T>;
public static ref readonly TensorSpan<T> Pow<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IPowerFunctions<T>;
public static ref readonly TensorSpan<T> Pow<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IPowerFunctions<T>;
// IRootFunctions
public static Tensor<T> Cbrt<T>(in ROTensorSpan<T> x) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> Cbrt<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IRootFunctions<T>;
public static Tensor<T> Hypot<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IRootFunctions<T>;
public static Tensor<T> Hypot<T>(in ROTensorSpan<T> x, T y) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> Hypot<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> Hypot<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IRootFunctions<T>;
public static Tensor<T> RootN<T>(in ROTensorSpan<T> x, int n) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> RootN<T>(scoped in ROTensorSpan<T> x, int n, in TensorSpan<T> destination) where T : IRootFunctions<T>;
public static Tensor<T> Sqrt<T>(in ROTensorSpan<T> x) where T : IRootFunctions<T>;
public static ref readonly TensorSpan<T> Sqrt<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IRootFunctions<T>;
// IShiftOperators
public static Tensor<T> ShiftLeft<T>(in ROTensorSpan<T> x, int shiftAmount) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> ShiftLeft<T>(scoped in ROTensorSpan<T> x, int shiftAmount, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
public static Tensor<T> ShiftRightArithmetic<T>(in ROTensorSpan<T> x, int shiftAmount) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> ShiftRightArithmetic<T>(scoped in ROTensorSpan<T> x, int shiftAmount, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
public static Tensor<T> ShiftRightLogical<T>(in ROTensorSpan<T> x, int shiftAmount) where T : IBinaryInteger<T>;
public static ref readonly TensorSpan<T> ShiftRightLogical<T>(scoped in ROTensorSpan<T> x, int shiftAmount, in TensorSpan<T> destination) where T : IBinaryInteger<T>;
// ISubtractionOperators
public static Tensor<T> Subtract<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : ISubtractionOperators<T, T, T>;
public static Tensor<T> Subtract<T>(in ROTensorSpan<T> x, T y) where T : ISubtractionOperators<T, T, T>;
public static Tensor<T> Subtract<T>(T x, in ROTensorSpan<T> y) where T : ISubtractionOperators<T, T, T>;
public static ref readonly TensorSpan<T> Subtract<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : ISubtractionOperators<T, T, T>;
public static ref readonly TensorSpan<T> Subtract<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : ISubtractionOperators<T, T, T>;
public static ref readonly TensorSpan<T> Subtract<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : ISubtractionOperators<T, T, T>;
// ITrigonometricFunctions
public static Tensor<T> Acos<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> Acos<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> AcosPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> AcosPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> Asin<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> Asin<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> AsinPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> AsinPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> Atan<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> Atan<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> AtanPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> AtanPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> Cos<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> Cos<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> CosPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> CosPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> DegreesToRadians<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> DegreesToRadians<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> RadiansToDegrees<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> RadiansToDegrees<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> Sin<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> Sin<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static (Tensor<T> Sin, in Tensor<T> Cos) SinCos<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> SinCos<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> sinDestination, in TensorSpan<T> cosDestination) where T : ITrigonometricFunctions<T>;
public static (Tensor<T> SinPi, in Tensor<T> CosPi) SinCosPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> SinCosPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> sinPiDestination, in TensorSpan<T> cosPiDestination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> SinPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> SinPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> Tan<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> Tan<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
public static Tensor<T> TanPi<T>(in ROTensorSpan<T> x) where T : ITrigonometricFunctions<T>;
public static ref readonly TensorSpan<T> TanPi<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : ITrigonometricFunctions<T>;
// IUnaryNegationOperators
public static Tensor<T> Negate<T>(in ROTensorSpan<T> x) where T : IUnaryNegationOperators<T, T>;
public static ref readonly TensorSpan<T> Negate<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IUnaryNegationOperators<T, T>;
}
API Proposal -- New APIs for Tensor, TensorSpan, and TensorPrimitives
namespace System.Numerics.Tensors;
public static partial class Tensor
{
public static Tensor<T> BitDecrement<T>(in ROTensorSpan<T> x) where T : IDecrementOperators<T, T>;
public static ref readonly TensorSpan<T> BitDecrement<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> BitIncrement<T>(in ROTensorSpan<T> x) where T : IIncrementOperators<T, T>;
public static ref readonly TensorSpan<T> BitIncrement<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IFloatingPointIeee754<T>;
public static Tensor<T> Clamp<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> min, in ROTensorSpan<T> max) where T : INumber<T>;
public static Tensor<T> Clamp<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> min, T max) where T : INumber<T>;
public static Tensor<T> Clamp<T>(in ROTensorSpan<T> x, T min, in ROTensorSpan<T> max) where T : INumber<T>;
public static Tensor<T> Clamp<T>(in ROTensorSpan<T> x, T min, T max) where T : INumber<T>;
public static Tensor<T> Clamp<T>(T x, in ROTensorSpan<T> min, in ROTensorSpan<T> max) where T : INumber<T>;
public static Tensor<T> Clamp<T>(T x, in ROTensorSpan<T> min, T max) where T : INumber<T>;
public static Tensor<T> Clamp<T>(T x, T min, scoped in ROTensorSpan<T> max) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> min, scoped in ROTensorSpan<T> max, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> min, T max, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(scoped in ROTensorSpan<T> x, T min, scoped in ROTensorSpan<T> max, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(scoped in ROTensorSpan<T> x, T min, T max, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(T x, scoped in ROTensorSpan<T> min, scoped in ROTensorSpan<T> max, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(T x, scoped in ROTensorSpan<T> min, T max, in TensorSpan<T> destination) where T : INumber<T>;
public static ref readonly TensorSpan<T> Clamp<T>(T x, T min, scoped in ROTensorSpan<T> max, in TensorSpan<T> destination) where T : INumber<T>;
public static Tensor<TTo> ConvertToInteger<TFrom, TTo>(in ROTensorSpan<TFrom> source) where TFrom : IFloatingPoint<TFrom> where TTo : IBinaryInteger<TTo>;
public static ref readonly TensorSpan<TTo> ConvertToInteger<TFrom, TTo>(scoped in ROTensorSpan<TFrom> source, in TensorSpan<TTo> destination) where TFrom : IFloatingPoint<TFrom> where TTo : IBinaryInteger<TTo>;
public static Tensor<TTo> ConvertToIntegerNative<TFrom, TTo>(in ROTensorSpan<TFrom> source) where TFrom : IFloatingPoint<TFrom> where TTo : IBinaryInteger<TTo>;
public static ref readonly TensorSpan<TTo> ConvertToIntegerNative<TFrom, TTo>(scoped in ROTensorSpan<TFrom> source, in TensorSpan<TTo> destination) where TFrom : IFloatingPoint<TFrom> where TTo : IBinaryInteger<TTo>;
public static (Tensor<T> Quotient, in Tensor<T> Remainder) DivRem<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IBinaryInteger<T>;
public static (Tensor<T> Quotient, in Tensor<T> Remainder) DivRem<T>(in ROTensorSpan<T> x, T y) where T : IBinaryInteger<T>;
public static (Tensor<T> Quotient, in Tensor<T> Remainder) DivRem<T>(T x, in ROTensorSpan<T> y) where T : IBinaryInteger<T>;
public static void DivRem<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y, in TensorSpan<T> quotientDestination, in TensorSpan<T> remainderDestination) where T : IBinaryInteger<T>;
public static void DivRem<T>(in ROTensorSpan<T> x, T y, in TensorSpan<T> quotientDestination, in TensorSpan<T> remainderDestination) where T : IBinaryInteger<T>;
public static void DivRem<T>(T x, in ROTensorSpan<T> y, in TensorSpan<T> quotientDestination, in TensorSpan<T> remainderDestination) where T : IBinaryInteger<T>;
public static Tensor<T> Decrement<T>(in ROTensorSpan<T> x) where T : IDecrementOperators<T, T>;
public static ref readonly TensorSpan<T> Decrement<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IDecrementOperators<T, T>;
public static Tensor<T> Increment<T>(in ROTensorSpan<T> x) where T : IIncrementOperators<T, T>;
public static ref readonly TensorSpan<T> Increment<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination) where T : IIncrementOperators<T, T>;
public static T Mean<T>(in ROTensorSpan<T> x) where T : IFloatingPoint<T>;
public static Tensor<T> Remainder<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> y) where T : IModulusOperators<T, T, T>;
public static Tensor<T> Remainder<T>(in ROTensorSpan<T> x, T y) where T : IModulusOperators<T, T, T>;
public static Tensor<T> Remainder<T>(T x, in ROTensorSpan<T> y) where T : IModulusOperators<T, T, T>;
public static ref readonly TensorSpan<T> Remainder<T>(scoped in ROTensorSpan<T> x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IModulusOperators<T, T, T>;
public static ref readonly TensorSpan<T> Remainder<T>(scoped in ROTensorSpan<T> x, T y, in TensorSpan<T> destination) where T : IModulusOperators<T, T, T>;
public static ref readonly TensorSpan<T> Remainder<T>(T x, scoped in ROTensorSpan<T> y, in TensorSpan<T> destination) where T : IModulusOperators<T, T, T>;
public static Tensor<int> Sign<T>(in ROTensorSpan<T> x) where T : INumber<T>;
public static ref readonly TensorSpan<int> Sign<T>(scoped in ROTensorSpan<T> x, in TensoreSpan<T> destination) where T : INumber<T>;
public static T StdDev<T>(in ROTensorSpan<T> x) where T : IPowerFunctions<T>;
// The following APIs could have Tensor<bool> and bool versions,
// following the `*()`, `*All()` and `*Any()` pattern:
//
// IBinaryNumber
// * IsPow2
// INumberBase
// * IsCanonical
// * IsComplexNumber
// * IsEvenInteger
// * IsFinite
// * IsImaginaryNumber
// * IsInfinity
// * IsInteger
// * IsNaN
// * IsNegative
// * IsNegativeInfinity
// * IsNormal
// * IsOddInteger
// * IsPositive
// * IsPositiveInfinity
// * IsRealNumber
// * IsSubnormal
// * IsZero
}
public static partial class TensorPrimitives
{
public static void BitDecrement<T>(ROSpan<T> x, Span<T> destination) where T : IFloatingPointIeee754<T>;
public static void BitIncrement<T>(ROSpan<T> x, Span<T> destination) where T : IFloatingPointIeee754<T>;
public static void Clamp<T>(ROSpan<T> x, ROSpan<T> min, ROSpan<T> max, Span<T> destination) where T : INumber<T>;
public static void Clamp<T>(ROSpan<T> x, ROSpan<T> min, T max, Span<T> destination) where T : INumber<T>;
public static void Clamp<T>(ROSpan<T> x, T min, ROSpan<T> max, Span<T> destination) where T : INumber<T>;
public static void Clamp<T>(ROSpan<T> x, T min, T max, Span<T> destination) where T : INumber<T>;
public static void Clamp<T>(T x, ROSpan<T> min, ROSpan<T> max, Span<T> destination) where T : INumber<T>;
public static void Clamp<T>(T x, ROSpan<T> min, T max, Span<T> destination) where T : INumber<T>;
public static void Clamp<T>(T x, T min, ROSpan<T> max, Span<T> destination) where T : INumber<T>;
public static Span<TTo> ConvertToInteger<TFrom, TTo>(ROSpan<TFrom> source, Span<TTo> destination) where TFrom : IFloatingPoint<TFrom> where TTo : IBinaryInteger<TTo>;
public static Span<TTo> ConvertToIntegerNative<TFrom, TTo>(ROSpan<TFrom> source, Span<TTo> destination) where TFrom : IFloatingPoint<TFrom> where TTo : IBinaryInteger<TTo>;
public static void DivRem<T>(ROSpan<T> x, ROSpan<T> y, Span<T> quotientDestination, Span<T> remainderDestination) where T : IBinaryInteger<T>;
public static void DivRem<T>(ROSpan<T> x, T y, Span<T> quotientDestination, Span<T> remainderDestination) where T : IBinaryInteger<T>;
public static void DivRem<T>(T x, ROSpan<T> y, Span<T> quotientDestination, Span<T> remainderDestination) where T : IBinaryInteger<T>;
public static void Decrement<T>(ROSpan<T> x, Span<T> destination) where T : IDecrementOperators<T, T>;
public static void Increment<T>(ROSpan<T> x, Span<T> destination) where T : IIncrementOperators<T, T>;
public static T Mean<T>(ROSpan<T> x) where T : IFloatingPoint<T>;
public static void Remainder<T>(ROSpan<T> x, ROSpan<T> y, Span<T> destination) where T : IModulusOperators<T, T, T>;
public static void Remainder<T>(ROSpan<T> x, T y, Span<T> destination) where T : IModulusOperators<T, T, T>;
public static void Remainder<T>(T x, ROSpan<T> y, Span<T> destination) where T : IModulusOperators<T, T, T>;
public static void Sign<T>(ROSpan<T> x, in Span<int> destination) where T : INumber<T>;
public static T StdDev<T>(ROSpan<T> x) where T : IPowerFunctions<T>;
}
API Proposal -- APIs unique to Tensor and TensorSpan
These cover APIs that do not have an equivalent in TensorPrimitives
, typically being functionality that is unique to multi-dimensional types:
namespace System.Numerics.Tensors;
public static partial class Tensor
{
public static ROTensorSpan<T> AsROTensorSpan<T>(this T[]? array, params scoped ROSpan<nint> lengths);
public static TensorSpan<T> AsTensorSpan<T>(this T[]? array, params scoped ROSpan<nint> lengths);
public static Tensor<T> Broadcast<T>(in ROTensorSpan<T> x, ROSpan<nint> lengths);
// This gets the lengths from lengthsSource
public static Tensor<T> Broadcast<T>(in ROTensorSpan<T> x, in ROTensorSpan<T> lengthsSource);
public static void BroadcastTo<T>(this Tensor<T> x, in TensorSpan<T> destination);
public static void BroadcastTo<T>(in this TensorSpan<T> x, in TensorSpan<T> destination);
public static void BroadcastTo<T>(in this ROTensorSpan<T> x, in TensorSpan<T> destination);
// The parameter order here feels off. Ideally tensors could be params
// and we'd have overloads taking 2-3x ROTensorSpan<T>. Maybe we can
// explode the overloads a bit to make this nicer?
public static Tensor<T> Concatenate<T>(ROSpan<Tensor<T>> tensors, int axis = 0);
public static ref readonly TensorSpan<T> Concatenate<T>(scoped ROSpan<Tensor<T>> tensors, in TensorSpan<T> destination, int axis = 0);
public static Tensor<T> Create<T>(ROSpan<nint> lengths, bool pinned = false);
public static Tensor<T> Create<T>(ROSpan<nint> lengths, ROSpan<nint> strides, bool pinned = false);
public static Tensor<T> Create<T>(T[] values, ROSpan<nint> lengths);
public static Tensor<T> Create<T>(T[] values, ROSpan<nint> lengths, ROSpan<nint> strides, bool isPinned = false);
public static Tensor<T> Create<T>(IEnumerable<T> values, ROSpan<nint> lengths);
public static Tensor<T> Create<T>(IEnumerable<T> values, ROSpan<nint> lengths, ROSpan<nint> strides, bool isPinned = false);
public static Tensor<T> CreateAndFillGaussianNormalDistribution<T>(params ROSpan<nint> lengths) where T : IFloatingPoint<T>;
public static Tensor<T> CreateAndFillUniformDistribution<T>(params ROSpan<nint> lengths) where T : IFloatingPoint<T>;
public static Tensor<T> CreateUninitialized<T>(ROSpan<nint> lengths, bool pinned = false);
public static Tensor<T> CreateUninitialized<T>(ROSpan<nint> lengths, ROSpan<nint> strides, bool pinned = false);
public static ref readonly TensorSpan<T> FillGaussianNormalDistribution<T>(in TensorSpan<T> destination) where T : IFloatingPoint<T>;
public static ref readonly TensorSpan<T> FillUniformDistribution<T>(in TensorSpan<T> destination) where T : IFloatingPoint<T>;
// Should this be some overload of SetSlice or similar?
public static ref readonly TensorSpan<T> FilteredUpdate<T>(in this TensorSpan<T> x, scoped in ROTensorSpan<bool> filter, scoped in ROTensorSpan<T> values);
public static ref readonly TensorSpan<T> FilteredUpdate<T>(in this TensorSpan<T> x, scoped in ROTensorSpan<bool> filter, T value);
// Change order of the stride parameters
public static Tensor<T> Permute<T>(this Tensor<T> x, params ROSpan<int> axis);
public static TensorSpan<T> Permute<T>(in this TensorSpan<T> x, params scoped ROSpan<int> axis);
public static ROTensorSpan<T> Permute<T>(in this ROTensorSpan<T> x, params scoped ROSpan<int> axis);
// Change the lengths
public static Tensor<T> Reshape<T>(this Tensor<T> x, params ROSpan<nint> lengths);
public static TensorSpan<T> Reshape<T>(in this TensorSpan<T> x, params scoped ROSpan<nint> lengths);
public static ROTensorSpan<T> Reshape<T>(in this ROTensorSpan<T> x, params scoped ROSpan<nint> lengths);
public static Tensor<T> Resize<T>(Tensor<T> x, ROSpan<nint> lengths);
public static void ResizeTo<T>(this Tensor<T> x, in TensorSpan<nint> destination);
public static void ResizeTo<T>(in this TensorSpan<T> x, in TensorSpan<nint> destination);
public static void ResizeTo<T>(in this ROTensorSpan<T> x, in TensorSpan<nint> destination);
// Should this be expanded to avoid the optional axis parameter?
public static Tensor<T> Reverse<T>(in ROTensorSpan<T> x, nint axis = -1);
public static ref readonly TensorSpan<T> Reverse<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination, nint axis = -1);
// These are distinct from EqualsAll in that they use IEquatable
public static bool SequenceEqual<T>(this in ROTensorSpan<T> span, in ROTensorSpan<T> other) where T : IEquatable<T>?;
public static bool SequenceEqual<T>(this in TensorSpan<T> span, in ROTensorSpan<T> other) where T : IEquatable<T>?;
// The ordering of these parameters is slightly backwards so params can work for the ranges
public static Tensor<T> SetSlice<T>(this Tensor<T> tensor, in ROTensorSpan<T> values, params ROSpan<NRange> ranges);
public static ref readonly TensorSpan<T> SetSlice<T>(this TensorSpan<T> tensor, scoped in ROTensorSpan<T> values, params scoped ROSpan<NRange> ranges);
public static Tensor<T>[] Split<T>(in ROTensorSpan<T> x, nint numSplits, nint axis);
// Remove dimensions of length 1
public static Tensor<T> Squeeze<T>(this Tensor<T> x, int axis = -1);
public static TensorSpan<T> Squeeze<T>(in this TensorSpan<T> x, int axis = -1);
public static ROTensorSpan<T> Squeeze<T>(in this ROTensorSpan<T> x, int axis = -1);
public static Tensor<T> Stack<T>(ROSpan<Tensor<T>> tensors, int axis = 0);
public static ref readonly TensorSpan<T> Stack<T>(scoped ROSpan<Tensor<T>> tensors, in TensorSpan<T> destination, int axis = 0);
public static string ToString<T>(in this ROTensorSpan<T> span, params ROSpan<nint> maximumLengths);
public static string ToString<T>(in this TensorSpan<T> span, params ROSpan<nint> maximumLengths);
public static Tensor<T> Transpose<T>(in ROTensorSpan<T> x);
public static ref readonly TensorSpan<T> Transpose<T>(scoped in ROTensorSpan<T> x, in TensorSpan<T> destination);
public static bool TryBroadcastTo<T>(this Tensor<T> x, in TensorSpan<T> destination);
public static bool TryBroadcastTo<T>(in this TensorSpan<T> x, in TensorSpan<T> destination);
public static bool TryBroadcastTo<T>(in this ROTensorSpan<T> x, in TensorSpan<T> destination);
// Adds dimension of length 1
public static Tensor<T> Unsqueeze<T>(this Tensor<T> x, int axis);
public static TensorSpan<T> Unsqueeze<T>(in this TensorSpan<T> x, int axis);
public static ROTensorSpan<T> Unsqueeze<T>(in this ROTensorSpan<T> x, int axis);
}