Hi Kevin,

As with most software systems, yes there are some very real limitations you 
need to be aware of if you are working with large numbers.

There is a native limit you will hit as UniData converts the number to a double 
and eventually will lose precision. If working with something like a FOR LOOP, 
the engine will use a signed 32-bit number which will wrap around to the 
negative.

For my UniData 7.3 on Windows, I cannot correctly increment beyond 
9007199254740992 natively (doing X+=1).

To get around this there are a series of functions built upon string math you 
will need to use (SADD, SCMP, SMUL, etc). Their limitations are huge (being 
more based on memory bounds than C data-type bounds); I doubt you will 
realistically hit them.

Regards,

Dan McGrath


PROGRAM BOUND.TEST
CRT @(-1)

* Limit is 9007199254740992

X = 9007199254740000
Y = X

LOOP
   X = 1
   Y = SADD(Y, 1)
   IF Y[LEN(Y)-2,3] = "000" THEN CRT @(-1):X
   IF SCMP(X,Y) # 0 THEN CRT "Limit found: {":X:"} vs {":Y:"}";STOP
REPEAT


-----Original Message-----
From: u2-users-boun...@listserver.u2ug.org 
[mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Kevin King
Sent: Tuesday, July 10, 2012 1:03 PM
To: U2 Users List
Subject: [U2] Unidata Limits

I was asked a question today that ... well, it stumped me.  Is there a 
practical limit to an incrementing number on Unidata and if so, what is that 
limit?  I seem to recall something way back on Reality that said that numbers 
could count to 1+e38 or something ridiculous like that, but is that still 
applicable?

-K
_______________________________________________
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users
_______________________________________________
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to