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
:>):
mateusz MatLaps:~/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
mateusz MatLaps:~/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
ht
tp://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/p
ython-dev/nessto%40sharedlog.com
|