|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace System.Numerics
{
/// <summary>Defines support for root functions.</summary>
/// <typeparam name="TSelf">The type that implements this interface.</typeparam>
public interface IRootFunctions<TSelf>
: IFloatingPointConstants<TSelf>
where TSelf : IRootFunctions<TSelf>?
{
/// <summary>Computes the cube-root of a value.</summary>
/// <param name="x">The value whose cube-root is to be computed.</param>
/// <returns>The cube-root of <paramref name="x" />.</returns>
static abstract TSelf Cbrt(TSelf x);
/// <summary>Computes the hypotenuse given two values representing the lengths of the shorter sides in a right-angled triangle.</summary>
/// <param name="x">The value to square and add to <paramref name="y" />.</param>
/// <param name="y">The value to square and add to <paramref name="x" />.</param>
/// <returns>The square root of <paramref name="x" />-squared plus <paramref name="y" />-squared.</returns>
static abstract TSelf Hypot(TSelf x, TSelf y);
/// <summary>Computes the n-th root of a value.</summary>
/// <param name="x">The value whose <paramref name="n" />-th root is to be computed.</param>
/// <param name="n">The degree of the root to be computed.</param>
/// <returns>The <paramref name="n" />-th root of <paramref name="x" />.</returns>
static abstract TSelf RootN(TSelf x, int n);
/// <summary>Computes the square-root of a value.</summary>
/// <param name="x">The value whose square-root is to be computed.</param>
/// <returns>The square-root of <paramref name="x" />.</returns>
static abstract TSelf Sqrt(TSelf x);
}
}
|