summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2019-10-24 16:53:02 -0400
committerGuillaume Horel <guillaume.horel@gmail.com>2019-10-24 16:53:02 -0400
commita035cf7a85ab28046c312d5077d6143969ac5cca (patch)
tree4fabc1ab753929eb3d35259bb3186cd572a9590f
parent8f51643b678b006692fd6b1bdd2899f1832d99df (diff)
downloadpyisda-a035cf7a85ab28046c312d5077d6143969ac5cca.tar.gz
allocate recovery_rates
-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: