I believe integer is a 32-bit signed integer.  Your first example ends up 
causing integer overflow.

I was curious so I googled [1]. You'll see somewhat curious behavior in the LL grid as well in those situations, though I think the curious behaviour will be different from our curious behaviour.

[1] 
http://wiki.secondlife.com/wiki/LSL_101/LSL_in_Focus:_Integers#Integer_Overflow

On 08/05/13 15:16, Dr Ramesh Ramloll wrote:
Hello,
I am sharing on this list hoping that some brains could help me figure this one 
out. I think I have hit a modulus
divisor bug. Please let me know what you think. This had a significant impact 
on my scripts ... the whole thing froze
after I made a simple change to a single variable and am wondering if I have 
hit some constraints that I am not aware
of. Basically I am trying to pass parameters to a rezzed child object (see 
below). I generate values at the parent prim
and try to get those values back from the rezzed child. Any thoughts 
appreciated.
Thank you.

integer commChannel =54;
integer modulus_divisor = 1000000000;
integer objectPinIndex = 23;
integer rezParameter;
integer repro_commChannel;
integer repro_objectPinIndex;

default
{
     state_entry()
     {
         rezParameter = -1*((commChannel*modulus_divisor)+(objectPinIndex));
         repro_commChannel = -1*((integer)rezParameter)/modulus_divisor;
         repro_objectPinIndex = -1*((integer)rezParameter)%modulus_divisor;
         llOwnerSay("modulus="+(string)modulus_divisor);
         llOwnerSay("objectPinIndex="+(string)objectPinIndex);
         llOwnerSay("commChannel="+(string)commChannel);
         llOwnerSay("REPRODUCING VALUES");
         llOwnerSay("repro_objectPinIndex="+(string)repro_objectPinIndex);
         llOwnerSay("repro_commChannel="+(string)repro_commChannel);
     }
}

output follows:

modulus=100000000 (eight zeroes)
[06:57] Primitive: modulus=100000000
[06:57] Primitive: objectPinIndex=23
[06:57] Primitive: commChannel=54
[06:57] Primitive: REPRODUCING VALUES
[06:57] Primitive: repro_objectPinIndex=5032727
[06:57] Primitive: repro_commChannel=11



now change modulus = 10000000

output is:

Primitive: modulus=10000000 (seven zeroes)
[06:56] Primitive: objectPinIndex=23
[06:56] Primitive: commChannel=54
[06:56] Primitive: REPRODUCING VALUES
[06:56] Primitive: repro_objectPinIndex=23
[06:56] Primitive: repro_commChannel=54


also, modulus_divisor = 29999999 works
modulus_divisor = 39699999 also works; this appears to be the experimental 
upper bound before modulus_divisor stops working.
I did not expect this.

--
'Consider how the lilies grow. They do not labor or spin.'
*Rameshsharma Ramloll* PhD, CEO CTO DeepSemaphore LLC, Affiliate /Research 
Associate Professor/, Idaho State University,
Pocatello, ID 83209 Tel: 208-240-0040
Blog <http://deepsemaphore.posterous.com/>, LinkedIn 
<http://www.linkedin.com/in/rameshramloll>, DeepSemaphore LLC
<http://www.deepsemaphore.com>, Google+ profile 
<https://plus.google.com/103652369558830540272/about>


_______________________________________________
Opensim-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-users



--
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc
_______________________________________________
Opensim-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-users

Reply via email to