MathGroup Archive 1989

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

Search the Archive

Bug in Solve/Reduce?

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

(* ****************** 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
  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)

  >                      Sqrt[-4 (------- - 
	  <<< And so on.... the output goes on for a while with many
	      Global` variables appearing... >> 


**** Now let's look at the FullForm of this expression. It still contains
**** the Global` context string with no variable attached.


  >    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

**** The Global` variables appear in output from Reduce as well.

  • Prev by Date: Bug reports
  • Previous by thread: Bug reports