diff options
| -rw-r--r-- | pyisda/curve.pyx | 9 |
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: |
