# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.3.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.


import collections

from sys import version_info as _version_info
if _version_info < (3, 7, 0):
    raise RuntimeError("Python 3.7 or later required")

from . import _ITKCommonPython


from . import _ITKCommonPython



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _vnl_diag_matrixPython
else:
    import _vnl_diag_matrixPython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


if _swig_python_version_info[0:2] >= (3, 3):
    import collections.abc
else:
    import collections

import itk.stdcomplexPython
import itk.pyBasePython
import itk.vnl_vectorPython
import itk.vnl_matrixPython
class vnl_diag_matrixCF(object):
    r"""Proxy of C++ vnl_diag_matrixCF class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _vnl_diag_matrixPython.delete_vnl_diag_matrixCF

    def __init__(self, *args):
        r"""
        __init__(self) -> vnl_diag_matrixCF
        __init__(self, arg0) -> vnl_diag_matrixCF

        Parameters
        ----------
        arg0: vnl_diag_matrixCF const &

        __init__(self, nn) -> vnl_diag_matrixCF

        Parameters
        ----------
        nn: unsigned int

        __init__(self, nn, value) -> vnl_diag_matrixCF

        Parameters
        ----------
        nn: unsigned int
        value: stdcomplexF const &

        __init__(self, that) -> vnl_diag_matrixCF

        Parameters
        ----------
        that: vnl_vectorCF

        """
        _vnl_diag_matrixPython.vnl_diag_matrixCF_swiginit(self, _vnl_diag_matrixPython.new_vnl_diag_matrixCF(*args))

    def __imul__(self, v):
        r"""
        __imul__(self, v) -> vnl_diag_matrixCF

        Parameters
        ----------
        v: stdcomplexF

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF___imul__(self, v)

    def __itruediv__(self, *args):
        return _vnl_diag_matrixPython.vnl_diag_matrixCF___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def invert_in_place(self):
        r"""invert_in_place(self) -> vnl_diag_matrixCF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_invert_in_place(self)

    def determinant(self):
        r"""determinant(self) -> stdcomplexF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_determinant(self)

    def solve(self, *args):
        r"""
        solve(self, b) -> vnl_vectorCF

        Parameters
        ----------
        b: vnl_vectorCF const &

        solve(self, b, out)

        Parameters
        ----------
        b: vnl_vectorCF const &
        out: vnl_vectorCF *

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_solve(self, *args)

    def __call__(self, *args):
        r"""
        __call__(self, i, j) -> stdcomplexF

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i, j) -> stdcomplexF

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i) -> stdcomplexF

        Parameters
        ----------
        i: unsigned int

        __call__(self, i) -> stdcomplexF

        Parameters
        ----------
        i: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF___call__(self, *args)

    def get_diagonal(self):
        r"""get_diagonal(self) -> vnl_vectorCF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_get_diagonal(self)

    def diagonal(self):
        r"""diagonal(self) -> vnl_vectorCF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_diagonal(self)

    def fill_diagonal(self, v):
        r"""
        fill_diagonal(self, v) -> vnl_diag_matrixCF

        Parameters
        ----------
        v: stdcomplexF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_fill_diagonal(self, v)

    def set_diagonal(self, v):
        r"""
        set_diagonal(self, v) -> vnl_diag_matrixCF

        Parameters
        ----------
        v: vnl_vectorCF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_set_diagonal(self, v)

    def begin(self, *args):
        r"""
        begin(self) -> stdcomplexF
        begin(self) -> stdcomplexF
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_begin(self, *args)

    def end(self, *args):
        r"""
        end(self) -> stdcomplexF
        end(self) -> stdcomplexF
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_end(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_size(self)

    def rows(self):
        r"""rows(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_rows(self)

    def cols(self):
        r"""cols(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_cols(self)

    def columns(self):
        r"""columns(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_columns(self)

    def put(self, r, c, v):
        r"""
        put(self, r, c, v)

        Parameters
        ----------
        r: unsigned int
        c: unsigned int
        v: stdcomplexF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_put(self, r, c, v)

    def get(self, r, c):
        r"""
        get(self, r, c) -> stdcomplexF

        Parameters
        ----------
        r: unsigned int
        c: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_get(self, r, c)

    def as_matrix(self):
        r"""as_matrix(self) -> vnl_matrixCF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_as_matrix(self)

    def set_size(self, n):
        r"""
        set_size(self, n)

        Parameters
        ----------
        n: int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_set_size(self, n)

    def clear(self):
        r"""clear(self)"""
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_clear(self)

    def fill(self, x):
        r"""
        fill(self, x) -> vnl_diag_matrixCF

        Parameters
        ----------
        x: stdcomplexF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_fill(self, x)

    def data_block(self, *args):
        r"""
        data_block(self) -> stdcomplexF
        data_block(self) -> stdcomplexF
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_data_block(self, *args)

    def set(self, v):
        r"""
        set(self, v) -> vnl_diag_matrixCF

        Parameters
        ----------
        v: vnl_vectorCF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixCF_set(self, v)

# Register vnl_diag_matrixCF in _vnl_diag_matrixPython:
_vnl_diag_matrixPython.vnl_diag_matrixCF_swigregister(vnl_diag_matrixCF)
class vnl_diag_matrixD(object):
    r"""Proxy of C++ vnl_diag_matrixD class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _vnl_diag_matrixPython.delete_vnl_diag_matrixD

    def __init__(self, *args):
        r"""
        __init__(self) -> vnl_diag_matrixD
        __init__(self, arg0) -> vnl_diag_matrixD

        Parameters
        ----------
        arg0: vnl_diag_matrixD const &

        __init__(self, nn) -> vnl_diag_matrixD

        Parameters
        ----------
        nn: unsigned int

        __init__(self, nn, value) -> vnl_diag_matrixD

        Parameters
        ----------
        nn: unsigned int
        value: double const &

        __init__(self, that) -> vnl_diag_matrixD

        Parameters
        ----------
        that: vnl_vectorD

        """
        _vnl_diag_matrixPython.vnl_diag_matrixD_swiginit(self, _vnl_diag_matrixPython.new_vnl_diag_matrixD(*args))

    def __imul__(self, v):
        r"""
        __imul__(self, v) -> vnl_diag_matrixD

        Parameters
        ----------
        v: double

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD___imul__(self, v)

    def __itruediv__(self, *args):
        return _vnl_diag_matrixPython.vnl_diag_matrixD___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def invert_in_place(self):
        r"""invert_in_place(self) -> vnl_diag_matrixD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_invert_in_place(self)

    def determinant(self):
        r"""determinant(self) -> double"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_determinant(self)

    def solve(self, *args):
        r"""
        solve(self, b) -> vnl_vectorD

        Parameters
        ----------
        b: vnl_vectorD const &

        solve(self, b, out)

        Parameters
        ----------
        b: vnl_vectorD const &
        out: vnl_vectorD *

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_solve(self, *args)

    def __call__(self, *args):
        r"""
        __call__(self, i, j) -> double

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i, j) -> double

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i) -> double

        Parameters
        ----------
        i: unsigned int

        __call__(self, i) -> double const &

        Parameters
        ----------
        i: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD___call__(self, *args)

    def get_diagonal(self):
        r"""get_diagonal(self) -> vnl_vectorD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_get_diagonal(self)

    def diagonal(self):
        r"""diagonal(self) -> vnl_vectorD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_diagonal(self)

    def fill_diagonal(self, v):
        r"""
        fill_diagonal(self, v) -> vnl_diag_matrixD

        Parameters
        ----------
        v: double const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_fill_diagonal(self, v)

    def set_diagonal(self, v):
        r"""
        set_diagonal(self, v) -> vnl_diag_matrixD

        Parameters
        ----------
        v: vnl_vectorD const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_set_diagonal(self, v)

    def begin(self, *args):
        r"""
        begin(self) -> double
        begin(self) -> double const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_begin(self, *args)

    def end(self, *args):
        r"""
        end(self) -> double
        end(self) -> double const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_end(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_size(self)

    def rows(self):
        r"""rows(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_rows(self)

    def cols(self):
        r"""cols(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_cols(self)

    def columns(self):
        r"""columns(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_columns(self)

    def put(self, r, c, v):
        r"""
        put(self, r, c, v)

        Parameters
        ----------
        r: unsigned int
        c: unsigned int
        v: double const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_put(self, r, c, v)

    def get(self, r, c):
        r"""
        get(self, r, c) -> double

        Parameters
        ----------
        r: unsigned int
        c: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_get(self, r, c)

    def as_matrix(self):
        r"""as_matrix(self) -> vnl_matrixD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_as_matrix(self)

    def set_size(self, n):
        r"""
        set_size(self, n)

        Parameters
        ----------
        n: int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_set_size(self, n)

    def clear(self):
        r"""clear(self)"""
        return _vnl_diag_matrixPython.vnl_diag_matrixD_clear(self)

    def fill(self, x):
        r"""
        fill(self, x) -> vnl_diag_matrixD

        Parameters
        ----------
        x: double const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_fill(self, x)

    def data_block(self, *args):
        r"""
        data_block(self) -> double
        data_block(self) -> double const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_data_block(self, *args)

    def set(self, v):
        r"""
        set(self, v) -> vnl_diag_matrixD

        Parameters
        ----------
        v: vnl_vectorD const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixD_set(self, v)

# Register vnl_diag_matrixD in _vnl_diag_matrixPython:
_vnl_diag_matrixPython.vnl_diag_matrixD_swigregister(vnl_diag_matrixD)
class vnl_diag_matrixF(object):
    r"""Proxy of C++ vnl_diag_matrixF class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _vnl_diag_matrixPython.delete_vnl_diag_matrixF

    def __init__(self, *args):
        r"""
        __init__(self) -> vnl_diag_matrixF
        __init__(self, arg0) -> vnl_diag_matrixF

        Parameters
        ----------
        arg0: vnl_diag_matrixF const &

        __init__(self, nn) -> vnl_diag_matrixF

        Parameters
        ----------
        nn: unsigned int

        __init__(self, nn, value) -> vnl_diag_matrixF

        Parameters
        ----------
        nn: unsigned int
        value: float const &

        __init__(self, that) -> vnl_diag_matrixF

        Parameters
        ----------
        that: vnl_vectorF

        """
        _vnl_diag_matrixPython.vnl_diag_matrixF_swiginit(self, _vnl_diag_matrixPython.new_vnl_diag_matrixF(*args))

    def __imul__(self, v):
        r"""
        __imul__(self, v) -> vnl_diag_matrixF

        Parameters
        ----------
        v: float

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF___imul__(self, v)

    def __itruediv__(self, *args):
        return _vnl_diag_matrixPython.vnl_diag_matrixF___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def invert_in_place(self):
        r"""invert_in_place(self) -> vnl_diag_matrixF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_invert_in_place(self)

    def determinant(self):
        r"""determinant(self) -> float"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_determinant(self)

    def solve(self, *args):
        r"""
        solve(self, b) -> vnl_vectorF

        Parameters
        ----------
        b: vnl_vectorF const &

        solve(self, b, out)

        Parameters
        ----------
        b: vnl_vectorF const &
        out: vnl_vectorF *

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_solve(self, *args)

    def __call__(self, *args):
        r"""
        __call__(self, i, j) -> float

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i, j) -> float

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i) -> float

        Parameters
        ----------
        i: unsigned int

        __call__(self, i) -> float const &

        Parameters
        ----------
        i: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF___call__(self, *args)

    def get_diagonal(self):
        r"""get_diagonal(self) -> vnl_vectorF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_get_diagonal(self)

    def diagonal(self):
        r"""diagonal(self) -> vnl_vectorF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_diagonal(self)

    def fill_diagonal(self, v):
        r"""
        fill_diagonal(self, v) -> vnl_diag_matrixF

        Parameters
        ----------
        v: float const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_fill_diagonal(self, v)

    def set_diagonal(self, v):
        r"""
        set_diagonal(self, v) -> vnl_diag_matrixF

        Parameters
        ----------
        v: vnl_vectorF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_set_diagonal(self, v)

    def begin(self, *args):
        r"""
        begin(self) -> float
        begin(self) -> float const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_begin(self, *args)

    def end(self, *args):
        r"""
        end(self) -> float
        end(self) -> float const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_end(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_size(self)

    def rows(self):
        r"""rows(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_rows(self)

    def cols(self):
        r"""cols(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_cols(self)

    def columns(self):
        r"""columns(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_columns(self)

    def put(self, r, c, v):
        r"""
        put(self, r, c, v)

        Parameters
        ----------
        r: unsigned int
        c: unsigned int
        v: float const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_put(self, r, c, v)

    def get(self, r, c):
        r"""
        get(self, r, c) -> float

        Parameters
        ----------
        r: unsigned int
        c: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_get(self, r, c)

    def as_matrix(self):
        r"""as_matrix(self) -> vnl_matrixF"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_as_matrix(self)

    def set_size(self, n):
        r"""
        set_size(self, n)

        Parameters
        ----------
        n: int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_set_size(self, n)

    def clear(self):
        r"""clear(self)"""
        return _vnl_diag_matrixPython.vnl_diag_matrixF_clear(self)

    def fill(self, x):
        r"""
        fill(self, x) -> vnl_diag_matrixF

        Parameters
        ----------
        x: float const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_fill(self, x)

    def data_block(self, *args):
        r"""
        data_block(self) -> float
        data_block(self) -> float const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_data_block(self, *args)

    def set(self, v):
        r"""
        set(self, v) -> vnl_diag_matrixF

        Parameters
        ----------
        v: vnl_vectorF const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixF_set(self, v)

# Register vnl_diag_matrixF in _vnl_diag_matrixPython:
_vnl_diag_matrixPython.vnl_diag_matrixF_swigregister(vnl_diag_matrixF)
class vnl_diag_matrixLD(object):
    r"""Proxy of C++ vnl_diag_matrixLD class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _vnl_diag_matrixPython.delete_vnl_diag_matrixLD

    def __init__(self, *args):
        r"""
        __init__(self) -> vnl_diag_matrixLD
        __init__(self, arg0) -> vnl_diag_matrixLD

        Parameters
        ----------
        arg0: vnl_diag_matrixLD const &

        __init__(self, nn) -> vnl_diag_matrixLD

        Parameters
        ----------
        nn: unsigned int

        __init__(self, nn, value) -> vnl_diag_matrixLD

        Parameters
        ----------
        nn: unsigned int
        value: long double const &

        __init__(self, that) -> vnl_diag_matrixLD

        Parameters
        ----------
        that: vnl_vectorLD

        """
        _vnl_diag_matrixPython.vnl_diag_matrixLD_swiginit(self, _vnl_diag_matrixPython.new_vnl_diag_matrixLD(*args))

    def __imul__(self, v):
        r"""
        __imul__(self, v) -> vnl_diag_matrixLD

        Parameters
        ----------
        v: long double

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD___imul__(self, v)

    def __itruediv__(self, *args):
        return _vnl_diag_matrixPython.vnl_diag_matrixLD___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def invert_in_place(self):
        r"""invert_in_place(self) -> vnl_diag_matrixLD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_invert_in_place(self)

    def determinant(self):
        r"""determinant(self) -> long double"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_determinant(self)

    def solve(self, *args):
        r"""
        solve(self, b) -> vnl_vectorLD

        Parameters
        ----------
        b: vnl_vectorLD const &

        solve(self, b, out)

        Parameters
        ----------
        b: vnl_vectorLD const &
        out: vnl_vectorLD *

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_solve(self, *args)

    def __call__(self, *args):
        r"""
        __call__(self, i, j) -> long double

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i, j) -> long double

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i) -> long double

        Parameters
        ----------
        i: unsigned int

        __call__(self, i) -> long double const &

        Parameters
        ----------
        i: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD___call__(self, *args)

    def get_diagonal(self):
        r"""get_diagonal(self) -> vnl_vectorLD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_get_diagonal(self)

    def diagonal(self):
        r"""diagonal(self) -> vnl_vectorLD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_diagonal(self)

    def fill_diagonal(self, v):
        r"""
        fill_diagonal(self, v) -> vnl_diag_matrixLD

        Parameters
        ----------
        v: long double const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_fill_diagonal(self, v)

    def set_diagonal(self, v):
        r"""
        set_diagonal(self, v) -> vnl_diag_matrixLD

        Parameters
        ----------
        v: vnl_vectorLD const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_set_diagonal(self, v)

    def begin(self, *args):
        r"""
        begin(self) -> long double
        begin(self) -> long double const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_begin(self, *args)

    def end(self, *args):
        r"""
        end(self) -> long double
        end(self) -> long double const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_end(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_size(self)

    def rows(self):
        r"""rows(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_rows(self)

    def cols(self):
        r"""cols(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_cols(self)

    def columns(self):
        r"""columns(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_columns(self)

    def put(self, r, c, v):
        r"""
        put(self, r, c, v)

        Parameters
        ----------
        r: unsigned int
        c: unsigned int
        v: long double const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_put(self, r, c, v)

    def get(self, r, c):
        r"""
        get(self, r, c) -> long double

        Parameters
        ----------
        r: unsigned int
        c: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_get(self, r, c)

    def as_matrix(self):
        r"""as_matrix(self) -> vnl_matrixLD"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_as_matrix(self)

    def set_size(self, n):
        r"""
        set_size(self, n)

        Parameters
        ----------
        n: int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_set_size(self, n)

    def clear(self):
        r"""clear(self)"""
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_clear(self)

    def fill(self, x):
        r"""
        fill(self, x) -> vnl_diag_matrixLD

        Parameters
        ----------
        x: long double const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_fill(self, x)

    def data_block(self, *args):
        r"""
        data_block(self) -> long double
        data_block(self) -> long double const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_data_block(self, *args)

    def set(self, v):
        r"""
        set(self, v) -> vnl_diag_matrixLD

        Parameters
        ----------
        v: vnl_vectorLD const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixLD_set(self, v)

# Register vnl_diag_matrixLD in _vnl_diag_matrixPython:
_vnl_diag_matrixPython.vnl_diag_matrixLD_swigregister(vnl_diag_matrixLD)
class vnl_diag_matrixSI(object):
    r"""Proxy of C++ vnl_diag_matrixSI class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _vnl_diag_matrixPython.delete_vnl_diag_matrixSI

    def __init__(self, *args):
        r"""
        __init__(self) -> vnl_diag_matrixSI
        __init__(self, arg0) -> vnl_diag_matrixSI

        Parameters
        ----------
        arg0: vnl_diag_matrixSI const &

        __init__(self, nn) -> vnl_diag_matrixSI

        Parameters
        ----------
        nn: unsigned int

        __init__(self, nn, value) -> vnl_diag_matrixSI

        Parameters
        ----------
        nn: unsigned int
        value: int const &

        __init__(self, that) -> vnl_diag_matrixSI

        Parameters
        ----------
        that: vnl_vectorSI

        """
        _vnl_diag_matrixPython.vnl_diag_matrixSI_swiginit(self, _vnl_diag_matrixPython.new_vnl_diag_matrixSI(*args))

    def __imul__(self, v):
        r"""
        __imul__(self, v) -> vnl_diag_matrixSI

        Parameters
        ----------
        v: int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI___imul__(self, v)

    def __itruediv__(self, *args):
        return _vnl_diag_matrixPython.vnl_diag_matrixSI___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def invert_in_place(self):
        r"""invert_in_place(self) -> vnl_diag_matrixSI"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_invert_in_place(self)

    def determinant(self):
        r"""determinant(self) -> int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_determinant(self)

    def solve(self, *args):
        r"""
        solve(self, b) -> vnl_vectorSI

        Parameters
        ----------
        b: vnl_vectorSI const &

        solve(self, b, out)

        Parameters
        ----------
        b: vnl_vectorSI const &
        out: vnl_vectorSI *

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_solve(self, *args)

    def __call__(self, *args):
        r"""
        __call__(self, i, j) -> int

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i, j) -> int

        Parameters
        ----------
        i: unsigned int
        j: unsigned int

        __call__(self, i) -> int

        Parameters
        ----------
        i: unsigned int

        __call__(self, i) -> int const &

        Parameters
        ----------
        i: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI___call__(self, *args)

    def get_diagonal(self):
        r"""get_diagonal(self) -> vnl_vectorSI"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_get_diagonal(self)

    def diagonal(self):
        r"""diagonal(self) -> vnl_vectorSI"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_diagonal(self)

    def fill_diagonal(self, v):
        r"""
        fill_diagonal(self, v) -> vnl_diag_matrixSI

        Parameters
        ----------
        v: int const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_fill_diagonal(self, v)

    def set_diagonal(self, v):
        r"""
        set_diagonal(self, v) -> vnl_diag_matrixSI

        Parameters
        ----------
        v: vnl_vectorSI const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_set_diagonal(self, v)

    def begin(self, *args):
        r"""
        begin(self) -> int
        begin(self) -> int const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_begin(self, *args)

    def end(self, *args):
        r"""
        end(self) -> int
        end(self) -> int const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_end(self, *args)

    def size(self):
        r"""size(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_size(self)

    def rows(self):
        r"""rows(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_rows(self)

    def cols(self):
        r"""cols(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_cols(self)

    def columns(self):
        r"""columns(self) -> unsigned int"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_columns(self)

    def put(self, r, c, v):
        r"""
        put(self, r, c, v)

        Parameters
        ----------
        r: unsigned int
        c: unsigned int
        v: int const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_put(self, r, c, v)

    def get(self, r, c):
        r"""
        get(self, r, c) -> int

        Parameters
        ----------
        r: unsigned int
        c: unsigned int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_get(self, r, c)

    def as_matrix(self):
        r"""as_matrix(self) -> vnl_matrixSI"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_as_matrix(self)

    def set_size(self, n):
        r"""
        set_size(self, n)

        Parameters
        ----------
        n: int

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_set_size(self, n)

    def clear(self):
        r"""clear(self)"""
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_clear(self)

    def fill(self, x):
        r"""
        fill(self, x) -> vnl_diag_matrixSI

        Parameters
        ----------
        x: int const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_fill(self, x)

    def data_block(self, *args):
        r"""
        data_block(self) -> int
        data_block(self) -> int const *
        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_data_block(self, *args)

    def set(self, v):
        r"""
        set(self, v) -> vnl_diag_matrixSI

        Parameters
        ----------
        v: vnl_vectorSI const &

        """
        return _vnl_diag_matrixPython.vnl_diag_matrixSI_set(self, v)

# Register vnl_diag_matrixSI in _vnl_diag_matrixPython:
_vnl_diag_matrixPython.vnl_diag_matrixSI_swigregister(vnl_diag_matrixSI)

