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

Closed 17 years ago

Last modified 13 years ago

#579 closed defect (fixed)

Error in PutValue for Series

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: highest Milestone:
Component: TimeSetAlgebra Version: head
Severity: critical Keywords:
Cc: Pedro Gea

Description

PutValue or := has strange behaviors for Serie.

Here you are some examples with comments in spanish:

/
Ejemplo 1
El comportamiento de la reasignación varía dependiendo
de si se accede previamente a la serie.
Supongo que es herencia del TOL Lazy.

Serie s1 = SubSer(Pulse(y2002),y2000,y2004);
Serie s2 = s1;
Serie s1 := SubSer(Pulse(y2003),y2001,y2005);
WriteLn("\n* Ejemplo 1 (a) *");
WriteLn("serie \tfirst \tlast \t2003 value:");
WriteLn("s1:\t"<<First(s1)<<"\t"<<Last(s1)<<"\t"<<SerDat(s1,y2003));
WriteLn("s2:\t"<<First(s2)<<"\t"<<Last(s2)<<"\t"<<SerDat(s2,y2003));
=> s1 == s2
& First(s1) == First(s2)
& Last(s1) != Last(s2) ???

Serie f1 = SubSer(Pulse(y2002),y2000,y2004);
Serie f2 = f1;
--- ¡Cambia el comportamiento tras un acceso! ---
Real SerDat(f2,y2002);
---------------------------------------------------
Serie f1 := SubSer(Pulse(y2003),y2001,y2005);
WriteLn("\n* Ejemplo 1 (b) *");
WriteLn("serie \tfirst \tlast \t2003 value:");
WriteLn("f1:\t"<<First(f1)<<"\t"<<Last(f1)<<"\t"<<SerDat(f1,y2003));
WriteLn("f2:\t"<<First(f2)<<"\t"<<Last(f2)<<"\t"<<SerDat(f2,y2003));
=> s1 != s2


Ejemplo 2
Vemos hasta qué punto la reasignación no es volver a asignar.

Para evitar que el resultado dependa de cuales son
las fechas inicio y final por defecto, fijamos unas.
Date PutDefaultDates(y2008,y2009);

Serie s3 = Pulse(y2003);
WriteLn("\n* Ejemplo 2 (a) *");
WriteLn("serie \tfirst \tlast \t2003 value:");
WriteLn("s3:\t"<<First(s3)<<"\t"<<Last(s3)<<" \t"<<SerDat(s3,y2003));

Serie s3 := Pulse(y2003);
WriteLn("\n* Ejemplo 2 (b) *");
WriteLn("serie \tfirst \tlast \t2003 value:");
WriteLn("s3:\t"<<First(s3)<<"\t"<<Last(s3)<<"\t"<<SerDat(s3,y2003));


Change History (5)

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

Status: newassigned

I think that PutValue should be disabled for virtual data types as Serie and TimeSet but I'll try to solve it at least for discrete case, when the Serie has a bounded interval of definition.

Thanks for reporting.

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

Owner: changed from danirus to Víctor de Buen Remiro
Status: assignednew

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

Resolution: fixed
Status: newclosed

I think that problem has been solved for bounded case. In no bounded one the time series is not a serializable object and cannot be copied because it is just and abstract syntax tree. So, all we can do is truncate it between default dates. Now is shown a warning explaining that the infinite time series will be truncated.

This is the new behaviour, please tell me if you are agree

* Ejemplo 1 (a) *
serie first last 2003 value:
s1: y2001m01d01 y2005m01d01 1
s2: y2000m01d01 y2004m01d01 0

* Ejemplo 1 (b) *
serie first last 2003 value:
f1: y2001m01d01 y2005m01d01 1
f2: y2000m01d01 y2004m01d01 0

* Ejemplo 2 (a) *
serie first last 2003 value:
s3: TheBegin TheEnd 1
<W>
Warning: [1] No se puede aplicar PutValue (:=) a una serie temporal con otra que no tiene fechas acotadas, por lo que será truncada por las fechas por defecto en curso: [y2008m01d1,y2009m01d01]</W>

* Ejemplo 2 (b) *
serie first last 2003 value:
s3: y2008m01d01 y2009m01d01 ?

Thanks for reporting

comment:4 Changed 17 years ago by Víctor de Buen Remiro

bug_file_loc: http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000579

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

(In [4130]) Refs #1426
Refs #579

Note: See TracTickets for help on using tickets.