@@ -107,27 +107,8 @@ static inline void bc_mul_finish_from_vector(BC_VECTOR *prod_vector, size_t prod
107107	* prod  =  bc_new_num_nonzeroed (prodlen , 0 );
108108	char  * pptr  =  (* prod )-> n_value ;
109109	char  * pend  =  pptr  +  prodlen  -  1 ;
110- 	size_t  i  =  0 ;
111- 	while  (i  <  prod_arr_size  -  1 ) {
112- #if  BC_VECTOR_SIZE  ==  4 
113- 		bc_write_bcd_representation (prod_vector [i ], pend  -  3 );
114- 		pend  -=  4 ;
115- #else 
116- 		bc_write_bcd_representation (prod_vector [i ] / 10000 , pend  -  7 );
117- 		bc_write_bcd_representation (prod_vector [i ] % 10000 , pend  -  3 );
118- 		pend  -=  8 ;
119- #endif 
120- 		i ++ ;
121- 	}
122110
123- 	/* 
124- 	 * The last digit may carry over. 
125- 	 * Also need to fill it to the end with zeros, so loop until the end of the string. 
126- 	 */ 
127- 	while  (pend  >= pptr ) {
128- 		* pend --  =  prod_vector [i ] % BASE ;
129- 		prod_vector [i ] /= BASE ;
130- 	}
111+ 	bc_convert_vector_to_char (prod_vector , pptr , pend , prod_arr_size );
131112}
132113
133114/* 
@@ -145,9 +126,9 @@ static void bc_standard_mul(bc_num n1, size_t n1len, bc_num n2, size_t n2len, bc
145126	const  char  * n2end  =  n2 -> n_value  +  n2len  -  1 ;
146127	size_t  prodlen  =  n1len  +  n2len ;
147128
148- 	size_t  n1_arr_size  =  (n1len   +   BC_VECTOR_SIZE   -   1 ) /  BC_VECTOR_SIZE ;
149- 	size_t  n2_arr_size  =  (n2len   +   BC_VECTOR_SIZE   -   1 ) /  BC_VECTOR_SIZE ;
150- 	size_t  prod_arr_size  =  (prodlen   +   BC_VECTOR_SIZE   -   1 ) /  BC_VECTOR_SIZE ;
129+ 	size_t  n1_arr_size  =  BC_ARR_SIZE_FROM_LEN (n1len ) ;
130+ 	size_t  n2_arr_size  =  BC_ARR_SIZE_FROM_LEN (n2len ) ;
131+ 	size_t  prod_arr_size  =  BC_ARR_SIZE_FROM_LEN (prodlen ) ;
151132
152133	BC_VECTOR  stack_vectors [BC_STACK_VECTOR_SIZE ];
153134	size_t  allocation_arr_size  =  n1_arr_size  +  n2_arr_size  +  prod_arr_size ;
@@ -206,8 +187,8 @@ static void bc_standard_square(bc_num n1, size_t n1len, bc_num *prod)
206187	const  char  * n1end  =  n1 -> n_value  +  n1len  -  1 ;
207188	size_t  prodlen  =  n1len  +  n1len ;
208189
209- 	size_t  n1_arr_size  =  (n1len   +   BC_VECTOR_SIZE   -   1 ) /  BC_VECTOR_SIZE ;
210- 	size_t  prod_arr_size  =  (prodlen   +   BC_VECTOR_SIZE   -   1 ) /  BC_VECTOR_SIZE ;
190+ 	size_t  n1_arr_size  =  BC_ARR_SIZE_FROM_LEN (n1len ) ;
191+ 	size_t  prod_arr_size  =  BC_ARR_SIZE_FROM_LEN (prodlen ) ;
211192
212193	BC_VECTOR  * buf  =  safe_emalloc (n1_arr_size  +  n1_arr_size  +  prod_arr_size , sizeof (BC_VECTOR ), 0 );
213194
0 commit comments