[gecode-users] unsigned 32bit representation, additions

Serg Buslovsky serg.buslovsky at gmail.com
Wed Mar 11 19:23:13 CET 2015


Hi Group,

This is helpful, thank you.
I'll take a look at Kellen Dye's work and L. D. Michel and P. Van
Hentenryck paper.


Thanks,
Serg

On Wed, Mar 11, 2015 at 8:13 AM Jean-Noël Monette <
jean-noel.monette at it.uu.se> wrote:

>  Hi Serg,
>
> Kellen Dye implemented a Bit-Vector domain implementation for Gecode for
> his master thesis. You can find his thesis at
>
> http://uu.diva-portal.org/smash/record.jsf?pid=diva2%3A761927&dswid=8488
>
> and the source-code at
>
> https://github.com/kellen/bitvector-masters
>
> He did not implement the addition constraint but the paper on which he
> based his implementation gives an algorithm for the addition:
>
> L. D. Michel and P. Van Hentenryck. *Constraint* *Satisfaction* *over*
> *Bit-Vectors*.
> http://link.springer.com/chapter/10.1007/978-3-642-33558-7_39
>
> Best,
>
> Jean-Noël
>
>
>
> On 2015-03-11 10:17, Christian Schulte wrote:
>
>  Hi Serg,
>
>
>
> For the time being there is not much that you can do about this. And
> Gecode cannot be easily recompiled using unsigned ints (or 64 bit integers
> for that matter). I think some people have been experimenting with
> arbitrary precision integers as well as bit vectors but I do not know how
> far that got. Anybody?
>
>
>
> Best
>
> Christian
>
>
>
> --
>
> Christian Schulte, www.gecode.org/~schulte
>
> Professor of Computer Science, KTH, cschulte at kth.se
>
> Expert Researcher, SICS, cschulte at sics.se
>
>
>
> *From:* users-bounces at gecode.org [mailto:users-bounces at gecode.org
> <users-bounces at gecode.org>] *On Behalf Of *Serg Buslovsky
> *Sent:* Wednesday, March 11, 2015 6:54 AM
> *To:* users at gecode.org
> *Subject:* [gecode-users] unsigned 32bit representation, additions
>
>
>
> Hi Group,
>
>
>
> I'm thinking about the ways of implementing 32bit unsigned integer
> representations in gecode model.
>
> So I have 32 BoolVar's per uint32 representation, which are used to store
> corresponding bits, then I can easily define bitwise operations on
> "integers" by posting relation constraints on the bits.
>
> The problem is with the addition.
>
> My first approach was to add an IntVar, post linear constraints with
> powers of 2 as coefficients to reconstruct integer from bits, however
> gecode limits IntVar into signed int bounds and it doesn't fit.
>
> The second approach was to just implement binary addition:
>
>             bool lsb = true;
>
>             for (int i=(INT_BITS-1); i>=0; i--) {
>
>                         BoolVarArgs bits;
>
>                         bits << bools[i] << x->bools[i];
>
>                         if (!lsb) {
>
>                                     bits << result->bools[INT_BITS+i+1];
>
>                         }
>
>                         rel(*model, BOT_XOR, bits, result->bools[i]);
>
>                         if (lsb) {
>
>                                     rel(*model, BOT_AND, bits,
> result->bools[INT_BITS+i]);
>
>                                     lsb = false;
>
>                         } else {
>
>                                     linear(*model, bits, IRT_GQ, 2,
> result->bools[INT_BITS+i]);
>
>                         }
>
>             }
>
> (bools[i] - bits of the first "integer", x->bools[i] - bits of the second
> "integer", result->bools[i] - bits of the resulting "integer",
> result->bools[INT_BITS+i] - carry bits)
>
> That works but it turned out to be very inefficient in practice,
> complexity of the model is growing exponentially with this approach.
>
>
>
> Any thoughts? Maybe there's a way to recompile gecode to use unsigned int
> internally? Maybe there are ideas on better implementation of addition?
> Maybe just some suggestion on another tool which uses unsigned ints
> internally?
>
>
>
>
>
> Thanks,
>
> Serg
>
>
> _______________________________________________
> Gecode users mailing listusers at gecode.orghttps://www.gecode.org/mailman/listinfo/gecode-users
>
>
>  _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20150311/c8540b9f/attachment-0001.html>


More information about the users mailing list