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:

 {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

 {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

Platform: Mac

  • 2
    $\begingroup$ Possibly related: mathematica.stackexchange.com/q/16282/12 $\endgroup$ – Szabolcs Mar 12 '14 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 Mar 12 '14 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 Mar 12 '14 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 Mar 12 '14 at 18:59
  • 1
    $\begingroup$ Good idea. I'll post when I get a reply. $\endgroup$ – fairflow Mar 12 '14 at 19:01

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.

| improve this answer | |
  • 1
    $\begingroup$ But the bug is still now. $\endgroup$ – yode Oct 13 '15 at 10:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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