math.big: fix subtract_digit_array (#11451)
							parent
							
								
									1a2d5f65fb
								
							
						
					
					
						commit
						c8d4a64512
					
				|  | @ -69,7 +69,7 @@ fn add_digit_array(operand_a []u32, operand_b []u32, mut sum []u32) { | |||
| 
 | ||||
| // Subtracts operand_b from operand_a and stores the difference in storage.
 | ||||
| // It assumes operand_a contains the larger "integer" and that storage is
 | ||||
| // the same size as operand_a
 | ||||
| // the same size as operand_a and is 0
 | ||||
| fn subtract_digit_array(operand_a []u32, operand_b []u32, mut storage []u32) { | ||||
| 	// Zero length cases
 | ||||
| 	if operand_a.len == 0 { | ||||
|  | @ -104,7 +104,7 @@ fn subtract_digit_array(operand_a []u32, operand_b []u32, mut storage []u32) { | |||
| 		storage[index] = u32(a_digit - b_digit) | ||||
| 	} | ||||
| 
 | ||||
| 	if storage.last() == 0 { | ||||
| 	for storage.len > 0 && storage.last() == 0 { | ||||
| 		storage.delete_last() | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -81,6 +81,14 @@ fn test_subtract_digit_array_03() { | |||
| 	assert c == [u32(0), 0, u32(-1), u32(-1), 0, 13] | ||||
| } | ||||
| 
 | ||||
| fn test_subtract_digit_array_04() { | ||||
| 	a := [u32(0x2), 0x4, 0x5, 0x3] | ||||
| 	b := [u32(0x0), 0x0, 0x5, 0x3] | ||||
| 	mut c := []u32{len: a.len} | ||||
| 	subtract_digit_array(a, b, mut c) | ||||
| 	assert c == [u32(0x2), 0x4] | ||||
| } | ||||
| 
 | ||||
| fn test_multiply_digit_array_01() { | ||||
| 	a := [u32(0), 0, 0, 1] | ||||
| 	b := [u32(0), 0, 1] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue