## WeBWorK Problems

### Plus/Minus operator ### Plus/Minus operator

by Alex Jordan -
Number of replies: 2
I'd like to look into making a "plus/minus" operator. I know that I could make "+-" or "pm" be an operator in a MathObjects context. But I'd want it to take numeric operands and returns a list (of two numbers). So that:
Compute("1 +- 2")
would be equal to
Compute("-1, 3");

Also, an operator like this comes up with solutions to quadratic equations, so you might want to use it like:
Compute("(1 +- sqrt(5)) / 2")
So then the list resulting from the +- would have to permit division by a scalar, interpreted as applying the division to each member of the list (and similarly other operations). I think Points and Vectors permit multiplication and division, but not lists. And I think adding or subtracting a scalar to a list is not permitted anywhere.

So it would be that
Compute("(1 +- sqrt(5)) / 2")
is equal to
Compute("(1 - sqrt(5), 1 + sqrt(5)) / 2")
is equal to
Compute("(1 - sqrt(5)) / 2, (1 + sqrt(5)) / 2")

Note that to work with lists this way, they need to use delimiters and not be the delimiter-free variety. The middle of these three above would be interpreted as a Point by the parser, but I would change the delimiter settings to make "(" open regular lists.

Is there anything fundamental with MathObjects that would make this impossible? Such as an binary operator on number that outputs a list? Or extending arithmetic operators to make sense when one operand is a scalar and the other is a list?

(And... "+-" or "pm" would ideally also exist as a unary operator.) ### Re: Plus/Minus operator

by Davide Cervone -
This all looks doable, but I don't have time at the moment to say much more. Instead of making the result be a list, you could also make an object that is a single "number" that includes the two values, but prints with a plus/minus and acts as a single unit rather than a list. We could discuss this if you want to get some ideas from me about how this might work. ### Re: Plus/Minus operator

by Alex Jordan -
I'd like it to be so that one student could enter "1 pm sqrt(2)" but another could enter "1 + sqrt(2), 1 - sqrt(2)". But you have me thinking now. What to do with things like "1 pm 0" and "1 pm 2 pm 3"? (Some reasonable answers are apparent.)

I'm building a context that attempts to address the common complaints (from our faculty and our students) about answer format being too picky or not in agreement with what is modeled in whatever textbook is used. In particular, with entering the solutions to some equation in one variable. I've got a test problem up at: