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 16 years ago

Closed 16 years ago

Last modified 16 years ago

#699 closed defect (fixed)

Funcion SubSer, TheBegin,TheEnd

Reported by: Iván Robles Owned by: Víctor de Buen Remiro
Priority: normal Milestone: Mantainance
Component: SetAlgebra Version: 1.1.7
Severity: normal Keywords:
Cc:

Description

Cuando se ejecuta el siguiente código:

Serie a = Pulse(y2007m01d01,Semanal);
Serie b = SubSer(a,TheBegin,TheEnd);

La serie b aparece con retardo respecto de la a. Deberian ser iguales.

La versión de TOL es "v1.1.7 b.12 2009-06-12 07:48:53 i686-win"

Change History (4)

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

Resolution: fixed
Status: newclosed

(In [1082]) SubSer cannot use cache when it is not stationary
Fixes #699

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

(In [1083]) SubSer cannot use cache when it is not stationary
Fixes #699

comment:3 Changed 16 years ago by Víctor de Buen Remiro

Component: VariousSetAlgebra
Milestone: Manteinance
Priority: highestnormal
Severity: blockernormal

Hola

La función SubSer se creó para cortar series, infinitas o no, entre fechas finitas.
Bajo ese supuesto, se estaba usando siempre la cache interna para acelerar los cálculos, pero claro eso no puede funcionar cuando la serie resultado del SubSer no está acotada. La solución es muy sencilla, basta comprobar primero si se puede usar la caché y en caso contrario no usarla.

Gracias por la colaboración.

No puedo evitar hacerte esta pregunta: ¿para qué diablos necesitas hacer un SubSer( , TheBegin, TheEnd) ? Se me puede ocurrir la utilidad de SubSer( , fecha, TheEnd) o SubSer( , TheBegin, fecha); pero no se me alcanza cómo llegaste a escribir algo tan chocante.

comment:4 in reply to:  3 Changed 16 years ago by Iván Robles

Veo normal que me hagas la pregunta, pues no tiene ningun sentido hacerlo.

Es mala programación que tenemos hecha. De hecho donde lo teniamos puesto y nos hemos dado cuenta del error, lo hemos cambiado. Pero como no sabia si lo tenemos puesto en mas sitios o si hay alguien que en algun proyecto tenga los malos habitos de programación que yo, preferi subirlo.

Por lo que teniamos puesto eso es porque cortamos las series input con un subser de las fechas de inicio y de fin de el output, por lo que cogemos el first y el last del output y se lo aplicamos a todos los subser de los inputs. Lo malo es que nuestro output era infinito a veces, porque lo alargabamos con ceros hasta el infinito en el caso de que tuviera omitidos al principio o al final de la serie. Por ejemplo si una serie solo tenia datos distintos de cero en 2008, en 2009 no teniamos serie y la alargabamos con cero porque en realidad eran cero, y lo alargabamos alegremente hasta el infinito . Ya te digo que era error nuestro.

Muchas gracias por la resolución del bug

Note: See TracTickets for help on using tickets.