MathGroup Archive 2004

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

Search the Archive

Re: IEEE single precision number.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg51858] Re: [mg51782] IEEE single precision number.
  • From: Yasvir Tesiram <tesiramy at omrf.ouhsc.edu>
  • Date: Wed, 3 Nov 2004 01:26:32 -0500 (EST)
  • References: <200411020705.CAA21601@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

G'day,
If your problem is that binary files aren't being read fast enough, then
have a look at,

http://library.wolfram.com/infocenter/MathSource/354/

for the fast binary files package. The syntax is the same as in the
standard Utilities`BinaryFiles` package.

Cheers
Yas




On Tue, 2 Nov 2004, Vangelis Marinakis wrote:

> Dear everyone,
>
> Looking at the internet I found this email:
>
> *****************************************************************
>
> Hi,
>
> I want to convert a group/stream of Bytes to various internal
> Mathematica numerical types, particularly into Real (machine precision
> number).  The motivation is the fast reading of binary files.
>
> I don't want to deal with the Std Package
> Utilities`BinaryFiles`ReadBinary or Developer'BinaryImport, which do
> have the conversion utilities (e.g. into Real32, etc), since they are
> SLOW or otherwise clunky.
>
> When employing the suggested fast reading of binary files:
>
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> There are numerous means of reading data into Mathematica from binary
> files.  However, most of them are too slow.  Through experience and
> some newsgroup research, I've found the fast easy way:
>
> stream = OpenRead["Cals9", DOSTextFormat -> False];
>    (* Note:  this DOSTextFormat->False option is key to using
> ReadList[] in binary mode; otherwise, it wants to digest text.  Readin
> Byte chunks, then post-format.  Remarkably, the DosTextFormat option
> is not mentioned/discussed anywhere in the Mathematica book or Help
> Browser *)
>
> SetStreamPosition[stream, 78*131072];
>      (* Position to desired read starting location within file...count
> is in Bytes, and is index base = 0  *).
>
> data = ReadList[stream, Byte, 131072];
>       (* Reads 131072 Bytes into linear List "data" *)
>
> Close[stream];
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
> you end up with a list of Bytes.  Converting it to 16-bit integers is
> easy:
>
> data = Map[(#1[[1]] + 256*#1[[2]] & ), Partition[data, 2]];
>   (* takes original Byte List "data" and makes 16-bit "words", writing
> over List "data".  Result is half-as-long List of words.  *)
>
>
> ...but how would one convert it to real numbers (given that every 4
> bytes comprises an IEEE single-precision number)?
>
> Thanks.
>
> franki at aerodyne.com
>
> *****************************************************************
>
> Does anyone no the answer, because I have exactly the same problem!
>
> Thanks.
>
> Vangelis Marinakis.
>


  • Prev by Date: Re: bimodal distribution in sign of difference of Pi digits]
  • Next by Date: Re: Re: bimodal ditribution form counting signs of Pi digits differences
  • Previous by thread: IEEE single precision number.
  • Next by thread: Re: IEEE single precision number.