[eclipse-clp-users] Integer exponentiation in ic

From: Matthew Skala <mskala_at_cs.toronto.edu>
Date: Sat, 4 May 2013 20:34:49 -0500 (CDT)
Exponentiation constraints don't seem to be exact; they produce real
intervals bracketing the correct answer, even when evaluated on
positive integers where the result must be integer too:

   [eclipse 1]: lib(ic).
   % blah blah
   Yes (0.13s cpu)
   [eclipse 2]: X#=2,Y#=2,Z#=X^Y.

   No (0.00s cpu)
   [eclipse 3]: X#=2,Y#=2,Z$=X^Y.

   X = 2
   Y = 2
   Z = 3.9999999999999987__4.0000000000000018


   Delayed goals:
	   0.69314718055994518__0.6931471805599454 =:=
   0.69314718055994518__0.6931471805599454
	   2 =:= 1.9999999999999993__2.0000000000000009
   Yes (0.00s cpu)

It looks like it's translating the constraint Z#=X^Y into ln(Z)$=ln(X)*Y
behind the scenes, then failing because of the attempted assignment of a
real interval to an integer variable.  Is there any simple way to enforce
an exponentiation constraint on integers that will keep them integers and
propagate exact answers?

-- 
Matthew Skala
Postdoctoral Fellow, University of Manitoba
mskala_at_cs.umanitoba.ca
Received on Sun May 05 2013 - 01:53:07 CEST

This archive was generated by hypermail 2.2.0 : Wed May 08 2013 - 18:13:21 CEST