Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

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

Search the Archive

Re: Sort with -Infinity fails

  • To: mathgroup at smc.vnet.net
  • Subject: [mg73856] Re: Sort with -Infinity fails
  • From: "dimitris" <dimmechan at yahoo.com>
  • Date: Fri, 2 Mar 2007 06:28:51 -0500 (EST)
  • References: <es6d0l$rmr$1@smc.vnet.net>

Read carefully the documentation for Sort

(*execute the following command*)

In[85]:=
FrontEndExecute[{HelpBrowserLookup["RefGuide", "Sort"]}]

There we read among other things...

 Sort[list, p] applies the function p to pairs of elements in list to
determine whether they are in order.
The default function p is OrderedQ[{#1, #2}]&.

So for example

In[86]:=
Sort[{-1, 3, -4, 5}]
Out[86]=
{-4, -1, 3, 5}

is identical to

In[90]:=
Sort[{-1, 3, -4, 5}, OrderedQ[{#1, #2}] & ]
Out[90]=
{-4, -1, 3, 5}

Using Trace you can see the process of sorting

In[91]:=
Trace[Sort[{-1, 3, -4, 5}, OrderedQ[{#1, #2}] & ]]
(*omitting Output*)

Now

In[92]:=
-Infinity < -8 < 8 < Infinity
Out[92]=
True

But

In[93]:=
OrderedQ[{-Infinity, -8}]
Out[93]=
False

So in view of all these, you can understand now the following output

In[94]:=
Sort[{-Infinity, -5, -8, 9, Infinity}]
Out[94]=
{-8, -5, 9, -Infinity, Infinity}

If you want you can use again Trace

In[96]:=
Trace[Sort[{-Infinity,-5,-8,9,Infinity},OrderedQ[{#1,#2}]&]]
(*omitting Output*)

Why now OrderedQ works in this way is beyond my knowledge.
Reading in the Section A.3.9 of Mathematica Book

(*execute the following command to go there!)

In[97]:=
FrontEndExecute[{HelpBrowserLookup["MainBook", "A.3.9"]}]

about the canonical ordering I was not able to figure out the reason.

Anyway...I think you want "the way to be done" and not "why must be
done in this way"...

So...

Your desirable result can be achieved as follows

In[98]:=
Sort[{-Infinity, -5, -8, 9, Infinity}, #1 < #2 & ]
Out[98]=
{-Infinity, -8, -5, 9, Infinity}

or

In[100]:=
Sort[{-Infinity, -5, -8, 9, Infinity}, #2 > #1 & ]
Out[100]=
{-Infinity, -8, -5, 9, Infinity}



=CE=9F/=CE=97 Tom Aldenberg =CE=AD=CE=B3=CF=81=CE=B1=CF=88=CE=B5:
> Dear MathGroup,
>
> Minus Infinity (-Infinity) is smaller than -8, but Sort does not sort it =
as
> expected.
> Is there a Real minus Infinity?
>
>
> In[75]:=
>       -Infinity < -8
> Out[75]=
>       True
>
> In[76]:=
>       Sort[{-Infinity, -8, 5}]
> Out[76]=
>       {-8, 5, -=E2=88=9E}
>
>
> Regards,
>
> Tom Aldenberg
>
> _________________________________________________________________________=
___
>
> DISCLAIMER:  http://www.rivm.nl/disclaimer.htm



  • Prev by Date: Re: Numerical integration
  • Next by Date: Re: Means
  • Previous by thread: RE: Sort with -Infinity fails
  • Next by thread: Re: Sort with -Infinity fails