+1 from me.  If you update it to the most recent Decimal standard I think
its worth it.

anyone else agree?

On 10/15/07, Mateusz Rukowicz <[EMAIL PROTECTED]> wrote:
>
> Hi!
>
>     I've been working on C decimal project during gSoC 2006. After year
> of idling (I had extremely busy first year on University, but well, most
> of us are extremely busy) I decided, that I will handle further
> developing (there is still much development needed, and updating to most
> recent standard is just the beginning). I understand, that chances of
> merging C Decimal with main tree are much lower than year ago, so I
> would like to know if there is still interest in C version of Decimal.
> If so - should I write PEP, or just code and 'we'll see later'?
>
> I've made a little benchmark - given loan amount, assets and months that
> it's meant to be payed off, find minimal monthly loan cost (It's just
> first idea that came to me for use Decimal in financial 'application'
> :>) [This solution has complexity O(log(amount) * months) which is far
> from optimal, but it's meant to benchmark Decimal, not python itself].
>
> Code:
>
> from _decimal import *
> import sys
> gc = getcontext();
>
> def check(loan, percent, monthly):
>     ret = 0
>     mult = 1 + (percent / 1200)
>     if (loan - monthly) * mult >= loan:
>         return -1               #you cannot payoff loan ;(
>
>     while loan > 0:
>         loan = loan - monthly
>         loan = loan * mult
>         ret += 1
>     return ret
>
> def minimize_monthly(loan, percent, months):
>     lower = Decimal(0)
>     upper = Decimal(loan)
>
>     while(upper > lower + Decimal("1e-3")):
>         mid = (upper + lower)/2
>         ret = check(loan, percent, mid)
>         if(ret > months or ret == -1):
>             lower = mid
>         else:
>             upper = mid
>
>
>     return lower
>
>
>
> gc.prec = int(sys.argv[4])
> gc.rounding = ROUND_UP
> print minimize_monthly(Decimal(sys.argv[1]), Decimal(sys.argv[2]),
> int(sys.argv[3]))
>
> and timings (1mln loan, for 15 years, 2% year assets, and precision = 10
> :>):
> [EMAIL PROTECTED]:~/programy/python/decimal/decimal-c$ time
> ../../pyth/python/python loan.py  1000000 2 180 10
> 6424.37955
>
> real    0m0.068s
> user    0m0.064s
> sys     0m0.004s
> [EMAIL PROTECTED]:~/programy/python/decimal/decimal-c$ time
> ../../pyth/python/python loan2.py  1000000 2 180 10
> 6424.37955
>
> real    0m2.168s
> user    0m2.148s
> sys     0m0.016s
>
> Please don't misunderstand me - I don't want to show python Decimal is
> slow, I want to show that C Decimal is worth effort. I am also aware of
> simplicity of this benchmark. (This python have been of course compiled
> with -O3).
>
> Best regards,
> Mateusz Rukowicz.
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/greg%40krypto.org
>
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to