diff options
Diffstat (limited to 'mpi/mpi-cmp.c')
-rw-r--r-- | mpi/mpi-cmp.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mpi/mpi-cmp.c b/mpi/mpi-cmp.c index e119fad04..3c1322a10 100644 --- a/mpi/mpi-cmp.c +++ b/mpi/mpi-cmp.c @@ -20,6 +20,7 @@ #include <config.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "mpi-internal.h" int @@ -49,6 +50,21 @@ mpi_cmp( MPI u, MPI v ) mpi_size_t usize, vsize; int cmp; + if (mpi_is_opaque (u) || mpi_is_opaque (v)) + { + if (mpi_is_opaque (u) && !mpi_is_opaque (v)) + return -1; + if (!mpi_is_opaque (u) && mpi_is_opaque (v)) + return 1; + if (!u->nbits && !v->nbits) + return 0; /* Empty buffers are identical. */ + if (u->nbits < v->nbits) + return -1; + if (u->nbits > v->nbits) + return 1; + return memcmp (u->d, v->d, u->nbits); + } + mpi_normalize( u ); mpi_normalize( v ); usize = u->nlimbs; |