summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pyisda/curve.pyx9
1 files changed, 6 insertions, 3 deletions
diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx
index 224ad1b..b7b94e1 100644
--- a/pyisda/curve.pyx
+++ b/pyisda/curve.pyx
@@ -762,7 +762,7 @@ cdef class SpreadCurve(Curve):
@cython.boundscheck(False)
def tweak_curve(self, double epsilon, bint multiplicative=True,
- unsigned long mask=0, bint inplace=False):
+ unsigned long mask=-1, bint inplace=False):
"""
Tweak the survival curve in place.
@@ -772,8 +772,8 @@ cdef class SpreadCurve(Curve):
tweaking factor (either additive or multiplicative)
multiplicative : bool, optional
do we scale by 1+epsilon or add epsilon (default multiplicative).
- mask : array of bool or None
- If None (default), tweak everything, otherwise only tweak values
+ mask : bitmask
+ Default is tweak everything, otherwise only tweak values
in the mask.
"""
cdef:
@@ -781,12 +781,15 @@ cdef class SpreadCurve(Curve):
TCurve* curve_tweaked
SpreadCurve sc
int num_items = curve_orig.fNumItems
+ double* recovery_rates
if not inplace:
sc = SpreadCurve.__new__(SpreadCurve)
curve_tweaked = JpmcdsCopyCurve(curve_orig)
sc._thisptr.reset(curve_tweaked, JpmcdsFreeTCurve)
sc.name = make_shared[CurveName](deref(self.name))
+ recovery_rates = <double*>malloc(sizeof(double) * num_items)
+ sc.recovery_rates.reset(recovery_rates, double_free)
memcpy(sc.recovery_rates.get(), self.recovery_rates.get(),
num_items * sizeof(double))
else: