# Author : Pierre Schnizer
"""
The matrix module.
This module provides mappings to some functions of gsl vectors as descirbed
in Chapter 8. of the gsl reference document. All functions accept one
dimensional Numeric arrays instead of gsl vectors, or return Numeric arrays.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Warning: When translating alghorithms from C to Python, check if the
functions do the same. Inplace change does not need to have effect here,
some of these functions make copies internally.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
All functions from Section 8. take an integer as input and return an
approbriate Numeric array as output. The prefix gsl_matrix has been discarded.
These functions are:
set_zero
set_all
set_identity
Functions to read write the matrix from a file are provided as well:
fprintf
fscanf
fread
fwrite
Some basic data operations are provided as well (See Section 8.):
diagonal
subdiagonal
superdiagonal
swap
swap_columns
swap_rowcol
swap_rows
transpose
And some functions from Section 8.
max
min
minmax
isnull
max_index
min_index
minmax_index
"""
import _block
import block
# Classes allow derivation, contrary to modules. So I wrap the basic type in a
# generic class here, and use derived classes for the different types of
# arrays.
class _generic(block._generic_block):
_base = 'matrix'
def __init__(self):
block._generic_block.__init__(self)
self.diagonal = self._get_function('diagonal')
self.subdiagonal = self._get_function('subdiagonal')
self.superdiagonal = self._get_function('superdiagonal')
self.set_identity = self._get_function('set_identity')
self.swap_columns = self._get_function('swap_columns')
self.swap_rows = self._get_function('swap_rows')
self.swap_rowcol = self._get_function('swap_rowcol')
self.transpose = self._get_function('transpose')
class _complex(_generic):
_type = 'complex'
class _complex_float(_generic):
_type = 'complex_float'
class _float(_generic):
_type = 'float'
class _double(_generic):
_type = ''
class _long(_generic):
_type = 'long'
class _int(_generic):
_type = 'int'
class _short(_generic):
_type = 'short'
class _char(_generic):
_type = 'char'
# To allow the access vector.complex.set_all() and the like ...
complex = _complex()
complex_float = _complex_float()
float = _float()
double = _double()
long = _long()
int = _int()
short = _short()
char = _char()
# Remove Helpers from the list
del block
del _block
del _generic
del _complex
del _complex_float
del _float
del _double
del _long
del _int
del _short
del _char
# allow to access matrix.double.set_all as matrix.set_all
set_zero = double.set_zero
set_all = double.set_all
swap = double.swap
isnull = double.isnull
fread = double._fread
fwrite = double._fwrite
fscanf = double._fscanf
fprintf = double._fprintf
max = double.max
max_index = double.max_index
min = double.min
min_index = double.min_index
minmax = double.minmax
minmax_index = double.minmax_index
diagonal = double.diagonal
subdiagonal = double.subdiagonal
superdiagonal = double.superdiagonal
set_identity = double.set_identity
swap_columns = double.swap_columns
swap_rows = double.swap_rows
swap_rowcol = double.swap_rowcol
transpose = double.transpose
syntax highlighted by Code2HTML, v. 0.9.1