Bug in Solve/Reduce?
- To: mathgroup
- Subject: Bug in Solve/Reduce?
- From: sdoyle at fed.frb.gov
- Date: Tue, 25 Apr 89 09:58:32 CDT
I've run into a problem with Solve and Reduce where it appears to
be `creating' null variables that only contain the name of the
Context where the manipulations are taking place.
To re-create the problem, just read in the file `SolveBug.m' (included
below) in the normal way. This defines a symbol poly with a fourth
degree polynomial in X and sets the Cubics option of Roots to False.
When you enter Solve[poly==0, X] an answer is returned that contains
a variable Global` (the Context name with no symbol appended).
I've included sample session following SolveBug.m. The FullForm
of the value returned by Reduce also contains this null variable.
Any Ideas? Or... Did I make a mistake? Is it an error to turn off
the Cubics option but not the Quartics? Any help appreciated!
Sean Doyle
Board of Governors of the Federal Reserve System
Washington, DC 20551 (202) 452-2352
uucp: uunet!fed!m1swd00 , internet: sdoyle at fed.frb.gov
(* ****************** Start of SolveBug.m ****************** *)
(* Bug in Solve/Reduce *)
(* Set options for Roots *)
SetOptions[Roots, Cubics->False]
(* Define polynomial in X *)
poly = (d e + f g) a c b^2 X^4 + (a e + c d) b X^3 +
(1 + 2 (d e + f g) a b c) X^2 + (a e + c d) X +
(d e + f g) a c
Print["Input Polynomial: ", poly]
Print["Solve[poly==0, X]",Solve[poly==0, X]];
(* **************** End of SolveBug.m ************************* *)
**** Session: Part 1. Notice that the solution contains the
**** variable Global`. If I bury this in a Package, the name of
**** the package is there instead. Why should there be a package
**** name in the middle of an expression with no variable attached?
mqws2(14)% math
SunMathematica (sun3.68881) 1.1 (September 14, 1988) [With pre-loaded data]
by S. Wolfram, D. Grayson, R. Maeder, H. Cejtin,
S. Omohundro, D. Ballman and J. Keiper
Copyright 1988 Wolfram Research Inc.
-- SunView graphics initialized --
In[1]:= <<SolveBug.m
2
Input Polynomial: X (1 + 2 a b c (d e + f g)) + X (c d + a e) +
3 4 2
> X b (c d + a e) + a c (d e + f g) + X a b c (d e + f g)
Solve[poly==0, X]{{X ->
-(b (c d + a e))
> (--------------------------- +
2 2
2 (a b c d e + a b c f g)
Global`
> Sqrt[-4 (------- -
2
<<< And so on.... the output goes on for a while with many
Global` variables appearing... >>
In[2]:=
**** Now let's look at the FullForm of this expression. It still contains
**** the Global` context string with no variable attached.
Out[4]//FullForm=
> List[List[Rule[X, Times[Rational[1, 2],
> Plus[Times[Rational[-1, 2], b,
> Plus[Times[c, d], Times[a, e]],
> Power[Plus[Times[a, Power[b, 2], c, d, e],
> Times[a, Power[b, 2], c, f, g]], -1]],
> Power[Plus[Times[-4,
> Plus[Times[Rational[1, 2], Global`],
> Times[-1,
<<< And so on. The expression goes on for a number of
lines...>>>
**** The Global` variables appear in output from Reduce as well.