- publishing free software manuals
 GNU Octave Manual Version 3 by John W. Eaton, David Bateman, Søren HaubergPaperback (6"x9"), 568 pagesISBN 095461206XRRP £24.95 (\$39.95)

#### 20.1.6.3 Mathematical Considerations

Octave's implementation of sparse matrices tries to behave in exactly the same manner as for full matrices. However, there are some additional considerations needed in the use of sparse matrices, and also differences from other sparse matrix implementations.

Firstly, the `./` and `.^` operators must be used with care. In Octave their behavior is consistent with full matrices, and is different from sparse implementations in other products.

The following examples show how Octave's implementation behaves:

```s = speye (4);
a1 = s .^ 2;    # sparse
a2 = s .^ s;    # full
a3 = s .^ -2;   # full, with Infs
a4 = s ./ 2;    # sparse
a5 = 2 ./ s;    # full, with Infs
a6 = s ./ s;    # full, with NaNs
```

The first example of s raised to the power of 2 causes no problems. However s raised element-wise to itself involves a large number of terms `0 .^ 0` which is 1. Therefore `s .^ s` is a full matrix.

Likewise `s .^ -2` involves terms like `0 .^ -2` which is infinity, and so `s .^ -2` is equally a full matrix.

For the `./` operator `s ./ 2` has no problems, but `2 ./ s` involves a large number of infinity terms and is a full matrix. The case of `s ./ s` involves terms like `0 ./ 0` which is a `NaN` and so this is equally a full matrix with the zero elements of s filled with `NaN` values.

Calculations where the sign-bit of zero is important must not be performed using sparse matrices. The zeros of a sparse matrix are not stored, so their sign-bit is unknown. For example, the following calculation shows the lack of signed-zeros in the sparse matrix implementation:

```a = 0 ./ [-1, 1; 1, -1];
b = 1 ./ a
=> -Inf            Inf
Inf           -Inf
c = 1 ./ sparse (a)
=>  Inf            Inf
Inf            Inf
```

Correcting this behavior for sparse matrices would require the storage of zero elements with a negative sign-bit, and this is not implemented for reasons of efficiency.

 ISBN 095461206X GNU Octave Manual Version 3 See the print edition