@@ -7789,35 +7789,33 @@ public static W MultiplyAddWidening<W, N>(W op1, N op2, N op3)
7789
7789
where W : IBinaryInteger < W >
7790
7790
where N : IBinaryInteger < N >
7791
7791
{
7792
- dynamic a = op2 ;
7793
- dynamic b = op3 ;
7794
- W product = ( W ) ( ( W ) a * ( W ) b ) ;
7795
- W r = ( W ) ( op1 + product ) ;
7796
- return r ;
7792
+ W a = W . CreateChecked ( op2 ) ;
7793
+ W b = W . CreateChecked ( op3 ) ;
7794
+ W product = W . CreateTruncating ( a * b ) ;
7795
+ return W . CreateTruncating ( op1 + product ) ;
7797
7796
}
7798
7797
7799
7798
public static W MultiplySubtractWidening < W , N > ( W op1 , N op2 , N op3 )
7800
7799
where W : IBinaryInteger < W >
7801
7800
where N : IBinaryInteger < N >
7802
7801
{
7803
- dynamic a = op2 ;
7804
- dynamic b = op3 ;
7805
- W product = ( W ) ( ( W ) a * ( W ) b ) ;
7806
- W r = ( W ) ( op1 - product ) ;
7807
- return r ;
7802
+ W a = W . CreateChecked ( op2 ) ;
7803
+ W b = W . CreateChecked ( op3 ) ;
7804
+ W product = W . CreateTruncating ( a * b ) ;
7805
+ return W . CreateTruncating ( op1 - product ) ;
7808
7806
}
7809
7807
7810
7808
public static N AddRoundedHighNarrowing < W , N > ( W op1 , W op2 )
7811
7809
where W : IBinaryInteger < W >
7812
7810
where N : IBinaryInteger < N >
7813
7811
{
7814
7812
int halfsize = default ( N ) . GetByteCount ( ) * 8 ;
7815
- dynamic a = op1 ;
7816
- dynamic b = op2 ;
7817
- ulong sum = ( ulong ) a + ( ulong ) b ;
7813
+ ulong a = ulong . CreateChecked ( op1 ) ;
7814
+ ulong b = ulong . CreateChecked ( op2 ) ;
7815
+ ulong sum = a + b ;
7818
7816
ulong bias = 1UL << ( halfsize - 1 ) ;
7819
- dynamic result = sum + bias ;
7820
- return ( N ) ( result >> halfsize ) ;
7817
+ ulong result = ( sum + bias ) >> halfsize ;
7818
+ return N . CreateTruncating ( result ) ;
7821
7819
}
7822
7820
7823
7821
public static N AddRoundedHighNarrowingEven < W , N > ( W op1 , W op2 , int i )
@@ -7839,12 +7837,12 @@ public static N SubtractRoundedHighNarrowing<W, N>(W op1, W op2)
7839
7837
where N : IBinaryInteger < N >
7840
7838
{
7841
7839
int halfsize = default ( N ) . GetByteCount ( ) * 8 ;
7842
- dynamic a = op1 ;
7843
- dynamic b = op2 ;
7840
+ ulong a = ulong . CreateChecked ( op1 ) ;
7841
+ ulong b = ulong . CreateChecked ( op2 ) ;
7844
7842
ulong sum = ( ulong ) a - ( ulong ) b ;
7845
7843
ulong bias = 1UL << ( halfsize - 1 ) ;
7846
- dynamic result = sum + bias ;
7847
- return ( N ) ( result >> halfsize ) ;
7844
+ ulong result = ( sum + bias ) >> halfsize ;
7845
+ return N . CreateTruncating ( result ) ;
7848
7846
}
7849
7847
7850
7848
public static N SubtractRoundedHighNarrowingEven < W , N > ( W op1 , W op2 , int i )
0 commit comments