This may be silly, considering that Fixnums are converted to Bignums if
necessary, but is there no room for having MIN and MAX constants for
Fixnums? This is my C talking, but it’s kind of nice to have these
kinds of limits for certain algorithms and “default” values. Any
input?,
nikolai
···
--
Nikolai Weibull: now available free of charge at http://bitwi.se/!
Born in Chicago, IL USA; currently residing in Gothenburg, Sweden.
main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}
I too have wished for them in the past.
James Edward Gray II
···
On Jul 27, 2005, at 4:00 PM, Nikolai Weibull wrote:
This may be silly, considering that Fixnums are converted to Bignums if
necessary, but is there no room for having MIN and MAX constants for
Fixnums? This is my C talking, but it’s kind of nice to have these
kinds of limits for certain algorithms and “default” values. Any
input?,
awesome! i have this everywhere:
class Fixnum
N_BYTES = [42].pack('i').size
N_BITS = N_BYTES * 8
MAX = 2 ** (N_BITS - 2) - 1
MIN = -MAX - 1
end
cheers.
-a
···
On Thu, 28 Jul 2005, Nikolai Weibull wrote:
This may be silly, considering that Fixnums are converted to Bignums if
necessary, but is there no room for having MIN and MAX constants for
Fixnums? This is my C talking, but it’s kind of nice to have these
kinds of limits for certain algorithms and “default” values. Any
input?,
nikolai
--
email :: ara [dot] t [dot] howard [at] noaa [dot] gov
phone :: 303.497.6469
My religion is very simple. My religion is kindness.
--Tenzin Gyatso
===============================================================================
Ara.T.Howard wrote:
This may be silly, considering that Fixnums are converted to Bignums if
necessary, but is there no room for having MIN and MAX constants for
Fixnums? This is my C talking, but it’s kind of nice to have these
kinds of limits for certain algorithms and “default” values. Any
input?,
nikolai
awesome! i have this everywhere:
class Fixnum
N_BYTES = [42].pack('i').size
N_BITS = N_BYTES * 8
MAX = 2 ** (N_BITS - 2) - 1
MIN = -MAX - 1
end
cheers.
-a
Signed or unsigned max?
Solaris 10:
/* maxnum.c */
#include <stdio.h>
#include <values.h>
int main(){
printf("Max int: %i\n", MAXINT);
printf("Max long: %li\n", MAXLONG);
return 0;
}
djberge@~/programming/C-568>gcc -Wall -o maxnum maxnum.c
djberge@~/programming/C-569>./maxnum
Max int: 2147483647
Max long: 2147483647
djberge@~/programming/C-570>gcc -Wall -m64 -o maxnum maxnum.c
djberge@~/programming/C-571>./maxnum
Max int: 2147483647
Max long: 9223372036854775807
Regards,
Dan
···
On Thu, 28 Jul 2005, Nikolai Weibull wrote:
Ara.T.Howard wrote:
This may be silly, considering that Fixnums are converted to Bignums if
necessary, but is there no room for having MIN and MAX constants for
Fixnums? This is my C talking, but its kind of nice to have these
kinds of limits for certain algorithms and default values. Any
input?,
nikolai
awesome! i have this everywhere:
class Fixnum
N_BYTES = [42].pack('i').size
N_BITS = N_BYTES * 8
MAX = 2 ** (N_BITS - 2) - 1
MIN = -MAX - 1
end
cheers.
-a
Signed or unsigned max?
maybe we are talking at cross purposes: as far as i know there is no such as an
'unsigned' Fixnum - we only have signed fixnums which loses one bit and the
VALUE/Fixnum thing which loses another. so i assumed the OP wanted to know the
largest/smallest value that could be represented by a fixnum:
harp:~ > cat a.rb
class Fixnum
N_BYTES = [42].pack('i').size
N_BITS = N_BYTES * 8
MAX = 2 ** (N_BITS - 2) - 1
MIN = -MAX - 1
end
p(Fixnum::MAX)
p(Fixnum::MAX.class)
p((Fixnum::MAX + 1).class)
p(Fixnum::MIN)
p(Fixnum::MIN.class)
p((Fixnum::MIN - 1).class)
harp:~ > ruby a.rb
1073741823
Fixnum
Bignum
-1073741824
Fixnum
Bignum
make sense?
Solaris 10:
/* maxnum.c */
#include <stdio.h>
#include <values.h>
int main(){
printf("Max int: %i\n", MAXINT);
printf("Max long: %li\n", MAXLONG);
return 0;
}
djberge@~/programming/C-568>gcc -Wall -o maxnum maxnum.c
djberge@~/programming/C-569>./maxnum
Max int: 2147483647
Max long: 2147483647
djberge@~/programming/C-570>gcc -Wall -m64 -o maxnum maxnum.c
djberge@~/programming/C-571>./maxnum
Max int: 2147483647
Max long: 9223372036854775807
sure - but these are ints not fixnums ?
cheers.
-a
···
On Thu, 28 Jul 2005, Daniel Berger wrote:
On Thu, 28 Jul 2005, Nikolai Weibull wrote:
--
email :: ara [dot] t [dot] howard [at] noaa [dot] gov
phone :: 303.497.6469
My religion is very simple. My religion is kindness.
--Tenzin Gyatso
===============================================================================
Daniel Berger wrote:
Ara.T.Howard wrote:
> > This may be silly, considering that Fixnums are converted to
> > Bignums if necessary, but is there no room for having MIN and MAX
> > constants for Fixnums? This is my C talking, but it’s kind of
> > nice to have these kinds of limits for certain algorithms and
> > “default” values. Any input?,
> > nikolai
> awesome! i have this everywhere:
>
> class Fixnum
> N_BYTES = [42].pack('i').size
> N_BITS = N_BYTES * 8
> MAX = 2 ** (N_BITS - 2) - 1
> MIN = -MAX - 1
> end
>
> cheers.
Signed or unsigned max?
I don’t know if you’re trying to be clever, but as far as I know, it’d
be the value of LONG_MAX, as that’s how Fixnums are currently being
stored. And I don’t see how it matters if you’re on a 32 or 64 bit
machine (below), as all one’s interested in is the maximum value that
can be stored in a Fixnum (for sentinel values and so on). Ara’s
suggestion is a bit flawed, as it assumes a two’s-complement arithmetic
for the MIN calculation, but who can blame him? 
I was perhaps not so much saying that we _must_ have MAX and MIN of
Fixnums, as a way of having good sentinel values when dealing with
Fixnums. I was half-expecting a whole thread on duck-typing,
meta-programming, IoC, or other “possible” solutions to such a problem,
nikolai
···
> On Thu, 28 Jul 2005, Nikolai Weibull wrote:
djberge@~/programming/C-570>gcc -Wall -m64 -o maxnum maxnum.c
djberge@~/programming/C-571>./maxnum
Max int: 2147483647
Max long: 9223372036854775807
--
Nikolai Weibull: now available free of charge at http://bitwi.se/\!
Born in Chicago, IL USA; currently residing in Gothenburg, Sweden.
main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}
Ara.T.Howard wrote:
<snip>
maybe we are talking at cross purposes: as far as i know there is no such as an
'unsigned' Fixnum - we only have signed fixnums which loses one bit and the
VALUE/Fixnum thing which loses another. so i assumed the OP wanted to know the
largest/smallest value that could be represented by a fixnum:
harp:~ > cat a.rb
class Fixnum
N_BYTES = [42].pack('i').size
N_BITS = N_BYTES * 8
MAX = 2 ** (N_BITS - 2) - 1
MIN = -MAX - 1
end
p(Fixnum::MAX)
p(Fixnum::MAX.class)
p((Fixnum::MAX + 1).class)
p(Fixnum::MIN)
p(Fixnum::MIN.class)
p((Fixnum::MIN - 1).class)
harp:~ > ruby a.rb
1073741823
Fixnum
Bignum
-1073741824
Fixnum
Bignum
make sense?
Solaris 10:
/* maxnum.c */
#include <stdio.h>
#include <values.h>
int main(){
printf("Max int: %i\n", MAXINT);
printf("Max long: %li\n", MAXLONG);
return 0;
}
djberge@~/programming/C-568>gcc -Wall -o maxnum maxnum.c
djberge@~/programming/C-569>./maxnum
Max int: 2147483647
Max long: 2147483647
djberge@~/programming/C-570>gcc -Wall -m64 -o maxnum maxnum.c
djberge@~/programming/C-571>./maxnum
Max int: 2147483647
Max long: 9223372036854775807
sure - but these are ints not fixnums ?
True.
But if we add Fixnum::MIN/MAX, don't we have to add Integer::MIN/MAX and Bignum::MIN/MAX? What about Numeric or Float?
My gut feeling is that this will lead to confusion. Maybe I'm wrong, though.
Dan
···
On Thu, 28 Jul 2005, Daniel Berger wrote:
you have a point. perhaps
require 'limits'
p Bignum::MAX
p Integer::MAX
etc. that was new limits could be added later...
btw. is there a Bignum::MAX?
-a
···
On Thu, 28 Jul 2005, Daniel Berger wrote:
True.
But if we add Fixnum::MIN/MAX, don't we have to add Integer::MIN/MAX and Bignum::MIN/MAX? What about Numeric or Float?
My gut feeling is that this will lead to confusion. Maybe I'm wrong, though.
--
email :: ara [dot] t [dot] howard [at] noaa [dot] gov
phone :: 303.497.6469
My religion is very simple. My religion is kindness.
--Tenzin Gyatso
===============================================================================
Ara.T.Howard wrote:
btw. is there a Bignum::MAX?
Sure, though its value would fluctuate with the amount of memory
currently available,
nikolai
···
--
Nikolai Weibull: now available free of charge at http://bitwi.se/\!
Born in Chicago, IL USA; currently residing in Gothenburg, Sweden.
main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}
it does seems that way - so maybe impossibleto determine/store since saying
class Bignum
MAX = do_something_to_determine
end
would exhaust memory...
an estimate as string perhaps?
-a
···
On Thu, 28 Jul 2005, Nikolai Weibull wrote:
Ara.T.Howard wrote:
btw. is there a Bignum::MAX?
Sure, though its value would fluctuate with the amount of memory
currently available,
--
email :: ara [dot] t [dot] howard [at] noaa [dot] gov
phone :: 303.497.6469
My religion is very simple. My religion is kindness.
--Tenzin Gyatso
===============================================================================