Possible $calc Bug?
#175023
16/04/07 02:41 AM

Joined: Feb 2007
Posts: 4
CopperHead
OP
Selfsatisified door

OP
Selfsatisified door
Joined: Feb 2007
Posts: 4 
//echo a $calc(1 * (10^50)) returns 100000000000000010000000000000000000000000000000000 //echo a $calc(2 * (10^50)) returns 200000000000000020000000000000000000000000000000000 //echo a $calc(3 * (10^50)) returns 300000000000000020000000000000000000000000000000000 //echo a $calc(4 * (10^50)) returns 400000000000000030000000000000000000000000000000000 //echo a $calc(5 * (10^50)) returns 500000000000000000000000000000000000000000000000000 //echo a $calc(6 * (10^50)) returns 600000000000000050000000000000000000000000000000000 //echo a $calc(7 * (10^50)) returns 700000000000000090000000000000000000000000000000000 //echo a $calc(8 * (10^50)) returns 800000000000000060000000000000000000000000000000000 //echo a $calc(9 * (10^50)) returns 900000000000000030000000000000000000000000000000000 //echo a $calc(10 * (10^50)) returns 999999999999999990000000000000000000000000000000000
I use mIRC v6.21 Khaled MardamBey and Windows 98 second Edition.



Re: Possible $calc Bug?
[Re: CopperHead]
#175025
16/04/07 03:17 AM

Joined: Aug 2004
Posts: 7,252
RusselB
Hoopy frood

Hoopy frood
Joined: Aug 2004
Posts: 7,252 
While this is a bug, it's not with mIRC, but rather Windows, as the numbers that you're dealing with are so large they exceed the maximum calculation for a number using a 32 bit base (which is what Windows 95  XP use.. NB: Excepting Windows XP Pro 64)
The largest number that works on 32 bit OS (which is what you're using) is equal to 2^56
This is, fairly obviously, going to be a smaller number than the 10^50 level that you used as your start point.
btw: 2^56 = 72,057,594,037,927,936 Seventytwo quadrillion fiftyseven trillion five hundred and ninetyfour billion thirtyseven million nine hundred and twentyseven thousand nine hundred and thirtysix.
For 64 bit OS's the number would be a lot larger, however, I don't have access to a system running a 64 bit OS at this time in order to figure it out.



Re: Possible $calc Bug?
[Re: RusselB]
#175032
16/04/07 10:40 AM

Joined: Apr 2004
Posts: 853
Sat
Hoopy frood

Hoopy frood
Joined: Apr 2004
Posts: 853 
Sorry, but it has nothing to do with your OS or even your CPU. I'm kind of curious about how you think a 56bit number is the largest possible on a 32bit base though. :p
mIRC in fact uses the 64bit IEEE 754 'double' type to store numbers, which is integerexact up to 2^53 or 9,007,199,254,740,992.
Saturn, QuakeNet staff



Re: Possible $calc Bug?
[Re: CopperHead]
#175041
16/04/07 02:03 PM

Joined: Dec 2002
Posts: 580
NaquadaServ
Fjord artisan

Fjord artisan
Joined: Dec 2002
Posts: 580 
If you really need math on numbers that large it's possible to parse the math yourself, processing only one number at a time stepbystep, although this would take more CPU that just using $calc...



Re: Possible $calc Bug?
[Re: Sat]
#175046
16/04/07 03:52 PM

Joined: Aug 2004
Posts: 7,252
RusselB
Hoopy frood

Hoopy frood
Joined: Aug 2004
Posts: 7,252 
I got that number by using $calc(2^<N>), where I manually increased <N> until it got to the point where the number displayed via mIRC did not match that of manual calculations (pencil and paper).



Re: Possible $calc Bug?
[Re: RusselB]
#175049
16/04/07 06:47 PM

Joined: Mar 2003
Posts: 612
billythekid
Fjord artisan

Fjord artisan
Joined: Mar 2003
Posts: 612 
damn, now that's devotion. I'd have just skipped to the next thread! lol
btk
billythekid



Re: Possible $calc Bug?
[Re: billythekid]
#175061
16/04/07 11:49 PM

Joined: Apr 2004
Posts: 218
PhantasyX
Fjord artisan

Fjord artisan
Joined: Apr 2004
Posts: 218 
Hurray for Windows Vista's $calc(2^1023) ? :p
Last edited by PhantasyX; 16/04/07 11:49 PM.
Live to Dream & Dream for Life



Re: Possible $calc Bug?
[Re: NaquadaServ]
#175067
17/04/07 01:46 AM

Joined: Dec 2002
Posts: 580
NaquadaServ
Fjord artisan

Fjord artisan
Joined: Dec 2002
Posts: 580 
To clarify my last post, here is an example alias... alias add {
var %retval  var %stepsum  var %carry 0
var %num1 $1  var %num2 $2
while (%num1 != $null)  (%num2 != $null) {
set %setsum $calc(%carry + $right(%num1, 1) + $right(%num2, 1))
set %num1 $left(%num1, 1)
set %num2 $left(%num2, 1)
if (%setsum >= 10) { set %carry 1  dec %setsum 10 }
else { set %carry 0 }
set %retval %setsum $+ %retval
}
if (%carry) { set %retval 1 $+ %retval }
return %retval
}
Adds two integers: $add($str(2, 100), $str(2, 100)) returns 100 4's
Last edited by NaquadaServ; 17/04/07 02:05 AM.



Re: Possible $calc Bug?
[Re: NaquadaServ]
#175119
18/04/07 01:15 AM

Joined: Feb 2007
Posts: 4
CopperHead
OP
Selfsatisified door

OP
Selfsatisified door
Joined: Feb 2007
Posts: 4 
How do you explain the bug //echo a $calc(1/0) ?



Re: Possible $calc Bug?
[Re: CopperHead]
#175120
18/04/07 01:20 AM

Joined: Apr 2004
Posts: 218
PhantasyX
Fjord artisan

Fjord artisan
Joined: Apr 2004
Posts: 218 
Division by zero is not possible in mathematics. I believe Khaled changed the function of $calc to return 0 not to long ago.
Live to Dream & Dream for Life



Re: Possible $calc Bug?
[Re: PhantasyX]
#175121
18/04/07 01:28 AM

Joined: Dec 2002
Posts: 580
NaquadaServ
Fjord artisan

Fjord artisan
Joined: Dec 2002
Posts: 580 
Actually division by zero is moreorless infinity, since you can constantly divide something into/by nothing and still have something... 'A' not divided still equals 'A', no matter how many times you don't divide it...



Re: Possible $calc Bug?
[Re: NaquadaServ]
#175125
18/04/07 02:36 AM

Joined: Feb 2007
Posts: 4
CopperHead
OP
Selfsatisified door

OP
Selfsatisified door
Joined: Feb 2007
Posts: 4 
Also on another topic possible bug , I can't get $not to work correctly returns 4294967193. 1/0 on some os returns 0 and some returns 1. 1/0 is still undenfine or $null.
Here a puzzle for you. You may have seen this little proof that 2=1: a = x [true for some a's and x's] a+a = a+x [add a to both sides] 2a = a+x [a+a = 2a] 2a2x = a+x2x [subtract 2x from both sides] 2(ax) = a+x2x [2a2x = 2(ax)] 2(ax) = ax [x2x = x] 2 = 1 [divide both sides by ax] You may doubt that 2=1. So, where is the mistake? Think about it



Re: Possible $calc Bug?
[Re: CopperHead]
#175126
18/04/07 02:44 AM

Joined: Aug 2004
Posts: 7,252
RusselB
Hoopy frood

Hoopy frood
Joined: Aug 2004
Posts: 7,252 
No thanks..I've got better things to do with my time.



Re: Possible $calc Bug?
[Re: CopperHead]
#175127
18/04/07 03:13 AM

Joined: Jan 2004
Posts: 1,437
maroon
Hoopy frood

Hoopy frood
Joined: Jan 2004
Posts: 1,437 
Since a = x, then ax is zero. So when you divide both sides by [ax], you're dividing by zero, and the result is "undefined" (not necessarily infinity).



Re: Possible $calc Bug?
[Re: CopperHead]
#175142
18/04/07 07:38 AM

Joined: Jul 2003
Posts: 655
Om3n
Fjord artisan

Fjord artisan
Joined: Jul 2003
Posts: 655 
As maroon pointed out, the 'problem' with this puzzle is in the assumption that ax=1, when infact if a=x then ax will always be 0...
2(ax) = ax [x2x = x]... 2/ax = ax/ax [divide both sides by ax]... 2/0 = 0/0 [substitution given the proof that when a=x, ax will always be 0]
"Allen is having a small problem and needs help adjusting his attitude"  Flutterby



Re: Possible $calc Bug?
[Re: CopperHead]
#175146
18/04/07 09:37 AM

Joined: Apr 2004
Posts: 853
Sat
Hoopy frood

Hoopy frood
Joined: Apr 2004
Posts: 853 
Also on another topic possible bug , I can't get $not to work correctly returns 4294967193. mIRC's binary operations are 32bit.
Saturn, QuakeNet staff



Re: Possible $calc Bug?
[Re: CopperHead]
#175189
18/04/07 06:54 PM

Joined: Dec 2002
Posts: 580
NaquadaServ
Fjord artisan

Fjord artisan
Joined: Dec 2002
Posts: 580 
1/0 on some os returns 0 and some returns 1. 1/0 is still undenfine or $null. I don't like this at all!!! Division by zero should not return 0, or $null, or ANYTHING. It should generate an error. It upsets me that Java allows this too.



Re: Possible $calc Bug?
[Re: NaquadaServ]
#175195
18/04/07 07:47 PM

Joined: Jul 2006
Posts: 3,729
Wims
Hoopy frood

Hoopy frood
Joined: Jul 2006
Posts: 3,729 
don't like that too but it should return $null since it's impossible
Looking for a good help channel about mIRC? Check #mircscripting @ irc.swiftirc.net



Re: Possible $calc Bug?
[Re: Wims]
#175196
18/04/07 07:57 PM

Joined: Dec 2002
Posts: 580
NaquadaServ
Fjord artisan

Fjord artisan
Joined: Dec 2002
Posts: 580 
$null in $calc evaluates to zero, so $null and 0 would be equal. Saying $null in this case would not be a good indication of an error.
$calc(4 + $calc(1/0)) == $calc(4 + $null) == 4
Although this isn't much better....
$calc(4 + 1 / 0) == 0



Re: Possible $calc Bug?
[Re: NaquadaServ]
#175216
19/04/07 01:08 AM

Joined: Oct 2005
Posts: 1,741
genius_at_work
Hoopy frood

Hoopy frood
Joined: Oct 2005
Posts: 1,741 
It seems that $calc returns 0 for all invalid calculations, not just for divide by zero errors.
//echo a $calc(1 / 0) //echo a $calc(1 / !) //echo a $calc(1 / ) //echo a $calc(1 / banana) //echo a $calc(1 /x 1) //echo a $calc(1 /! 1) etc..
although... some just return the first value and ignore the invalid parts.
//echo a $calc(1 +d 1) //echo a $calc(2 +d 4) //echo a $calc(4 d 1)
genius_at_work




