From octave-maintainers-request at bevo dot che dot wisc dot edu Thu Jan 22 10:52:29 2004 Subject: Re: benchmarks - sort From: David Bateman To: THOMAS Paul Richard Cc: Paul Kienzle , octave-maintainers@bevo.che.wisc.edu, octave-dev@lists.sourceforge.net Date: Thu, 22 Jan 2004 17:48:13 +0100 --BXVAT5kNtrzKuDFl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Thomas, I've written my sorting code as a patch against octave-forge with the idea that it might be included in this weekends release. There are still some possible improvements, but frankly it performs pretty well, is compatiable with the behaviour of the default Octave sort code (include complex), and has been tested for correctness (see testsort.m). The problem is the sourceforge CVS seems to be down at the moment, and so I can't commit this patch. For interest I attach it here and if I can't commit by this weekend I hope Paul will include this code for me before he does a code release. In any case, having this function in octave-forge is a pretty good test of its functionality, when many users get to see it. After a bit of testing perhaps JWE might accept the code into Octave itself... Regards David -- David Bateman David dot Bateman at motorola dot com Motorola CRM +33 1 69 35 48 04 (Ph) Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax) 91193 Gif-Sur-Yvette FRANCE The information contained in this communication has been classified as: [x] General Business Information [ ] Motorola Internal Use Only [ ] Motorola Confidential Proprietary --BXVAT5kNtrzKuDFl Content-Type: application/octet-stream Content-Disposition: attachment; filename="patch.gz" Content-Transfer-Encoding: base64 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 --BXVAT5kNtrzKuDFl--