MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

issues with expression manipulation functions

In the process of learning Mathematica, I discovered several items of 
unusual behavior. I would appreciate any clarification.

(0) Several expression manipulation functions behave correctly with 
HoldComplete subexpressions but not with Hold subexpressions. Example:

In:	Together[1/x+HoldComplete[1]/x]
Out:	(1 + HoldComplete[1])/x

In:	Together[1/x+Hold[1]/x]
Out:	x^(-1) + Hold[1]/x

Another example:

In:	Factor[3+3*HoldComplete[x]+HoldComplete[x]^2, Extension -> {Sqrt[3], I}]
Out:	((-3*I + Sqrt[3] - (2*I)*HoldComplete[x])*(3*I + Sqrt[3] + (2*I)*HoldComplete[x]))/4

In:	Factor[3+3*Hold[x]+Hold[x]^2, Extension -> {Sqrt[3], I}]
Out:	(kernel crash)

Although the last example is clearly a bug, is there some difference in 
behavior between HoldComplete and Hold that generally accounts for these 
issues? The documentation mentions differences with respect to Sequence, 
Unevaluated, Evaluate, and upvalues. Without knowing the internals of the 
expression manipulation functions, I fail to see how any of these are 
relevant here.

(1) FactorTerms behaves incorrectly if the independent form is more 
complex than a symbol and not contained in the expression. Example:

In:	FactorTerms[x, x^2]
Out:	Sqrt[x]

In my understanding, FactorTerms should always return an equivalent 
expression. Is this a bug or some sort of undocumented behavior? Does 
FactorTerms require the independent form to be a symbol?

I am using Mathematica 8.0.4 on Windows.


  • Prev by Date: How to speed up this inner loop?
  • Next by Date: Sum pattern
  • Previous by thread: How to speed up this inner loop?
  • Next by thread: Re: issues with expression manipulation functions