Opened 13 years ago
Closed 13 years ago
#1339 closed defect (fixed)
TOL returns erroneus value when you are trying to access to CalInd(C, W)
Reported by: | César Pérez Álvarez | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | normal | Milestone: | Mantainance |
Component: | Kernel | Version: | head |
Severity: | normal | Keywords: | |
Cc: | Jorge |
Description
This code
Serie a = CalInd(C, W);
Real b = SerDat(a, y2001m01d01);
Returns b = 1. I think that value must be ?, mustn't it?
In fact, if a serie a has W dating, SerDat(a, *) = ?
Note: See
TracTickets for help on using
tickets.
En el diseño inicial de TOL el fechado de una serie era obligatoriamente no acotado, por lo que en la definición de los métodos de cálculo de las funciones 'dummy' se da por hecho esa circunstancia. En este caso concreto, 'CalInd' sólo le pregunta al primer argumento 'C' si esa fecha le pertenece, pues en tal caso el indicador en cualquier fechado infinito será 1. Pero resulta que no sólo no es no acotado es que es vacío.
De hecho, el ser un fechado no acotado es una característica que sólo se puede resolver simbólicamente, no hay ninguna forma de asegurarlo de una forma analítica. Por ese motivo se dejaba como responsabilidad del usuario la definición de fechados no acotados para las series. Desde no hace mucho existen algunos métodos heurísticos que son capaces de reconocer fechados acotados o vacíos en ciertas circunstancias, sin garantías absolutas y a veces con un coste de tiempo importante.
Si ahora queremos cambiar el paradigma y que hay que admitir la posibilidad de que los fechados sean acotados o incluso vacíos supongo que se podrá hacer pero no veo ninguna forma de garantizarlo para todos los casos. En el caso propuesto es muy sencillo, pues basta con comprobar que la fecha se encuentra entre los límites de definición del fechado (métodos Inf() y Sup() en de la clase C++ BTimeSet). Esta precaución es extensible al muchas otras funciones, algunas de las cuales he detectado pero me resulta imposible asegurar que están todas las que son y mucho más aún que no haya otras circunstancias en las que la hipótesis de fechado infinito puedan dar lugar a problemas.
Yo creo que se puede hacer pero es muy probable que surjan problemas o al meos que se descubran más casos como el presente, por lo que sólo sería partidario de introducir estos cambios en la versión de desarrollo.
En cualquier caso es algo que habría que debatir a fondo.