The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Inactive » comp.soft-sys.math.mathematica

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Re: [mg 25674] Bugs in Abs etc.
Replies: 0  

Advanced Search

Back to Topic List Back to Topic List  
Jack Goldberg

Posts: 53
Registered: 12/7/04
Re: [mg 25674] Bugs in Abs etc.
Posted: Oct 21, 2000 2:58 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Hi Group,

Many thanks to all of you who were kind enough to point out to me my
blunder in assuming that numeric functions never evaluate non-numeric
symbolic arguments. On thinking over your comments, I would like to note
some further peculiarities that are not necessarily serious, but do raise
issues of consistency. I do my computations using ver 4.01 on a PowerMac
and on a Sun. The results are the same, thank goodness!

(1) Look in the Help Browser for Abs. The second item down is
this:-"Abs[z] is left unevaluated if z is not a numeric quantity".
Although this is not quite the same thing as saying Abs does not evaluate
symbolic arguments, it is suggestive of this particularly because there is
not the slightest hint that Abs[x^n]->Abs[x]^n anywhere in the Help
Browser or the Mathematica Book references given by the Help Browser.

(2) Consider Sign[x]. When I entered ?Sign I get this "Sign[x] gives
-1,0, or 1 depending on whether x is negative, zero, or positive. But Sign
accepts complex entries! Sign[I] -> I. You find this out when you use the
Help Browser. Shouldn't this be part of ?.

(3) As I mention in an earlier post, Abs[(x-1)^2]->Abs[x-1]^2 but
Abs[x^2-2x+1] returns unevaluated. There are significant problems here
relative to pattern matching. This is obvious so I stop here.

Let me make one point very clear: None of these three items are
"killers". As Alan Hayes points out, we can use Unevaluated and then Mathematica
treats Abs[(x-1)^2] and Abs[x^2-2x+1] the same way so we need not worry if
Abs[u] is buried deep in some code we write - provided we remember to
include a hold of some sort. But there are implications here.

What other numeric functions shares "evaluates (sometimes) its
symbolic arguments" with Abs and Sign? Guess? Can't think of any? What
should you do if some built-in, say BuiltIn[x_], does some simplification
for symbolic arguments? How do you find out about it? Its not documented.
Perhaps BuiltIn[x_-a_]->BuiltIn[x]. How would you know to check this
rather than say BuiltIn[x^2]->BuiltIn[x]^2? So, the only safe course is
to use Unevaluated everywhere! But this is no good because Unevaluated
stops evaluation of All arguments to BuiltIn including BuiltIn[1-1].

I don't recall whether Daniel Lichtblau (sp?) or some other kind
responder pointed out that this troublesome feature (at least to me) was
introduced in ver. 4. I for one believe Mathematica should, for the reasons I
have outlined, go back to the way Abs and Sign were handled in earlier
versions. Consistency and therefore predictability are second in
importance only to correctness. You can quote me on this :-)


Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.