Re: Problem with reading version 4.2 DumpSave files,...

• To: mathgroup at smc.vnet.net
• Subject: [mg75564] Re: Problem with reading version 4.2 DumpSave files,...
• From: "Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com>
• Date: Sat, 5 May 2007 06:03:02 -0400 (EDT)
• References: <463AFEEA.6080005@gmail.com>

```On 5/4/07, Terry Chung <terryisnow at yahoo.com> wrote:
> Hi Jean-Marc,
>
> Thanks for the reply! I'm going to take a closer look
> at what you suggest this weekend, although right now
> I'm not sure it will work for my case. The reason is
> because of lost digits in conversion to base 10 (for
> displaying on the screen in the Mathematica GUI).
> What your doing seems very similar to the Save[]
> function I used to use to save my numbers in between
> runs of my simulation. What I discovered was that
> Save[] converts the number to base 10 (from the
> internal binary representation within Mathematica and
> all computers) to write to the external file. When I
> read the number back in, it was sometimes slightly
> different when I compared it to the unsaved version
> of the same number.
>
> What I really need is a method for saving the exact
> binary representation of that number in an purely
> text format and a reciprocal method for reading that
> number back in.
>
> Does that make sense?
>
> Terry

Hi Terry,

In addition, you could use BaseForm to convert the numbers in binary
form. A quick and dirty example follows (just to give you an overall
idea).

In[1]:=
expr={{1.234567987654*^6,-34.3892839,898890.7348327,-8.748328494823489*^8},{\
124567.98764,-8934.3892839,89890.7348327,-8.78907284948235*^9}}

Out[1]=
6                                8
9
{{1.23457 10 , -34.3893, 898891., -8.74833 10 }, {124568., -8934.39,
89890.7, -8.78907 10 }}

In[2]:=
data = (StringReplace[#1, Characters["{ 2}"] -> ""] & ) /@
(ToString[BaseForm[NumberForm[#1, {20, 20}, NumberPadding -> {"0",
"0"}, SignPadding -> True,
ExponentFunction -> (Null & )], 2]] & ) /@ expr

Out[2]=
{0100101101011010000111.1111110011010110111001000111111,-100010.\
01100011101010000001110000010011010110111111111,011011011011101001010.\
101111000001110111111110111011101,-110100001001001110001111010001.\
011110110111101100111
,011110011010010111.1111110011010101111110011001110001,-10001011100110.\
01100011101010000001110000010011010111,010101111100100010.\
101111000001110111111110111011101001,-1000001011110111101001101111010001.\
01111011011110110100
}

HTH,
Jean-Marc

>
> --- Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
> wrote:
>
> > terry wrote:
> > > Dear Mathematica Guru's,
> > >
> > > Because of a Mathematica bug (which still isn't
> > fixed in the just
> > > released version 6), my version 4.2 DumpSave files
> > cannot be read by
> > > my version 5.2. So as a result I'm trying to find
> > a way to _exactly_
> > > write out these numbers to a pure ascii text file
> > from within 4.2,
> > > then read them in as text and convert them back
> > into number form
> > > within 5.2 without losing any digits. Any idea's
> > how I could
> > > accomplish this simply?
> > >
> > > Note that simply saving the approximate real
> > numbers with Save[] and
> > > retreiving them will not work in this case because
> > Save[] 'distorts'
> > > the numbers even if they are loaded back into the
> > same version of
> > > Mathematica (when it converts to base 10 and
> > back).
> > >
> > > Thanks in advance!
> > >
> > > Regards,
> > > Terry
> > >
> > >
> >
> > ToString and NumberForm should be what you need
> > before Export. Knowing
> > nothing about the kind of numbers you are dealing
> > with and the data
> > structure, it is hard to tell more. You can check
> > the following thread
> > to see some examples of the above mentioned
> > functions in action.
> >
> >
> http://forums.wolfram.com/mathgroup/archive/2007/Apr/msg00523.html
> >
> > Regards,
> > Jean-Marc
> >
>
>
>
>
> ____________________________________________________________________________________