[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: failure to post arithmetic constraint

**From**: |
Daniel Diaz |

**Subject**: |
Re: failure to post arithmetic constraint |

**Date**: |
Tue, 05 Feb 2002 19:28:19 +0100 |

Hi Bowie,
you have to define the (relative small) domains of your variables before
settings constraints. In
particular non-linear constraints. In A*X #= Y the max of Y is max(X) * max(A)
which leads to an
overflow on our integers. Recall that FD are for (small) finite domains... :-))
Bowie Owens wrote:
>* *
>* Hi,*
>* *
>* I am having difficulty posting some simple arithmetic constraints in*
>* GNU Prolog 1.2.8 (and 1.2.9) under x86 Linux. The problems come from*
>* the multiplication of otherwise unconstrained variables. There does seem*
>* to be some interaction with the vector representation of variables. As*
>* using full AC equality forces use of the vector representation when I*
>* would not expect it to do so.*
>* *
>* | ?- A * X #= Y.*
>* *
>* no*
>* | ?- A+X #=< 127, A * X #= Y.*
>* *
>* A = _#22(0..127)*
>* X = _#41(0..127)*
>* Y = _#86(0..16129)*
>* *
>* yes*
>* | ?- A+X #>= 127, A * X #= Y.*
>* *
>* no*
>* | ?- A * X #=# Y.*
>* *
>* A = _#3(0..268435455)*
>* X = _#22(0..268435455)*
>* Y = _#41(0..127@)*
>* *
>* yes*
>* | ?- A+X #>= 127, A * X #=# Y.*
>* *
>* A = _#22(0..268435455)*
>* X = _#41(0..268435455)*
>* Y = _#86(0..127@)*
>* *
>* yes*
>* | ?- A+X #=< 127, A * X #=# Y.*
>* *
>* A = _#22(0..127)*
>* X = _#41(0..127)*
>* Y = _#86(0..127)*
>* *
>* yes*
>* *
>* -- Bowie Owens*
>* *
>* CSIRO Mathematical & Information Sciences*
>* phone : +61 3 9545 8055*
>* email : address@hidden*
>* *
>* _______________________________________________*
>* Bug-prolog mailing list*
>* address@hidden*
>* http://mail.gnu.org/mailman/listinfo/bug-prolog*
--
Daniel Diaz address@hidden
http://pauillac.inria.fr/~diaz
gprolog --version 2>&1 | sed -n -e 's/By //p'

**Re: failure to post arithmetic constraint**,
*Daniel Diaz* **<=**