@@ -6,6 +6,10 @@ namespace VReflector;
6
6
7
7
public static class IsNumerics
8
8
{
9
+ public static bool InRange < T > ( [ DisallowNull ] T comparable , T ? from , T ? to )
10
+ where T : IComparable < T > =>
11
+ comparable . CompareTo ( from ) >= 0 &&
12
+ comparable . CompareTo ( to ) <= 0 ;
9
13
public static bool NumericType ( [ NotNullWhen ( true ) ] object ? obj )
10
14
{
11
15
return obj is double or float or byte or sbyte or decimal or int or uint or long or ulong or short or ushort or Half ;
@@ -109,22 +113,18 @@ public static bool GreaterThan<T>(T a, T b) where T : INumber<T>, IComparable<T>
109
113
{
110
114
return a ? . CompareTo ( b ) > 0 ;
111
115
}
112
-
113
116
public static bool LessThan < T > ( T a , T b ) where T : INumber < T > , IComparable < T >
114
117
{
115
118
return a ? . CompareTo ( b ) < 0 ;
116
119
}
117
-
118
120
public static bool GreaterThanOrEqual < T > ( T a , T b ) where T : INumber < T > , IComparable < T >
119
121
{
120
122
return a ? . CompareTo ( b ) >= 0 ;
121
123
}
122
-
123
124
public static bool LessThanOrEqual < T > ( T a , T b ) where T : INumber < T > , IComparable < T >
124
125
{
125
126
return a ? . CompareTo ( b ) <= 0 ;
126
127
}
127
-
128
128
public static bool AreEqual < T > ( T a , T b ) where T : INumber < T > , IComparable < T >
129
129
{
130
130
return a ? . CompareTo ( b ) == 0 ;
@@ -268,13 +268,25 @@ public static bool IsInfinity<T>(T value) where T : INumber<T>
268
268
}
269
269
return false ;
270
270
}
271
- public static bool IsZero < T > ( T value ) where T : INumber < T >
271
+ public static bool IsPositive < T > ( T value ) where T : INumber < T > , IComparable < T >
272
+ {
273
+ return value ? . CompareTo ( T . Zero ) > 0 ;
274
+ }
275
+ public static bool IsNegative < T > ( T value ) where T : INumber < T > , IComparable < T >
276
+ {
277
+ return value ? . CompareTo ( T . Zero ) < 0 ;
278
+ }
279
+ public static bool IsZero < T > ( T value ) where T : INumber < T > , IComparable < T >
280
+ {
281
+ return value ? . CompareTo ( T . Zero ) == 0 ;
282
+ }
283
+ public static bool IsPositiveOrZero < T > ( T value ) where T : INumber < T > , IComparable < T >
272
284
{
273
- return value == T . Zero ;
285
+ return value ? . CompareTo ( T . Zero ) >= 0 ;
274
286
}
275
- public static T Negate < T > ( T value ) where T : INumber < T >
287
+ public static bool IsNegativeOrZero < T > ( T value ) where T : INumber < T > , IComparable < T >
276
288
{
277
- return - value ;
289
+ return value ? . CompareTo ( T . Zero ) <= 0 ;
278
290
}
279
291
public static T GCD < T > ( T a , T b ) where T : INumber < T >
280
292
{
0 commit comments