sen1 at math.msu.edu sen1 at math.msu.edu
Tue Apr 17 18:25:39 CDT 2007

```Thanks to all who responded.

I was trying to find a way to use the built-in sublist and lambda
functions.

The function 'j_sublist' is the routine which Jaime suggested.

The function 'li_2' makes a list of pairs out of a given list.

The function pos_2 uses 'sublist' and 'lambda'.

It seems to work very fast.

The slow part becomes making the routine li_2.

Is there a function which selects indexed list elements to feed to
lambda?

TIA,
-sen

---------------------------------------------------------------------------
| Sheldon E. Newhouse            |    e-mail: sen1 at math.msu.edu           |
| Mathematics Department         |       				   |
| Michigan State University      | telephone: 517-355-9684                |
| E. Lansing, MI 48824-1027 USA  |       FAX: 517-432-1562                |
---------------------------------------------------------------------------

On Tue, 17 Apr 2007, Jaime E. Villate wrote:

> On Tue, 2007-04-17 at 11:08 -0400, Stavros Macrakis wrote:
>> This will work, but using indexing to access elements of a Maxima list
>> is not very efficient; each index operation x[i] takes O(i) time.
> thanks for the tip. I didn't know that.
> Jaime
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>
-------------- next part --------------
showtime: all;

xrl(i):= makelist(random(10.0)-5,j,1,i);

j_sublist(x):= block([l: [], prev: x[1]], for i:2 thru length(x) do
(if prev*x[i] > 0 then l: cons(prev,l), prev:x[i]), reverse(l));

pos(list):= sublist(list, lambda([list], list > 0))\$

li_2(list):= makelist([list[i],list[i+1]],i,1, length(list) -1)\$

pos_2(list):=
sublist(list, lambda([x],x[1]*x[2] > 0))\$

```