Overview - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


Indexing Functions (for tables and arrays)

 

Calling Sequence

Description

Built-in Indexing Functions

Examples

Calling Sequence

table(indexfcn, indexfcn...)

array(indexfcn, indexfcn...)

Description

• 

The indexfcn arguments to table or array are a sequence of named indexing methods used when assigning to or evaluating entries in the table or array. If no indexing methods are specified, then Maple's ordinary indexing is used.

• 

All indexing is done through the first indexing method specified for the table or array. The procedure index/method is invoked with two or three parameters. If simply evaluating the table entry, then only two parameters are passed. The first is a list containing the indices to be used and the second is a named table using the remaining indexing methods. In this way, later indexing methods modify the behavior of earlier methods. If the entry is being assigned to, a third argument, a list of the values being assigned, is passed to the indexing function.

• 

The following names are known as built-in or library-defined indexing functions:  symmetric, antisymmetric, sparse, diagonal, identity, and exception.

• 

If indexfcn is not a built-in indexing function, cat(index,"/",indexfcn) is used as the name of the procedure that defines the indexing function.

• 

The example below constructs an indexing function that returns infinity for all unassigned entries in the table (similar to the sparse indexing function which returns zero). The second example demonstrates the chaining of multiple indexing functions to get the desired effect.

• 

Note: The command array has been superseded by Array.  Information on indexing functions for Arrays can be found at rtable_indexfcn.

Built-in Indexing Functions

• 

Several indexing functions are built into Maple.  For more information, see the corresponding help page.

antisymmetric

case_insensitive

diagonal

exception

identity

readonly

sparse

symmetric

Examples

Use the built-in symmetric indexing function with a table

ttablesymmetric:

t1,21

t1,21

(1)

t1,2

1

(2)

t2,1

1

(3)

Define a custom indexing function infinity and use it.

`index/infinity` := proc(Idx::list,Tbl::table,Entry::list)
    if (nargs = 2) then
        if assigned(Tbl[op(Idx)]) then Tbl[op(Idx)];
        else infinity;
        end if;
    elif Entry = [infinity] then
        infinity;
    else
        Tbl[op(Idx)] := op(Entry);
    end if;
end proc:

ttable:

t1,21:

t1,2

1

(4)

t1,1

(5)

Use the built-in indexing function symmetric together with the custom one defined earlier.

ttablesymmetric,:

t1,21

t1,21

(6)

t1,2

1

(7)

t2,1

1

(8)

t1,1

(9)

See Also

Indexing Functions for Arrays, Matrices, and Vectors (rtable Objects)

table