comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: modulo reset
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: modulo reset [message #41700] Tue, 23 November 2004 08:39 Go to next message
Ralf Schaa is currently offline  Ralf Schaa
Messages: 37
Registered: June 2001
Member
Wayne Landsman wrote:
> Ralf Schaa wrote:
>
>> I'm reading out some binary data and the description says this about a
>> data field :
>>
>> in the case of a modulo reset add 2^32
>>
>> What is this about? googling for "modulo reset" didn't get me far;
>> I only imagine that I need some kind of overflow to get things fixed,
>> but it is very unclear to me what is happening and why ...
>
>
> Well, my first guess is that you are working with unsigned 32bit
> integers which have a maximum value of 2^32-1, and then resets to zero.
>
> STIS>print,2UL^31,2UL^32
> 2147483648 0
>
> The easiest way to correct for this reset would be to use 64 bit integers
>
> data = ulong64(datafield) + 2ULL^32
>
> A less likely possiblity is that "modulo reset" refers to a 32bit
> checksum, e.g. as implemented in
> http://idlastro.gsfc.nasa.gov/ftp/pro/misc/checksum32.pro
> which includes links to more documentation.

thanks wayne,

but the problem is this:

I am reading binary data (not longer than 32 bit, and I store it in ULL as suggested)
and the 'modulo reset' I talked about may appear at one datafield: that is in an accumulated
"Doppler" cycle count.
By differentiating with respect to time, one can get the true doppler count.
Than the documentation says, when a modula reset occurs , add 2^32.
I think, this means when the counter is full and is starting with zero again. than add the 2^32.
But I don't see what adding 2^32 exactly would do ...

further suggestions?

-Ralf
Re: modulo reset [message #41702 is a reply to message #41700] Tue, 23 November 2004 07:52 Go to previous messageGo to next message
Wayne Landsman is currently offline  Wayne Landsman
Messages: 117
Registered: January 1997
Senior Member
Ralf Schaa wrote:
> I'm reading out some binary data and the description says this about a
> data field :
>
> in the case of a modulo reset add 2^32
>
> What is this about? googling for "modulo reset" didn't get me far;
> I only imagine that I need some kind of overflow to get things fixed,
> but it is very unclear to me what is happening and why ...

Well, my first guess is that you are working with unsigned 32bit
integers which have a maximum value of 2^32-1, and then resets to zero.

STIS>print,2UL^31,2UL^32
2147483648 0

The easiest way to correct for this reset would be to use 64 bit integers

data = ulong64(datafield) + 2ULL^32

A less likely possiblity is that "modulo reset" refers to a 32bit
checksum, e.g. as implemented in
http://idlastro.gsfc.nasa.gov/ftp/pro/misc/checksum32.pro
which includes links to more documentation.

Good Luck, --Wayne Landsman
Re: modulo reset [message #41846 is a reply to message #41700] Tue, 23 November 2004 10:51 Go to previous message
James Kuyper is currently offline  James Kuyper
Messages: 425
Registered: March 2000
Senior Member
Ralf Schaa wrote:
...
> I am reading binary data (not longer than 32 bit, and I store it in ULL
> as suggested)
> and the 'modulo reset' I talked about may appear at one datafield: that
> is in an accumulated
> "Doppler" cycle count.
> By differentiating with respect to time, one can get the true doppler
> count.

"Differencing", not "Differentiating". You differentiate a continuous
function of time. For a discontinuously sampled function, you can't
differentiate, you can only calculate finite differences.

> Than the documentation says, when a modula reset occurs , add 2^32.
> I think, this means when the counter is full and is starting with zero
> again. than add the 2^32.
> But I don't see what adding 2^32 exactly would do ...

Let's assume that the current cycle count is t0=2^32-5. 20 cyles later
the true count would be 2^32+15. However, because it reset at 2^32, the
actual number in the cycle count would be t1=15. If you calculate the
time difference as dt = t1-t2 while storing the value in, for instance,
a 64 byte integer or floating point type, then the dt will be
15-(2^32-5) = 20-2^32. To get the correct number of cycles, you have to
add in 2^32, leaving you with dt = 20.
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Multitasking??
Next Topic: Multitasking??

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 13:28:04 PDT 2025

Total time taken to generate the page: 0.74981 seconds