From fc5964c7185c08d46f1a216249caa9bb1cecb03c Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Thu, 23 Sep 2021 14:36:15 +0300 Subject: [PATCH 1/6] Add reciprocal and SinCos methods to IFloatingPoint Fix #58607 --- .../System.Private.CoreLib/src/System/Double.cs | 12 ++++++++++++ .../System.Private.CoreLib/src/System/Half.cs | 15 +++++++++++++++ .../src/System/IFloatingPoint.cs | 15 +++++++++++++++ .../System.Private.CoreLib/src/System/Single.cs | 12 ++++++++++++ 4 files changed, 54 insertions(+) diff --git a/src/libraries/System.Private.CoreLib/src/System/Double.cs b/src/libraries/System.Private.CoreLib/src/System/Double.cs index 170af804626767..a8ca3ae51f3e9e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Double.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Double.cs @@ -712,6 +712,14 @@ static double IFloatingPoint.MinMagnitude(double x, double y) static double IFloatingPoint.Pow(double x, double y) => Math.Pow(x, y); + [RequiresPreviewFeatures] + static double IFloatingPoint.ReciprocalEstimate(double x) + => Math.ReciprocalEstimate(x); + + [RequiresPreviewFeatures] + static double IFloatingPoint.ReciprocalSqrtEstimate(double x) + => Math.ReciprocalSqrtEstimate(x); + [RequiresPreviewFeatures] static double IFloatingPoint.Round(double x) => Math.Round(x); @@ -736,6 +744,10 @@ static double IFloatingPoint.ScaleB(double x, TInteger n) static double IFloatingPoint.Sin(double x) => Math.Sin(x); + [RequiresPreviewFeatures] + static (double, double) IFloatingPoint.SinCos(double x) + => Math.SinCos(x); + [RequiresPreviewFeatures] static double IFloatingPoint.Sinh(double x) => Math.Sinh(x); diff --git a/src/libraries/System.Private.CoreLib/src/System/Half.cs b/src/libraries/System.Private.CoreLib/src/System/Half.cs index 0318e094ea2845..17dfc9e86b2393 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Half.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Half.cs @@ -1015,6 +1015,14 @@ static Half IFloatingPoint.MinMagnitude(Half x, Half y) static Half IFloatingPoint.Pow(Half x, Half y) => (Half)MathF.Pow((float)x, (float)y); + [RequiresPreviewFeatures] + static Half IFloatingPoint.ReciprocalEstimate(Half x) + => (Half)MathF.ReciprocalEstimate((float)x); + + [RequiresPreviewFeatures] + static Half IFloatingPoint.ReciprocalSqrtEstimate(Half x) + => (Half)MathF.ReciprocalSqrtEstimate((float)x); + [RequiresPreviewFeatures] static Half IFloatingPoint.Round(Half x) => (Half)MathF.Round((float)x); @@ -1039,6 +1047,13 @@ static Half IFloatingPoint.ScaleB(Half x, TInteger n) static Half IFloatingPoint.Sin(Half x) => (Half)MathF.Sin((float)x); + [RequiresPreviewFeatures] + static (Half, Half) IFloatingPoint.SinCos(Half x) + { + var (sin, cos) = MathF.SinCos((float)x); + return ((Half)sin, (Half)cos); + } + [RequiresPreviewFeatures] static Half IFloatingPoint.Sinh(Half x) => (Half)MathF.Sinh((float)x); diff --git a/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs b/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs index cb69e03fd771fa..4f2b3d3aba375c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs @@ -222,6 +222,16 @@ static abstract TInteger ILogB(TSelf x) /// raised to the power of . static abstract TSelf Pow(TSelf x, TSelf y); + /// Computes an estimate of the reciprocal of a value. + /// The value whose estimate of the reciprocal is to be computed. + /// An estimate of the reciprocal of . + static abstract TSelf ReciprocalEstimate(TSelf x); + + /// Computes an estimate of the reciprocal square root of a value. + /// The value whose estimate of the reciprocal square root is to be computed. + /// An estimate of the reciprocal square root of . + static abstract TSelf ReciprocalSqrtEstimate(TSelf x); + /// Rounds a value to the nearest integer using the default rounding mode (). /// The value to round. /// The result of rounding to the nearest integer using the default rounding mode. @@ -260,6 +270,11 @@ static abstract TSelf ScaleB(TSelf x, TInteger n) /// The sine of . static abstract TSelf Sin(TSelf x); + /// Computes the sine and cosine of a value. + /// The value, in radians, whose sine and cosine are to be computed. + /// The sine and cosine of . + static abstract (TSelf, TSelf) SinCos(TSelf x); + /// Computes the hyperbolic sine of a value. /// The value, in radians, whose hyperbolic sine is to be computed. /// The hyperbolic sine of . diff --git a/src/libraries/System.Private.CoreLib/src/System/Single.cs b/src/libraries/System.Private.CoreLib/src/System/Single.cs index 589cc26dcfdd16..9f87feba4a0b9d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Single.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Single.cs @@ -704,6 +704,14 @@ static float IFloatingPoint.MinMagnitude(float x, float y) static float IFloatingPoint.Pow(float x, float y) => MathF.Pow(x, y); + [RequiresPreviewFeatures] + static float IFloatingPoint.ReciprocalEstimate(float x) + => MathF.ReciprocalEstimate(x); + + [RequiresPreviewFeatures] + static float IFloatingPoint.ReciprocalSqrtEstimate(float x) + => MathF.ReciprocalSqrtEstimate(x); + [RequiresPreviewFeatures] static float IFloatingPoint.Round(float x) => MathF.Round(x); @@ -729,6 +737,10 @@ static float IFloatingPoint.Sin(float x) => MathF.Sin(x); [RequiresPreviewFeatures] + static (float, float) IFloatingPoint.SinCos(float x) + => MathF.SinCos(x); + + [RequiresPreviewFeatures] static float IFloatingPoint.Sinh(float x) => MathF.Sinh(x); From 485a1f5be18c361b9d9b877047c83f75a8e04c0c Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Thu, 23 Sep 2021 15:36:42 +0300 Subject: [PATCH 2/6] Update ref --- .../System.Runtime/ref/System.Runtime.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index a7042b6bb17357..2d46256ef4ea70 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -2530,6 +2530,10 @@ public DivideByZeroException(string? message, System.Exception? innerException) [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static double IFloatingPoint.Pow(double x, double y) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static double IFloatingPoint.ReciprocalEstimate(double x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static double IFloatingPoint.ReciprocalSqrtEstimate(double x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static double IFloatingPoint.Round(double x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static double IFloatingPoint.Round(double x, TInteger digits) { throw null; } @@ -2542,6 +2546,8 @@ public DivideByZeroException(string? message, System.Exception? innerException) [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static double IFloatingPoint.Sin(double x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static (double, double) IFloatingPoint.SinCos(double x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static double IFloatingPoint.Sinh(double x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static double IFloatingPoint.Sqrt(double x) { throw null; } @@ -3264,6 +3270,10 @@ public GopherStyleUriParser() { } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static System.Half IFloatingPoint.Pow(System.Half x, System.Half y) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static System.Half IFloatingPoint.ReciprocalEstimate(System.Half x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static System.Half IFloatingPoint.ReciprocalSqrtEstimate(System.Half x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static System.Half IFloatingPoint.Round(System.Half x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static System.Half IFloatingPoint.Round(System.Half x, TInteger digits) { throw null; } @@ -3276,6 +3286,8 @@ public GopherStyleUriParser() { } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static System.Half IFloatingPoint.Sin(System.Half x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static (System.Half, System.Half) IFloatingPoint.SinCos(System.Half x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static System.Half IFloatingPoint.Sinh(System.Half x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static System.Half IFloatingPoint.Sqrt(System.Half x) { throw null; } @@ -3508,12 +3520,15 @@ public partial interface IFloatingPoint : System.ISignedNumber static abstract TSelf MaxMagnitude(TSelf x, TSelf y); static abstract TSelf MinMagnitude(TSelf x, TSelf y); static abstract TSelf Pow(TSelf x, TSelf y); + static abstract TSelf ReciprocalEstimate(TSelf x); + static abstract TSelf ReciprocalSqrtEstimate(TSelf x); static abstract TSelf Round(TSelf x); static abstract TSelf Round(TSelf x, TInteger digits) where TInteger : IBinaryInteger; static abstract TSelf Round(TSelf x, MidpointRounding mode); static abstract TSelf Round(TSelf x, TInteger digits, MidpointRounding mode) where TInteger : IBinaryInteger; static abstract TSelf ScaleB(TSelf x, TInteger n) where TInteger : IBinaryInteger; static abstract TSelf Sin(TSelf x); + static abstract (TSelf, TSelf) SinCos(TSelf x); static abstract TSelf Sinh(TSelf x); static abstract TSelf Sqrt(TSelf x); static abstract TSelf Tan(TSelf x); @@ -5606,6 +5621,10 @@ public SerializableAttribute() { } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Pow(float x, float y) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static float IFloatingPoint.ReciprocalEstimate(float x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static float IFloatingPoint.ReciprocalSqrtEstimate(float x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Round(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Round(float x, TInteger digits) { throw null; } @@ -5618,6 +5637,8 @@ public SerializableAttribute() { } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Sin(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + static float IFloatingPoint.SinCos(float x) { throw null; } + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Sinh(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Sqrt(float x) { throw null; } From 95d5ab0334a1d4fa2c3c7484acb279bac43969f2 Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Thu, 23 Sep 2021 16:37:56 +0300 Subject: [PATCH 3/6] Same --- src/libraries/System.Runtime/ref/System.Runtime.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index 2d46256ef4ea70..59a087e6c630ba 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -5637,7 +5637,7 @@ public SerializableAttribute() { } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Sin(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - static float IFloatingPoint.SinCos(float x) { throw null; } + static (float, float) IFloatingPoint.SinCos(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] static float IFloatingPoint.Sinh(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] From aa13b3f5ddcd1bf4693458c41f4e7745df4133f3 Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Wed, 12 Jan 2022 15:52:18 +0200 Subject: [PATCH 4/6] Missed conflict --- src/libraries/System.Runtime/ref/System.Runtime.cs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index fdcc46b9a20866..eea078c067bf7b 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -5624,15 +5624,11 @@ public SerializableAttribute() { } static float IFloatingPoint.MinMagnitude(float x, float y) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static float IFloatingPoint.Pow(float x, float y) { throw null; } -<<<<<<< HEAD - [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static float IFloatingPoint.ReciprocalEstimate(float x) { throw null; } - [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static float IFloatingPoint.ReciprocalSqrtEstimate(float x) { throw null; } - [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] -======= [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] ->>>>>>> upstream/main static float IFloatingPoint.Round(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static float IFloatingPoint.Round(float x, TInteger digits) { throw null; } @@ -5644,13 +5640,9 @@ public SerializableAttribute() { } static float IFloatingPoint.ScaleB(float x, TInteger n) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static float IFloatingPoint.Sin(float x) { throw null; } -<<<<<<< HEAD - [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] + [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static (float, float) IFloatingPoint.SinCos(float x) { throw null; } - [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] -======= [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] ->>>>>>> upstream/main static float IFloatingPoint.Sinh(float x) { throw null; } [System.Runtime.Versioning.RequiresPreviewFeaturesAttribute("Generic Math is in preview.", Url = "https://aka.ms/dotnet-warnings/generic-math-preview")] static float IFloatingPoint.Sqrt(float x) { throw null; } From 80bf1f21486ebc6fcfa9b030e26fa6d7e691ab32 Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Thu, 24 Mar 2022 14:28:58 +0200 Subject: [PATCH 5/6] Missed explicit implementation --- src/libraries/System.Private.CoreLib/src/System/Single.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Single.cs b/src/libraries/System.Private.CoreLib/src/System/Single.cs index 24a32015992dac..371efa10a571ef 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Single.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Single.cs @@ -672,10 +672,10 @@ public static TInteger ILogB(float x) public static float Pow(float x, float y) => MathF.Pow(x, y); /// - public static float IFloatingPoint.ReciprocalEstimate(float x) => MathF.ReciprocalEstimate(x); + public static float ReciprocalEstimate(float x) => MathF.ReciprocalEstimate(x); /// - public static float IFloatingPoint.ReciprocalSqrtEstimate(float x) => MathF.ReciprocalSqrtEstimate(x); + public static float ReciprocalSqrtEstimate(float x) => MathF.ReciprocalSqrtEstimate(x); /// public static float Round(float x) => MathF.Round(x); From 37c2ec11c37be9ece16ce5f7f71660261d507b93 Mon Sep 17 00:00:00 2001 From: Bar Arnon Date: Thu, 24 Mar 2022 14:59:06 +0200 Subject: [PATCH 6/6] Fix Signatures --- src/libraries/System.Private.CoreLib/src/System/Double.cs | 2 +- src/libraries/System.Private.CoreLib/src/System/Half.cs | 2 +- .../System.Private.CoreLib/src/System/IFloatingPoint.cs | 2 +- src/libraries/System.Private.CoreLib/src/System/Single.cs | 2 +- src/libraries/System.Runtime/ref/System.Runtime.cs | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Double.cs b/src/libraries/System.Private.CoreLib/src/System/Double.cs index 2a291ccd6ec238..f605d61c514d83 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Double.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Double.cs @@ -704,7 +704,7 @@ public static double ScaleB(double x, TInteger n) public static double Sin(double x) => Math.Sin(x); /// - public static (double, double) SinCos(double x) => Math.SinCos(x); + public static (double Sin, double Cos) SinCos(double x) => Math.SinCos(x); /// public static double Sinh(double x) => Math.Sinh(x); diff --git a/src/libraries/System.Private.CoreLib/src/System/Half.cs b/src/libraries/System.Private.CoreLib/src/System/Half.cs index d99163ca358626..9d8ce8432140ef 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Half.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Half.cs @@ -927,7 +927,7 @@ public static Half ScaleB(Half x, TInteger n) public static Half Sin(Half x) => (Half)MathF.Sin((float)x); /// - public static (Half, Half) SinCos(Half x) + public static (Half Sin, Half Cos) SinCos(Half x) { var (sin, cos) = MathF.SinCos((float)x); return ((Half)sin, (Half)cos); diff --git a/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs b/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs index a91a3798370870..219e121009198d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IFloatingPoint.cs @@ -266,7 +266,7 @@ static abstract TSelf ScaleB(TSelf x, TInteger n) /// Computes the sine and cosine of a value. /// The value, in radians, whose sine and cosine are to be computed. /// The sine and cosine of . - static abstract (TSelf, TSelf) SinCos(TSelf x); + static abstract (TSelf Sin, TSelf Cos) SinCos(TSelf x); /// Computes the hyperbolic sine of a value. /// The value, in radians, whose hyperbolic sine is to be computed. diff --git a/src/libraries/System.Private.CoreLib/src/System/Single.cs b/src/libraries/System.Private.CoreLib/src/System/Single.cs index 371efa10a571ef..f241dbd1b07550 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Single.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Single.cs @@ -699,7 +699,7 @@ public static float ScaleB(float x, TInteger n) public static float Sin(float x) => MathF.Sin(x); /// - public static (float, float) SinCos(float x) => MathF.SinCos(x); + public static (float Sin, float Cos) SinCos(float x) => MathF.SinCos(x); /// public static float Sinh(float x) => MathF.Sinh(x); diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index 5699892511691d..0ec230c5a2fe6a 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -2079,7 +2079,7 @@ public DivideByZeroException(string? message, System.Exception? innerException) public static System.Double ScaleB(System.Double x, TInteger n) where TInteger : IBinaryInteger { throw null; } public static System.Double Sign(System.Double value) { throw null; } public static System.Double Sin(System.Double x) { throw null; } - public static System.Double SinCos(System.Double x) { throw null; } + public static (System.Double Sin, System.Double Cos) SinCos(System.Double x) { throw null; } public static System.Double Sinh(System.Double x) { throw null; } public static System.Double Sqrt(System.Double x) { throw null; } static System.Double System.IAdditionOperators.operator +(System.Double left, System.Double right) { throw null; } @@ -2661,7 +2661,7 @@ public GopherStyleUriParser() { } public static System.Half ScaleB(System.Half x, TInteger n) where TInteger : IBinaryInteger { throw null; } public static System.Half Sign(System.Half value) { throw null; } public static System.Half Sin(System.Half x) { throw null; } - public static System.Half SinCos(System.Half x) { throw null; } + public static (System.Half Sin, System.Half Cos) SinCos(System.Half x) { throw null; } public static System.Half Sinh(System.Half x) { throw null; } public static System.Half Sqrt(System.Half x) { throw null; } static System.Half System.IBitwiseOperators.operator &(System.Half left, System.Half right) { throw null; } @@ -2824,7 +2824,7 @@ public partial interface IFloatingPoint : System.ISignedNumber static abstract TSelf Round(TSelf x, TInteger digits, MidpointRounding mode) where TInteger : IBinaryInteger; static abstract TSelf ScaleB(TSelf x, TInteger n) where TInteger : IBinaryInteger; static abstract TSelf Sin(TSelf x); - static abstract (TSelf, TSelf) SinCos(TSelf x); + static abstract (TSelf Sin, TSelf Cos) SinCos(TSelf x); static abstract TSelf Sinh(TSelf x); static abstract TSelf Sqrt(TSelf x); static abstract TSelf Tan(TSelf x); @@ -4387,7 +4387,7 @@ public SerializableAttribute() { } public static System.Single ScaleB(System.Single x, TInteger n) where TInteger : IBinaryInteger { throw null; } public static System.Single Sign(System.Single value) { throw null; } public static System.Single Sin(System.Single x) { throw null; } - public static System.Single SinCos(System.Single x) { throw null; } + public static (System.Single Sin, System.Single Cos) SinCos(System.Single x) { throw null; } public static System.Single Sinh(System.Single x) { throw null; } public static System.Single Sqrt(System.Single x) { throw null; } static System.Single System.IAdditionOperators.operator +(System.Single left, System.Single right) { throw null; }