"misbehaving" Union function
- To: mathgroup at smc.vnet.net
- Subject: [mg24075] "misbehaving" Union function
- From: Felix Farkas <farkas at ica.epfl.ch>
- Date: Fri, 23 Jun 2000 02:26:43 -0400 (EDT)
- Organization: EPFL
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
i am trying to build up a list of points. The input is,
a list of events. I use the Union function in order to
avoid duplicate points. however i do not have the expected result.
i really don't know where the error is coming from.
Could somebody, please, tell me where is the fault?
I would greatly appreciate any suggestions.
Many thanks in advance.
Regards,
Felix
Here is the function:
In[1]:= Genpoints[events_] :=
Module[
{ev = events, rate,
duration, time, burst, bytes = 0, points = {}},
rate := ee[[3]];
duration := ee[[2]];
time := ee[[1]];
burst := ee[[4]];
While[Length[ev] != 0,
ee = First[ev];
ev = Rest[ev];
points = Union[points,
If[rate == -1,
(*then*)
bytes += burst; {{time,
bytes - burst}, {time, bytes}},
(*else*)
bytes += rate*duration;
Print[{{time, bytes - rate*duration}, {time + duration,
bytes}}];
{{time, bytes -
rate*duration}, {time + duration, bytes}}]
]
];
points
]
The output generated is:
In[2]:= aa = {{0, 6, 0.3333333, 2, 2, 1},
{6, 8, 0.5, 4, 2, 1}, {14, 1, 1, 1, 2, 1},
{15, 10, 0.4, 4, 2, 1}, {25, 1, 1, 1, 2, 1}};
In[3]:= po2 = Genpoints[aa]
Out[3]= {{0, 0.}, {6, 2.}, {6, 2.}, {14, 6.},
{15, 7.}, {25, 11.}, {26, 12.}}
-----------------------------------------------------------------------------
Felix Farkas
EPFL-DSC-ICA
IN-Ecublens
CH-1015 Lausanne
Switzerland
tel: 0041 21 693 6601
fax: 0041 21 693 6610
email: felix.farkas at epfl.ch