commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mika Riekkinen <mriekki...@yahoo.com>
Subject Re: [lang] Math class
Date Thu, 22 Aug 2002 11:06:54 GMT
> The options I can think of immediately are:
> 
> int
> float
> long
> double
> byte
> short
> 
> Integer
> Float
> Long
> Double
> Byte
> Short
> Number
> BigDecimal
> BigInteger
> 

We could minimize these by having classes you
suggested:
Decimal and WholeNumber(RealNumber???)
They would act as adapters for the purposes of
these math utilities.
For the Decimal:
   public Decimal(Integer i);
   public Decimal(Long l);

> However the Java language doens't do us many favours
> here. If I have:
> average(long[]), I can't call it with average( new
> int[] { 1,2,3 } );

true.

> Equally, if we have average(Number[]), then we get
> the correct inheritence
> characteristics. However we've no clue as to whether
> it is 'WholeNumber'/Z
> or 'Decimal'/R, so do we use longValue or

If we had these DecimalNumber and RealNumber 
classes, it would reduce to intValue() || longValue()
which would result the same --> use longValue()

RealNumbers are a bit more tricky, since the precision
is different.

> So, am I right in thinking that there is nothing we
> can do to make
> overloading nicer?? Not without adding reflection

Yes and no. See above. 


> On Wed, 21 Aug 2002, Mika Riekkinen wrote:
> 
> > My initial post was just start discussion on this
> > topic.
> > As you all pointed out, this could evolve into
> > something 'big'. To start with, here's a sample
> code
> > I had in mind:
> >
> >     public static int sum(int n) {
> >         long j = (n+1) * n;
> >
> >         return (int) j >> 1;
> >     }
> >
> > Which calculates 1+2+...+n in constant time.
> > Alternative, with different characteristics:
> >
> >     public static int sum2(int n) {
> >         int j = n + 1;
> >
> >         return ((j>>1) * (n|1));
> >     }
> >
> > Of course, these samples could be added to
> > suit other types as well. Like Integer.
> > The same is with other methods. average(...),
> > median(...), ....
> >
> > NumberUtils would be a good place to start with,
> > since it allready has similar methods.
> >
> > Both of the samples carry a little bug with them;
> > They'll overflow at some point. Signature could
> > be changed to 'long sum(int)' to prevent
> overflows.
> >
> > - mcr70 -
> >
> > __________________________________________________
> > Do You Yahoo!?
> > HotJobs - Search Thousands of New Jobs
> > http://www.hotjobs.com
> >
> > --
> > To unsubscribe, e-mail:  
> <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> > For additional commands, e-mail:
> <mailto:commons-dev-help@jakarta.apache.org>
> >
> >
> 
> 
> --
> To unsubscribe, e-mail:  
> <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:commons-dev-help@jakarta.apache.org>
> 


__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message