WeBWorK Problems

Problem with implied multiplication?

Re: Problem with implied multiplication?

by Davide Cervone -
Number of replies: 0
This is the expected behavior, not a bug. The problem is in not being entirely clear on how Perl interprets what you have written. When you type
    $limit2 = Compute("a$xval+$c2")->reduce();
what happens first is that Perl replaces $xval into the string "a$xval+$c" to produce the string "a-5+9". That gets done before Compute() is called, and so the expression that is used to create the MathObject is "a-5+9" which Compute() correctly interprets as a+4. It has no idea that the -5 comes from a perl variable originally.

When you use

    $limit2 = Compute("a$xval+$c2")->reduce();
however, the string is "a*-5+9", which is -5a+9. Alternatively,
    $limit2 = Compute("a($xval)+$c2")->reduce();
produces "a(-5)+9" which again is -5a+9, and similarly for the other forms.

Had you used a MathObject Real object rather than a Perl real, then it would have inserted the parentheses automatically itself, and it would have worked as you expected, but Perl reals don't. That is, if you had used

    $c2 = Real(non_zero_random(-9,9,1));
    $xval = Real(non_zero_random(-9,9,1));
    $limit2 = Compute("a$xval+$c2")->reduce();
you would have gotten "a(-5)+9", which would have done what you wanted.

Hope that clears things up.

Davide