Hi Filip, sorry for the long delay, but I was away from my keyboard. Yes, you are right! I just added your fix to the trunk. For the integer variables it did not show, as med_fst == 0 for them.
The script that generates the variable stubs is misc/genvariables.perl (line 608). Thanks for the fix! Cheers Christian -- Christian Schulte, www.ict.kth.se/~cschulte/ -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Filip Konvicka Sent: Monday, April 14, 2008 2:28 PM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: [gecode-users] kernel issues Hi, so Lubos started working on the FloatVar implementation and he's discovered something that looks like a bug in Gecode. Initially, we just copied "integer.vis" to "float.vis" and renamed the identifiers so we got "_FLOAT_" instead of "_INT_" everywhere. (Later on, we'll probably at least remove the "DOM" modification event and propagation condition.) So in short: [General] Name: Float Ifdef: GECODE_HAS_FLOAT_VARS Namespace: Gecode::Float and the rest goes exactly the same as with IntVar. Then we tried posting a propagator on a FloatVar, but unexpectedly nothing happened. Lubos tracked this down to the following code fragment in kernel/var-type.icc: case ME_FLOAT_BND: { static const Gecode::ModEvent me_c = ( ((ME_FLOAT_NONE ^ ME_FLOAT_BND ) << 0) | ((ME_FLOAT_VAL ^ ME_FLOAT_VAL ) << 4) | ((ME_FLOAT_BND ^ ME_FLOAT_BND ) << 8) | ((ME_FLOAT_DOM ^ ME_FLOAT_BND ) << 12) ); Gecode::ModEvent me_o = (med & med_mask) >> med_fst; Gecode::ModEvent me_n = (me_c >> (me_o << 2)) & med_mask; if (me_n == 0) return false; med ^= me_n << med_fst; break; } This is similar to what is generated for IntVars (ME_INT_BND), but it seems that the condition (me_n == 0) always evaluates to true for FloatVars, and so nothing ever happens. Lubos fixed this by changing the appropriate line to Gecode::ModEvent me_n = (me_c >> (me_o << 2)) & (med_mask >> med_fst); This seems logical to me. Do you know what script to fix in order to get it generated this way? Thanks, Filip _______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users _______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users
