Complete.Org: Mailing Lists: Archives: freeciv-dev: April 2005:
[Freeciv-Dev] Re: (PR#12834) amortize()
Home

[Freeciv-Dev] Re: (PR#12834) amortize()

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: bdunstan149@xxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#12834) amortize()
From: "Jason Short" <jdorje@xxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 18 Apr 2005 19:59:30 -0700
Reply-to: bugs@xxxxxxxxxxx

<URL: http://bugs.freeciv.org/Ticket/Display.html?id=12834 >

Benoit Hudson wrote:
> <URL: http://bugs.freeciv.org/Ticket/Display.html?id=12834 >
> 
> On Mon, Apr 18, 2005 at 02:47:03PM -0700, Brian Dunstan wrote:
> 
>><URL: http://bugs.freeciv.org/Ticket/Display.html?id=12834 >
>>
>>I noticed that the amortize() function uses a very
>>clever, but complicated, algorithm.
> 
> 
> This code is astounding.  Why don't we do this calculation in
> floating-point?  It would be (with casts to doubles made beforehand):
>         double discount = 1.0 - 1.0 / ((double)MORT);
>         return benefit * pow(discount, delay);
> or
>         return (int) (benefit * pow(discount,delay) + 0.5);
> if you want to round.

Ohmigod.

The crazy thing is, I'm sure this is done to be more efficient but the
end result is it makes the calculation O(delay) instead of O(log(delay)).

-jason





[Prev in Thread] Current Thread [Next in Thread]