Available functions
Here is a list of the functions currently implemented in the GEM Library. The first table shows static functions which can be called without reference to a gem/sgem object. These functions allow to create a high precision matrix or to adjust some library parameters.
| function | full support | sparse support | remarks |
|---|---|---|---|
| gem | ✔ | ✔ | gem object constructor |
| sgem | ✔ | ✔ | sparse gem object constructor |
| gemify | ✔ | ✔ | converts a matrix to gem or sgem object, preserving its sparsity |
| gem.rand / sgem.rand | ✔ | ✔ | generates high precision random numbers |
| gem.randn / sgem.randn | ✔ | ✔ | generates high precision random numbers following a gaussian distribution |
| gem.rng | ✔ | ✔ | gem.rand random seed |
| gem.workingPrecision | ✔ | ✔ | sets the working precision of the library |
| gem.displayPrecision | ✔ | ✔ | sets the precision used when displaying gem and sgem objects |
| gem.sparseLikeMatlab | ✗ | ✔ | sets whether functions not preserving zeros should be allowed to produce sparse matrices |
| make | ✔ | ✔ | compiles the library |
List of methods:
The following function can be applied to gem/sgem objects directly.
| methods | full support | sparse support | remarks |
|---|---|---|---|
| abs | ✔ | ✔ | |
| all | ✔ | ✔ | |
| and | ✔ | ✔ | |
| any | ✔ | ✔ | |
| acos | ✔ | ✔ | |
| acot | ✔ | ✔ | |
| acsc | ✔ | ✔ | |
| and | ✔ | ✔ | |
| angle | ✔ | ✔ | |
| asec | ✔ | ✔ | |
| asin | ✔ | ✔ | |
| atan | ✔ | ✔ | |
| cat | ✔ | ✔ | |
| cbrt | ✔ | ✔ | |
| clean | ✗ | ✔ | |
| ceil | ✔ | ✔ | |
| colon | ✔ | ✔ | |
| complex | ✔ | ✔ | |
| cond | ✔ | ✔ | |
| conj | ✔ | ✔ | |
| cos | ✔ | ✔ | |
| cot | ✔ | ✔ | |
| csc | ✔ | ✔ | |
| ctranspose | ✔ | ✔ | |
| diag | ✔ | ✔ | |
| disp | ✔ | ✔ | |
| display | ✔ | ✔ | |
| diff | ✔ | ✔ | |
| double | ✔ | ✔ | |
| eig | ✔ | ✗ | |
| eigs | ✔ | ✔ | |
| eps | ✔ | ✔ | |
| end | ✔ | ✔ | |
| eq | ✔ | ✔ | |
| exp | ✔ | ✔ | |
| find | ✔ | ✔ | |
| fix | ✔ | ✔ | |
| floor | ✔ | ✔ | |
| full | ✔ | ✔ | |
| ge | ✔ | ✔ | |
| gt | ✔ | ✔ | |
| horzcat | ✔ | ✔ | |
| imag | ✔ | ✔ | |
| inv | ✔ | ✔ | |
| isempty | ✔ | ✔ | |
| isequal | ✔ | ✔ | |
| isequaln | ✔ | ✔ | |
| isfinite | ✔ | ✔ | |
| isfloat | ✔ | ✔ | |
| ishermitian | ✔ | ✔ | |
| isinf | ✔ | ✔ | |
| isinteger | ✔ | ✔ | |
| isnan | ✔ | ✔ | |
| isnumeric | ✔ | ✔ | |
| isreal | ✔ | ✔ | |
| issorted | ✔ | ✔ | |
| issparse | ✔ | ✔ | |
| issymmetric | ✔ | ✔ | |
| kron | ✔ | ✔ | supports more than 2 inputs, as in kron(A,B,C) or kron({A,B,C}) |
| ldivide | ✔ | ✔ | |
| le | ✔ | ✔ | |
| length | ✔ | ✔ | |
| loadobj | ✔ | ✔ | |
| log | ✔ | ✔ | |
| log10 | ✔ | ✔ | |
| log2 | ✔ | ✔ | |
| logical | ✔ | ✔ | |
| lt | ✔ | ✔ | |
| max | ✔ | ✔ | |
| min | ✔ | ✔ | |
| minus | ✔ | ✔ | |
| mldivide | ✔ | ✔ | |
| mod | ✔ | ✔ | |
| mpower | ✔ | ✔ | supports two scalars, or matrices with +/-1 exponent |
| mrdivide | ✔ | ✔ | |
| mtimes | ✔ | ✔ | |
| ne | ✔ | ✔ | |
| nnz | ✔ | ✔ | |
| nonzeros | ✔ | ✔ | |
| norm | ✔ | ✔ | |
| not | ✔ | ✔ | |
| null | ✔ | ✗ | |
| numel | ✔ | ✔ | |
| num2str | ✔ | ✔ | through matlab’s implementation and sprintf |
| or | ✔ | ✔ | |
| pinv | ✔ | ✗ | through matlab’s implementation |
| plot | ✔ | ✔ | |
| plus | ✔ | ✔ | |
| power | ✔ | ✔ | |
| precision | ✔ | ✔ | |
| prod | ✔ | ✔ | |
| rank | ✔ | ✔ | |
| rdivide | ✔ | ✔ | |
| real | ✔ | ✔ | |
| reshape | ✔ | ✔ | |
| round | ✔ | ✔ | |
| saveobj | ✔ | ✔ | |
| sec | ✔ | ✔ | |
| sign | ✔ | ✔ | |
| sin | ✔ | ✔ | |
| size | ✔ | ✔ | |
| sort | ✔ | ✔ | |
| sortrows | ✔ | ✔ | through matlab’s implementation |
| sortrowsc | ✔ | ✗ | |
| sparse | ✔ | ✔ | |
| sprintf | ✔ | ✔ | currently only supports a few digits of precision; use toStrings to extract the full precision in string format |
| sqrt | ✔ | ✔ | |
| subsasgn | ✔ | ✔ | |
| subsref | ✔ | ✔ | |
| sum | ✔ | ✔ | |
| svd | ✔ | ✗ | |
| svds | ✔ | ✔ | |
| tan | ✔ | ✔ | |
| times | ✔ | ✔ | |
| toStrings | ✔ | ✔ | |
| transpose | ✔ | ✔ | |
| uminus | ✔ | ✔ | |
| unique | ✔ | ✔ | through matlab’s implementation |
| uplus | ✔ | ✔ | |
| vertcat | ✔ | ✔ | |
| xor | ✔ | ✔ |