9
$\begingroup$

Bug introduced in 9.0 or earlier and persisting through 11.0.1 or later


I'm developing code for manipulating graphs. Spot the difference in the 2 Manipulates below:

Manipulate[
 {n, m},
 {{n, 10, "no of vertices"}, 1, 18, 1},
 {{m, n, "number of edges"}, n, n (n - 1)/2 , 1}
 (* using the +/-/slider for the number of edges does not generate Reals 
    but only Integers as expected *)]

first image of Manipulate

this first example works as expected but

Manipulate[
 {n, m},
 {{n, 10, "no of vertices"}, 1, 18, 1},
 {{m, n, "number of edges"}, n - 1, n (n - 1) /2, 1}
 (* using the +/-/slider for the number of edges now generates Reals 
    not Integers: what gives? *)]

second image of Manipulate

turns my nice integers into reals as soon as I change the number of edges. I can turn this back into an integer when that's what I need, but I'd prefer not to. Naturally I have a more complex task to complete but these examples are simple enough to illustrate the issue.

Version: Mathematica 9.0.1.0

Platform: Mac

$\endgroup$
9
  • 2
    $\begingroup$ Possibly related: mathematica.stackexchange.com/q/16282/12 $\endgroup$
    – Szabolcs
    Commented Mar 12, 2014 at 18:43
  • $\begingroup$ yes, I saw that before posting my question but was a bit alarmed by it and it didn't seem obviously the same problem at first sight (I didn't realise I was using the 2nd argument to Dynamic...). Also, Remap{Value,Variable} didn't appear on closer inspection of the Manipulates $\endgroup$
    – fairflow
    Commented Mar 12, 2014 at 18:46
  • $\begingroup$ Yes, I was checking that too. I don't know if the underlying problem is the same in the two cases but the symptoms are very similar. $\endgroup$
    – Szabolcs
    Commented Mar 12, 2014 at 18:51
  • 1
    $\begingroup$ I don't know, it's all too unclear to me now, but the behaviour is definitely undesirable. You could try asking support about it and let us know what they said ... I'm trying to come up with a more fundamental example to at least figure out the difference between the two Manipulates. $\endgroup$
    – Szabolcs
    Commented Mar 12, 2014 at 18:59
  • 1
    $\begingroup$ Good idea. I'll post when I get a reply. $\endgroup$
    – fairflow
    Commented Mar 12, 2014 at 19:01

1 Answer 1

6
$\begingroup$

This is an example of unintended behavior in Mathematica that the developers are aware of. There are a number of workarounds. The simplest is to wrap a function around the appropriate bounds; instead of

Manipulate[m, {n, {10}}, {m, n - 1, 2 n, 1}]

which illustrates the problem, try

Manipulate[Floor@m, {n, {10}}, {m, n - 1, 2 n, 1}]

A solution can also be pushed into the controller itself:

Manipulate[m, {n, {10}}, {{m, 9}, Dynamic[Slider[#1, {n - 1, 2 n, 1}]] &}]

Thanks for this feedback and suggestions are due to Karl Isensee.

$\endgroup$
1
  • 1
    $\begingroup$ But the bug is still now. $\endgroup$
    – yode
    Commented Oct 13, 2015 at 10:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.