<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!--   matobj.xml               GAP documentation        Max Neunhoeffer  -->
<!--                                                                      -->
<!--   Copyright (C) 2011 The GAP Group                                   -->
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->

<Chapter Label="Vector and Matrix Objects">
<Heading>Vector and Matrix Objects</Heading>

This chapter is work in progress. It will eventually describe the new
interface to vector and matrix objects.
<P/>
Traditionally, vectors in &GAP; have been lists and matrices have been 
lists of lists (of equal length). Unfortunately, such lists cannot
store their type and so it is impossible to use the full advantages of
&GAP;'s method selection on them. This situation is unsustainable in the
long run since more special representations (compressed,
sparse, etc.) have already been and even more will be implemented. 
To eventually solve 
this problem, this chapter describes a new programming interface to
vectors and matrices.

<Section Label="Fundamental Ideas and Rules">
    <Heading>Fundamental Ideas and Rules</Heading>

<#Include Label="MatObj_Overview">

</Section>

<Section Label="Categories of Vectors and Matrices">
    <Heading>Categories of Vectors and Matrices</Heading>

</Section>

<Section Label="Constructing Vector and Matrix Objects">
    <Heading>Constructing Vector and Matrix Objects</Heading>
</Section>

<Section Label="Operations for Vector Objects">
    <Heading>Operations for Vector Objects</Heading>

    <#Include Label="MatObj_PositionNonZero">
    <#Include Label="MatObj_PositionLastNonZero">
    <#Include Label="MatObj_ListOp">
    <#Include Label="MatObj_UnpackVector">
    <#Include Label="MatObj_ConcatenationOfVectors">
    <#Include Label="MatObj_ExtractSubVector">
    <#Include Label="MatObj_ZeroVector">
    <#Include Label="MatObj_ConstructingFilter_Vector">
    <#Include Label="MatObj_Randomize_Vectors">
    <#Include Label="MatObj_WeightOfVector">
    <#Include Label="MatObj_DistanceOfVectors">

</Section>

<Section Label="Operations for Row List Matrix Objects">
    <Heading>Operations for Row List Matrix Objects</Heading>

</Section>

<Section Label="Operations for Flat Matrix Objects">
    <Heading>Operations for Flat Matrix Objects</Heading>

</Section>

</Chapter>

<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %E -->

