R

Rquantlib Bond.cpp 中的類型不匹配

  • May 14, 2016

我一直在回溯 bond.cpp 並在 FloatingBond() 中找到以下內容:

double dayCounter = Rcpp::as<double>(datemisc["dayCounter"]);

$ \mathrm{datemisc[]} $ 從 Bond.R 中的 FloatingBond.default 傳遞(追溯到)為

dateparams=list(....
               dayCounter='Thirty360',
               ....)

這是一個字元串,所以我假設它是指向 C++ 中的字元串的指針。

向下游望去 $ \mathrm{dayCounter()} $ 在 util.cpp 我看到

QuantLib::DayCounter getDayCounter(const double n){
   if (n==0)
       return QuantLib::Actual360();
   else if (n==1)
       return QuantLib::Actual365Fixed();
   .......
}

因此下游同意傳遞的類型,但 bond.R 中的上游似乎不正確。我看不到文本字元串在哪裡被翻譯成雙精度。

我錯過了什麼?

你可能已經想通了。在電腦科學中,所有主要數據類型都被轉換為用於介面的字元串是很常見的。Rcpp 只是為您完成了轉換。你不應該擔心轉換,只關注算法。

轉換由呼叫 c++ 程式碼之前的 bond.R 源中的 matchParams() 執行。令人困惑的是名稱在呼叫中被重用(例如 dateparams<-matchParams(dateparams) ),因此在查看上面的程式碼時,您會看到字元串。如果將結果分配給更有意義的東西,比如“mappedparams”,那就更好了。

引用自:https://quant.stackexchange.com/questions/24862