close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

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, *) = ?

Change History (2)

comment:1 Changed 13 years ago by Víctor de Buen Remiro

Cc: Jorge added

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.

comment:2 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

(In [3861]) Fixes #1339

Note: See TracTickets for help on using tickets.