Fix bug in mpi_safe_cond_assign()

This commit is contained in:
Manuel Pégourié-Gonnard 2013-11-21 21:12:26 +01:00
parent 918148193d
commit 3e3d2b818c
3 changed files with 17 additions and 4 deletions

View file

@ -222,6 +222,7 @@ int mpi_safe_cond_assign( mpi *X, mpi *Y, unsigned char assign )
MPI_CHK( mpi_grow( X, Y->n ) );
/* Do the conditional assign safely */
X->s = X->s * (1 - assign) + Y->s * assign;
for( i = 0; i < X->n; i++ )
X->p[i] = X->p[i] * (1 - assign) + Y->p[i] * assign;

View file

@ -206,13 +206,22 @@ Test mpi_shrink #8
mpi_shrink:4:0:0:1
Test mpi_safe_cond_assign #1
mpi_safe_cond_assign:"01":"02"
mpi_safe_cond_assign:+1:"01":+1:"02"
Test mpi_safe_cond_assign #2
mpi_safe_cond_assign:"FF000000000000000001":"02"
mpi_safe_cond_assign:+1:"FF000000000000000001":+1:"02"
Test mpi_safe_cond_assign #3
mpi_safe_cond_assign:"01":"FF000000000000000002"
mpi_safe_cond_assign:+1:"01":+1:"FF000000000000000002"
Test mpi_safe_cond_assign #4
mpi_safe_cond_assign:+1:"01":-1:"02"
Test mpi_safe_cond_assign #5
mpi_safe_cond_assign:-1:"01":+1:"02"
Test mpi_safe_cond_assign #6
mpi_safe_cond_assign:-1:"01":-1:"02"
Base test mpi_add_abs #1
mpi_add_abs:10:"12345678":10:"642531":10:"12988209"

View file

@ -309,13 +309,16 @@ void mpi_shrink( int before, int used, int min, int after )
/* END_CASE */
/* BEGIN_CASE */
void mpi_safe_cond_assign( char *x_str, char *y_str )
void mpi_safe_cond_assign( int x_sign, char *x_str,
int y_sign, char *y_str )
{
mpi X, Y, XX;
mpi_init( &X ); mpi_init( &Y ); mpi_init( &XX );
TEST_ASSERT( mpi_read_string( &X, 16, x_str ) == 0 );
X.s = x_sign;
TEST_ASSERT( mpi_read_string( &Y, 16, y_str ) == 0 );
Y.s = y_sign;
TEST_ASSERT( mpi_copy( &XX, &X ) == 0 );
TEST_ASSERT( mpi_safe_cond_assign( &X, &Y, 0 ) == 0 );