       Re: Sort[] accuracy problem

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg1145] Re: Sort[] accuracy problem
• From: roth at sunny.mpimf-heidelberg.mpg.de (Arnd Roth)
• Date: Wed, 17 May 1995 04:59:24 -0400
• Organization: Max-Planck-Institut fuer Medizinische Forschung

In article <3p657h\$kb1 at news0.cybernetics.net>
"Wm. Martin McClain" <wmm at chem.wayne.edu> writes:

> Here is the kind of thing that is giving me trouble:
>
> In:= Sort[{{5.00, 1}, {4.00, 3}, {1.00, 2}, {4.01, 1}}]
> Out =     {{1.00, 2}, {4.00, 3}, {4.01, 1}, {5.00, 1}}
>
> But I would like it to treat 4.00 and 4.01 as the same for the
> purposes of sorting, so that it returns the approximately
> alphebetized list
>
>                {{1.00, 2}, {4.01, 1}, {4.00, 3}, {5.00, 1}}
>
> where the difference between 1 and 3 is treated as more
> important than the difference between 4.00 and 4.01.I tried
>
>                Sort[list,(Round[#2*10]<Round[#1*10])&],
>
> but it seems to think that #n refers to the whole point {x,y},
> rather than just to x (or on the second round, just to y), so the
> comparison becomes neither True nor False and no sorting is done.

The first part of {x, y} is x, so let's just compare the first
parts:

In:= list = {{5.00, 1}, {4.00, 3}, {1.00, 2}, {4.01, 1}}
Out= {{5., 1}, {4., 3}, {1., 2}, {4.01, 1}}

In:= Sort[list, Round[First[#1]*10] < Round[First[#2]*10] &]
Out= {{1., 2}, {4.01, 1}, {4., 3}, {5., 1}}

Arnd Roth
Abteilung Zellphysiologie
Max-Planck-Institut fuer Medizinische Forschung
Postfach 10 38 20, D-69028 Heidelberg, Germany
http://sunny.mpimf-heidelberg.mpg.de/people/roth/ArndRoth.html

• Prev by Date: Finding Regression Coefficient
• Next by Date: Re: How fast are Mathematica Versions ?
• Previous by thread: Re: Finding Regression Coefficient
• Next by thread: Sort[] accuracy problem