Skip to content

Commit 395d51d

Browse files
authored
Add files via upload
1 parent 83dc4e2 commit 395d51d

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

libraries/mathlib.km3

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -371,14 +371,14 @@ package mathlib {
371371
return (monthsToMaturity/period)->ceil();
372372

373373
static query sequenceOfPeriods(sett : OclDate, mat : OclDate, period : int) : Sequence(int)
374-
pre: true
374+
pre: period > 0
375375
post: true
376376
activity:
377377
var numPeriods :int := FinanceLib.numberOfPeriods(sett, mat, period);
378378
return Integer.subrange(1, numPeriods);
379379

380380
static query couponDates(matur : OclDate, period : int, numPeriods : int) : Sequence(OclDate)
381-
pre: true
381+
pre: period > 0
382382
post: true
383383
activity:
384384
var cpdates : Sequence(OclDate) := Sequence{matur};
@@ -477,7 +477,7 @@ activity:
477477
return Sequence{sv, cd - daysBetween360});
478478

479479
static query calculateCouponPayments(paymentDates : Sequence(OclDate), annualCouponRate : double, dayCountC : String, freq : int) : Sequence(Sequence(double))
480-
pre: true
480+
pre: freq > 0
481481
post: true
482482
activity:
483483
var coupon_payments : Sequence(double) := Sequence{};
@@ -517,7 +517,7 @@ activity:
517517
return Sequence{coupon_payments, dates_payments};
518518

519519
static query bondCashFlows(settle : OclDate, matur : OclDate, coupon : double, dayCount : String, freq : int) : Sequence(OclAny)
520-
pre: true
520+
pre: freq > 0
521521
post: true
522522
activity:
523523
var period : int := (12 / freq)->oclAsType(int);
@@ -549,7 +549,7 @@ activity:
549549

550550

551551
static query bondPrice(yld : double, settle : OclDate, matur : OclDate, coup : double, dayCount : String, freq : int) : double
552-
pre: true
552+
pre: freq > 0
553553
post: true
554554
activity:
555555
var bcfs : Sequence(OclAny) :=
@@ -566,7 +566,7 @@ activity:
566566
return sp;
567567

568568
static query accInterest(issue : OclDate, settle : OclDate, freq : int, coup : double) : double
569-
pre: true
569+
pre: freq > 0
570570
post: true
571571
activity:
572572
var period : int := (12/freq)->oclAsType(int);
@@ -575,7 +575,7 @@ activity:
575575
return aif*(coup/freq);
576576

577577
static query accumulatedInterest(issue : OclDate, settle : OclDate, freq : int, coup : double, dayCount : String, matur : OclDate) : double
578-
pre: true
578+
pre: freq > 0
579579
post: true
580580
activity:
581581
var period : int := (12 / freq)->oclAsType(int);
@@ -629,7 +629,7 @@ static query accumulatedInterest(issue : OclDate, settle : OclDate, freq : int,
629629
return coup*(FinanceLib.days360(d1, settle, dayCount, matur)/360.0);
630630

631631
static query bondPriceClean(Y : double, I : OclDate, S : OclDate, M : OclDate, c : double, dcf : String, f : int) : double
632-
pre: true
632+
pre: freq > 0
633633
post: result = FinanceLib.bondPrice(Y,S,M,c,dcf,f) -FinanceLib.accumulatedInterest(I,S,f,c,dcf,M);
634634

635635
}

libraries/ocldate.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,10 +268,8 @@ def monthDays(mn,yr) :
268268
return result
269269

270270
def daysInMonth(self) :
271-
result = 0
272-
result = OclDate.monthDays(self.month, self.year)
273-
return result
274-
271+
return OclDate.monthDays(self.month, self.year)
272+
275273
def isEndOfMonth(self) :
276274
result = False
277275
if self.day == OclDate.monthDays(self.month, self.year) :
@@ -281,14 +279,14 @@ def isEndOfMonth(self) :
281279
return result
282280

283281
def daysBetweenDates(d1,d2) :
284-
result = 0
285282
startDay = d1.day
286283
startMonth = d1.month
287284
startYear = d1.year
288285
endDay = d2.day
289286
endMonth = d2.month
290287
endYear = d2.year
291288
days = 0
289+
292290
while startYear < endYear or (startYear == endYear and startMonth < endMonth) :
293291
daysinmonth = OclDate.monthDays(startMonth, startYear)
294292
days = days + daysinmonth - startDay + 1
@@ -297,6 +295,7 @@ def daysBetweenDates(d1,d2) :
297295
if startMonth > 12 :
298296
startMonth = 1
299297
startYear = startYear + 1
298+
300299
days = days + endDay - startDay
301300
return days
302301

0 commit comments

Comments
 (0)