@@ -2299,21 +2299,27 @@ public static uint AddCarryWideningEven(uint[] op1, uint[] op2, uint[] op3, int
2299
2299
ulong res ;
2300
2300
2301
2301
if ( i < 0 || i >= op1 . Length || i >= op2 . Length || i >= op3 . Length )
2302
+ {
2302
2303
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i is out of range" ) ;
2304
+ }
2303
2305
2304
2306
if ( i % 2 == 0 )
2305
2307
{
2306
- if ( i + 1 >= op3 . Length )
2307
- throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range for op3." ) ;
2308
+ if ( i + 1 >= op2 . Length )
2309
+ {
2310
+ throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range." ) ;
2311
+ }
2308
2312
2309
2313
lsb = op2 [ i + 1 ] & 1u ;
2310
2314
res = ( ulong ) op1 [ i ] + op3 [ i ] + lsb ;
2311
2315
return ( uint ) res ;
2312
2316
}
2313
2317
else
2314
2318
{
2315
- if ( i - 1 < 0 )
2319
+ if ( i - 1 < 0 || i - 1 >= op1 . Length || i - 1 >= op3 . Length )
2320
+ {
2316
2321
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i - 1 is out of range." ) ;
2322
+ }
2317
2323
2318
2324
lsb = op2 [ i ] & 1u ;
2319
2325
res = ( ulong ) op1 [ i - 1 ] + op3 [ i - 1 ] + lsb ;
@@ -2329,21 +2335,27 @@ public static uint AddCarryWideningOdd(uint[] op1, uint[] op2, uint[] op3, int i
2329
2335
ulong res ;
2330
2336
2331
2337
if ( i < 0 || i >= op1 . Length || i >= op2 . Length || i >= op3 . Length )
2338
+ {
2332
2339
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i is out of range" ) ;
2340
+ }
2333
2341
2334
2342
if ( i % 2 == 0 )
2335
2343
{
2336
- if ( i + 1 >= op3 . Length )
2337
- throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range for op3." ) ;
2344
+ if ( i + 1 >= op1 . Length || i + 1 >= op2 . Length )
2345
+ {
2346
+ throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range." ) ;
2347
+ }
2338
2348
2339
2349
lsb = op2 [ i + 1 ] & 1u ;
2340
- res = ( ulong ) op1 [ i + 1 ] + op3 [ i ] + lsb ;
2350
+ res = ( ulong ) op1 [ i + 1 ] + op3 [ i ] + lsb ;
2341
2351
return ( uint ) res ;
2342
2352
}
2343
2353
else
2344
2354
{
2345
- if ( i - 1 < 0 )
2355
+ if ( i - 1 < 0 || i - 1 >= op3 . Length )
2356
+ {
2346
2357
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i - 1 is out of range." ) ;
2358
+ }
2347
2359
2348
2360
lsb = op2 [ i ] & 1u ;
2349
2361
res = ( ulong ) op1 [ i ] + op3 [ i - 1 ] + lsb ;
@@ -2482,21 +2494,27 @@ public static ulong AddCarryWideningEven(ulong[] op1, ulong[] op2, ulong[] op3,
2482
2494
ulong res ;
2483
2495
2484
2496
if ( i < 0 || i >= op1 . Length || i >= op2 . Length || i >= op3 . Length )
2497
+ {
2485
2498
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i is out of range" ) ;
2499
+ }
2486
2500
2487
2501
if ( i % 2 == 0 )
2488
2502
{
2489
- if ( i + 1 >= op3 . Length )
2503
+ if ( i + 1 >= op2 . Length )
2504
+ {
2490
2505
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range for op3." ) ;
2506
+ }
2491
2507
2492
2508
lsb = op2 [ i + 1 ] & 1UL ;
2493
2509
res = op1 [ i ] + op3 [ i ] + lsb ;
2494
2510
return res ;
2495
2511
}
2496
2512
else
2497
2513
{
2498
- if ( i - 1 < 0 )
2514
+ if ( i - 1 < 0 || i - 1 >= op1 . Length || i - 1 >= op3 . Length )
2515
+ {
2499
2516
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i - 1 is out of range." ) ;
2517
+ }
2500
2518
2501
2519
lsb = op2 [ i ] & 1UL ;
2502
2520
@@ -2517,21 +2535,27 @@ public static ulong AddCarryWideningOdd(ulong[] op1, ulong[] op2, ulong[] op3, i
2517
2535
ulong res ;
2518
2536
2519
2537
if ( i < 0 || i >= op1 . Length || i >= op2 . Length || i >= op3 . Length )
2538
+ {
2520
2539
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i is out of range" ) ;
2540
+ }
2521
2541
2522
2542
if ( i % 2 == 0 )
2523
2543
{
2524
- if ( i + 1 >= op3 . Length )
2525
- throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range for op3." ) ;
2544
+ if ( i + 1 >= op1 . Length || i + 1 >= op2 . Length )
2545
+ {
2546
+ throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i + 1 is out of range." ) ;
2547
+ }
2526
2548
2527
2549
lsb = op2 [ i + 1 ] & 1UL ;
2528
2550
res = op1 [ i + 1 ] + op3 [ i ] + lsb ;
2529
2551
return res ;
2530
2552
}
2531
2553
else
2532
2554
{
2533
- if ( i - 1 < 0 )
2555
+ if ( i - 1 < 0 || i - 1 >= op3 . Length )
2556
+ {
2534
2557
throw new ArgumentOutOfRangeException ( nameof ( i ) , "Index i - 1 is out of range." ) ;
2558
+ }
2535
2559
2536
2560
lsb = op2 [ i ] & 1UL ;
2537
2561
0 commit comments