1 votos

error de tipo en Rquantlib Bond.cpp

He estado rastreando bond.cpp y encuentro lo siguiente en FloatingBond() :

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

$\mathrm{datemisc[]}$ se pasa (se rastrea) desde FloatingBond.default en bond.R como

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

que es una cadena de caracteres, por lo que asumiría que sería un puntero a una cadena de caracteres en c++.

Mirando río abajo hacia $\mathrm{dayCounter()}$ en util.cpp veo

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

Por lo tanto, el flujo descendente está de acuerdo con el tipo pasado, pero el flujo ascendente en bond.R parece incorrecto. No veo donde la cadena de texto se traduce en un doble.

¿Qué me falta?

1voto

Probablemente ya te hayas dado cuenta. Es muy común en la ciencia de la computación que todos los tipos de datos primarios se conviertan en una cadena para la interconexión. Rcpp simplemente hizo la conversión por ti. No deberías preocuparte por la conversión y centrarte sólo en el algoritmo.

0voto

IBBoard Puntos 170

La conversión la realiza matchParams() que está en el código fuente de bond.R antes de llamar al código c++. Es confuso ya que el nombre se reutiliza en la llamada (por ejemplo, dateparams<-matchParams(dateparams) ) por lo que al mirar el código anterior se ven las cadenas de caracteres. Sería mejor si el resultado se asignara a algo más significativo como "mappedparams".

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X