Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[API Proposal]: Add missing Min/MaxNumber generic math APIs on TensorPrimitives #98862

@stephentoub

Description

@stephentoub

Background and motivation

These slipped through when aiming for parity.

API Proposal

namespace System.Numerics.Tensors;

public static class TensorPrimitives
{
    // Same surface area as Min/Max{Magnitude}, but for Min/Max{Magnitude}Number
+   public static int IndexOfMaxNumber<T>(ReadOnlySpan<T> x) where T : INumber<T>;
+   public static int IndexOfMinNumber<T>(ReadOnlySpan<T> x) where T : INumber<T>;
+   public static int IndexOfMaxMagnitudeNumber<T>(ReadOnlySpan<T> x) where T : INumber<T>;
+   public static int IndexOfMinMagnitudeNumber<T>(ReadOnlySpan<T> x) where T : INumber<T>;

+   public static T MaxMagnitudeNumber<T>(ReadOnlySpan<T> x) where T : INumberBase<T>;
+   public static void MaxMagnitudeNumber<T>(ReadOnlySpan<T> x, ReadOnlySpan<T> y, System.Span<T> destination) where T : INumberBase<T>;
+   public static void MaxMagnitudeNumber<T>(ReadOnlySpan<T> x, T y, Span<T> destination) where T : INumberBase<T>;

+   public static T MaxNumber<T>(ReadOnlySpan<T> x) where T : INumber<T>;
+   public static void MaxNumber<T>(ReadOnlySpan<T> x, ReadOnlySpan<T> y, Span<T> destination) where T : INumber<T>;
+   public static void MaxNumber<T>(ReadOnlySpan<T> x, T y, Span<T> destination) where T : INumber<T>;

+   public static T MinMagnitudeNumber<T>(ReadOnlySpan<T> x) where T : INumberBase<T>;
+   public static void MinMagnitudeNumber<T>(ReadOnlySpan<T> x, ReadOnlySpan<T> y, Span<T> destination) where T : INumberBase<T>;
+   public static void MinMagnitudeNumber<T>(ReadOnlySpan<T> x, T y, Span<T> destination) where T : INumberBase<T>;

+   public static T MinNumber<T>(ReadOnlySpan<T> x) where T : INumber<T>;
+   public static void MinNumber<T>(ReadOnlySpan<T> x, ReadOnlySpan<T> y, Span<T> destination) where T : INumber<T>;
+   public static void MinNumber<T>(ReadOnlySpan<T> x, T y, Span<T> destination) where T : INumber<T>;
}

API Usage

TensorPrimitives.MaxMagnitude(x, y, dest);

Alternative Designs

No response

Risks

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions