diff options
author | Thomas Jespersen <laumann.thomas@gmail.com> | 2014-12-31 10:26:44 +0100 |
---|---|---|
committer | Thomas Jespersen <laumann.thomas@gmail.com> | 2014-12-31 10:26:44 +0100 |
commit | 1b580a8c9962f0d6081b4fa297ab33b8e3b095b2 (patch) | |
tree | 303e484c354788e8ba7712c6499e697fc4ebd626 /src | |
parent | 165d7d8bc3a25ce11706a9e9951240eba1b678f2 (diff) |
Fix soleg_encode_end()
Diffstat (limited to 'src')
-rw-r--r-- | src/sole-gmp.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/sole-gmp.c b/src/sole-gmp.c index 2b3bcef..88b6419 100644 --- a/src/sole-gmp.c +++ b/src/sole-gmp.c @@ -333,35 +333,30 @@ void soleg_encode_end(soleg_stream *strm) stream_stat(strm); /* Writes the last two-three blocks */ - mpz_t db, res; - mpz_inits(db, res, NULL); - int have_even_blocks = strm->offset > BLK128SIZ; + mpz_t db, res, eof; + mpz_inits(db, res, eof, NULL); + + bool have_even_blocks = strm->offset > BLK128SIZ; if (have_even_blocks) { soleg_encode_blk256(strm); /* Composed double EOF */ - mpz_setbit(db, 256); - mpz_setbit(db, 129); - soleg_pass1_decompose(db, strm->r, db, strm->b3i); + mpz_setbit(eof, 256); + mpz_setbit(eof, 129); + + soleg_pass1_decompose(db, strm->r, eof, strm->b3i); } else { - mpz_t eof; mpz_setbit(eof, 128); - - blk256_set(&db, 0, strm->b1->hi, strm->b1->lo, strm->b1->hi, strm->b1->lo); - /* blk256_set(&eof, 0, 0, 1, 0, 0); */ - - /* Custom compose */ - blk256_add(&db, &db, &eof); - - soleg_pass1_decompose(&db, strm->r, &db, strm->b3i, strm->i3); + soleg_pass1_compose(db, strm->b1, eof); + soleg_pass1_decompose(db, strm->r, db, strm->b3i); } - soleg_pass2_regroup(&res, strm->q, strm->r, strm->i3); - soleg_put_blk256(strm, &res); + soleg_pass2_regroup(res, strm->q, strm->r, strm->i3); + soleg_put_blk256(strm, res); /* Cheeky implementation of final Pass 2 */ - soleg_put_blk256(strm, &db); + soleg_put_blk256(strm, db); } /** @@ -394,7 +389,6 @@ void soleg_pass1_compose(mpz_t rop, /** * Decompose a 256-bit block by (B-3i) - * */ void soleg_pass1_decompose(mpz_t q, mpz_t rem, @@ -417,6 +411,6 @@ void soleg_pass2_regroup(mpz_t rop, mpz_t y, mpz_t i3) { - mpz_mul(rop, y, i3); - mpz_add(rop, rop, x); + mpz_set(rop, x); + mpz_addmul(rop, y, i3); } |