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

"""Function primitives."""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _func2
else:
    import _func2

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__)


import openturns.common
import openturns.typ
import openturns.geom
import openturns.graph
import openturns.func
class NoGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::NoGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.NoGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.NoGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.NoGradient___repr__(self)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.NoGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.NoGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.NoGradient_getOutputDimension(self)

    def isActualImplementation(self):
        r"""
        Accessor to the validity flag.

        Returns
        -------
        is_impl : bool
            Whether the implementation is valid.
        """
        return _func2.NoGradient_isActualImplementation(self)

    def __init__(self, *args):
        _func2.NoGradient_swiginit(self, _func2.new_NoGradient(*args))
    __swig_destroy__ = _func2.delete_NoGradient

# Register NoGradient in _func2:
_func2.NoGradient_swigregister(NoGradient)
class NoHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::NoHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.NoHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.NoHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.NoHessian___repr__(self)

    def isActualImplementation(self):
        r"""
        Accessor to the validity flag.

        Returns
        -------
        is_impl : bool
            Whether the implementation is valid.
        """
        return _func2.NoHessian_isActualImplementation(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.NoHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.NoHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.NoHessian_getOutputDimension(self)

    def __init__(self, *args):
        _func2.NoHessian_swiginit(self, _func2.new_NoHessian(*args))
    __swig_destroy__ = _func2.delete_NoHessian

# Register NoHessian in _func2:
_func2.NoHessian_swigregister(NoHessian)
class ConstantHessian(openturns.func.HessianImplementation):
    r"""
    Constant hessian.

    Parameters
    ----------
    constant : 3-d sequence of float
        Constant value

    Examples
    --------
    >>> import openturns as ot
    >>> hessian = ot.ConstantHessian(ot.SymmetricTensor(2, 1))
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ConstantHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.ConstantHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.ConstantHessian___repr__(self)

    def __str__(self, *args):
        return _func2.ConstantHessian___str__(self, *args)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ConstantHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ConstantHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ConstantHessian_getOutputDimension(self)

    def getConstant(self):
        r"""
        Constant accessor.

        Returns
        -------
        constant : :class:`~openturns.SymmetricTensor`
            Constant value

        """
        return _func2.ConstantHessian_getConstant(self)

    def __init__(self, *args):
        _func2.ConstantHessian_swiginit(self, _func2.new_ConstantHessian(*args))
    __swig_destroy__ = _func2.delete_ConstantHessian

# Register ConstantHessian in _func2:
_func2.ConstantHessian_swigregister(ConstantHessian)
class ComposedHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::ComposedHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ComposedHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.ComposedHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.ComposedHessian___repr__(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ComposedHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ComposedHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ComposedHessian_getOutputDimension(self)

    def __init__(self, *args):
        _func2.ComposedHessian_swiginit(self, _func2.new_ComposedHessian(*args))
    __swig_destroy__ = _func2.delete_ComposedHessian

# Register ComposedHessian in _func2:
_func2.ComposedHessian_swigregister(ComposedHessian)
class ProductHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::ProductHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ProductHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.ProductHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.ProductHessian___repr__(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ProductHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ProductHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ProductHessian_getOutputDimension(self)

    def __init__(self, *args):
        _func2.ProductHessian_swiginit(self, _func2.new_ProductHessian(*args))
    __swig_destroy__ = _func2.delete_ProductHessian

# Register ProductHessian in _func2:
_func2.ProductHessian_swigregister(ProductHessian)
class DualLinearCombinationHessian(openturns.func.HessianImplementation):
    r"""
    Dual linear combination hessian implementation.

    Parameters
    ----------
    myDLCEI : :class:`~openturns.DualLinearCombinationEvaluation`
        A dual linear combination evaluation implementation.

    See also
    --------
    DualLinearCombinationEvaluation,
    DualLinearCombinationGradient

    Notes
    -----
    It returns the implementation of the hessian. By default, the analytical
    hessian is implemented.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.DualLinearCombinationHessian_getClassName(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.DualLinearCombinationHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.DualLinearCombinationHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.DualLinearCombinationHessian_getOutputDimension(self)

    def __repr__(self):
        return _func2.DualLinearCombinationHessian___repr__(self)

    def __init__(self, *args):
        _func2.DualLinearCombinationHessian_swiginit(self, _func2.new_DualLinearCombinationHessian(*args))
    __swig_destroy__ = _func2.delete_DualLinearCombinationHessian

# Register DualLinearCombinationHessian in _func2:
_func2.DualLinearCombinationHessian_swigregister(DualLinearCombinationHessian)
class LinearCombinationHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::LinearCombinationHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.LinearCombinationHessian_getClassName(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.LinearCombinationHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.LinearCombinationHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.LinearCombinationHessian_getOutputDimension(self)

    def __repr__(self):
        return _func2.LinearCombinationHessian___repr__(self)

    def __str__(self, *args):
        return _func2.LinearCombinationHessian___str__(self, *args)

    def __init__(self, *args):
        _func2.LinearCombinationHessian_swiginit(self, _func2.new_LinearCombinationHessian(*args))
    __swig_destroy__ = _func2.delete_LinearCombinationHessian

# Register LinearCombinationHessian in _func2:
_func2.LinearCombinationHessian_swigregister(LinearCombinationHessian)
class SymbolicHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::SymbolicHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.SymbolicHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.SymbolicHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.SymbolicHessian___repr__(self)

    def __str__(self, *args):
        return _func2.SymbolicHessian___str__(self, *args)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.SymbolicHessian_hessian(self, inP)

    def getFormula(self, i, j, k):
        return _func2.SymbolicHessian_getFormula(self, i, j, k)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.SymbolicHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.SymbolicHessian_getOutputDimension(self)

    def getMarginal(self, *args):
        r"""
        Accessor to the hessian implementation of a specific output.

        Parameters
        ----------
        i : int
            Integer corresponding to the output (Care: it starts at 0).
        indices : sequence of integer
            The set of indices for which the outputs are extracted.

        Returns
        -------
        hessianImplementation : :class:`~openturns.HessianImplementation`
            A hessian implementation restricted to its components functions which
            indices are *i* or *indices*.
        """
        return _func2.SymbolicHessian_getMarginal(self, *args)

    def __init__(self, *args):
        _func2.SymbolicHessian_swiginit(self, _func2.new_SymbolicHessian(*args))
    __swig_destroy__ = _func2.delete_SymbolicHessian

# Register SymbolicHessian in _func2:
_func2.SymbolicHessian_swigregister(SymbolicHessian)
class ParametricHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::ParametricHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ParametricHessian_getClassName(self)

    def hessian(self, point):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ParametricHessian_hessian(self, point)

    def getEvaluation(self):
        return _func2.ParametricHessian_getEvaluation(self)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ParametricHessian_getInputDimension(self)

    def getParameterDimension(self):
        return _func2.ParametricHessian_getParameterDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ParametricHessian_getOutputDimension(self)

    def __repr__(self):
        return _func2.ParametricHessian___repr__(self)

    def __str__(self, *args):
        return _func2.ParametricHessian___str__(self, *args)

    def __init__(self, *args):
        _func2.ParametricHessian_swiginit(self, _func2.new_ParametricHessian(*args))
    __swig_destroy__ = _func2.delete_ParametricHessian

# Register ParametricHessian in _func2:
_func2.ParametricHessian_swigregister(ParametricHessian)
class NullHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::NullHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.NullHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.NullHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.NullHessian___repr__(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.NullHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.NullHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.NullHessian_getOutputDimension(self)

    def __init__(self, *args):
        _func2.NullHessian_swiginit(self, _func2.new_NullHessian(*args))
    __swig_destroy__ = _func2.delete_NullHessian

# Register NullHessian in _func2:
_func2.NullHessian_swigregister(NullHessian)
class MarginalHessian(openturns.func.HessianImplementation):
    r"""Proxy of C++ OT::MarginalHessian."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.MarginalHessian_getClassName(self)

    def __eq__(self, *args):
        return _func2.MarginalHessian___eq__(self, *args)

    def __repr__(self):
        return _func2.MarginalHessian___repr__(self)

    def hessian(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        hessian : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.MarginalHessian_hessian(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.MarginalHessian_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.MarginalHessian_getOutputDimension(self)

    def __init__(self, *args):
        _func2.MarginalHessian_swiginit(self, _func2.new_MarginalHessian(*args))
    __swig_destroy__ = _func2.delete_MarginalHessian

# Register MarginalHessian in _func2:
_func2.MarginalHessian_swigregister(MarginalHessian)
class ComposedGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::ComposedGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ComposedGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.ComposedGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.ComposedGradient___repr__(self)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ComposedGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ComposedGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ComposedGradient_getOutputDimension(self)

    def __init__(self, *args):
        _func2.ComposedGradient_swiginit(self, _func2.new_ComposedGradient(*args))
    __swig_destroy__ = _func2.delete_ComposedGradient

# Register ComposedGradient in _func2:
_func2.ComposedGradient_swigregister(ComposedGradient)
class ConstantGradient(openturns.func.GradientImplementation):
    r"""
    Constant gradient.

    Parameters
    ----------
    constant : 2-d sequence of float
        Constant value

    Examples
    --------
    >>> import openturns as ot
    >>> gradient = ot.ConstantGradient(ot.Matrix([[1.0, 2.0, 3.0]]))
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ConstantGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.ConstantGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.ConstantGradient___repr__(self)

    def __str__(self, *args):
        return _func2.ConstantGradient___str__(self, *args)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ConstantGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ConstantGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ConstantGradient_getOutputDimension(self)

    def getConstant(self):
        r"""
        Constant accessor.

        Returns
        -------
        constant : :class:`~openturns.Matrix`
            Constant value

        """
        return _func2.ConstantGradient_getConstant(self)

    def __init__(self, *args):
        _func2.ConstantGradient_swiginit(self, _func2.new_ConstantGradient(*args))
    __swig_destroy__ = _func2.delete_ConstantGradient

# Register ConstantGradient in _func2:
_func2.ConstantGradient_swigregister(ConstantGradient)
class DualLinearCombinationGradient(openturns.func.GradientImplementation):
    r"""
    Dual linear combination gradient implementation.

    Parameters
    ----------
    myDLCEI : :class:`~openturns.DualLinearCombinationEvaluation`
        A dual linear combination evaluation implementation.

    See also
    --------
    DualLinearCombinationEvaluation,
    DualLinearCombinationHessian

    Notes
    -----
    It returns the implementation of the gradient. By default, the analytical
    gradient is implemented.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.DualLinearCombinationGradient_getClassName(self)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.DualLinearCombinationGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.DualLinearCombinationGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.DualLinearCombinationGradient_getOutputDimension(self)

    def __repr__(self):
        return _func2.DualLinearCombinationGradient___repr__(self)

    def __init__(self, *args):
        _func2.DualLinearCombinationGradient_swiginit(self, _func2.new_DualLinearCombinationGradient(*args))
    __swig_destroy__ = _func2.delete_DualLinearCombinationGradient

# Register DualLinearCombinationGradient in _func2:
_func2.DualLinearCombinationGradient_swigregister(DualLinearCombinationGradient)
class LinearGradient(openturns.func.GradientImplementation):
    r"""Linear numerical math gradient implementation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.LinearGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.LinearGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.LinearGradient___repr__(self)

    def __str__(self, *args):
        return _func2.LinearGradient___str__(self, *args)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.LinearGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.LinearGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.LinearGradient_getOutputDimension(self)

    def getCenter(self):
        return _func2.LinearGradient_getCenter(self)

    def getConstant(self):
        return _func2.LinearGradient_getConstant(self)

    def getLinear(self):
        return _func2.LinearGradient_getLinear(self)

    def __init__(self, *args):
        _func2.LinearGradient_swiginit(self, _func2.new_LinearGradient(*args))
    __swig_destroy__ = _func2.delete_LinearGradient

# Register LinearGradient in _func2:
_func2.LinearGradient_swigregister(LinearGradient)
class LinearCombinationGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::LinearCombinationGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.LinearCombinationGradient_getClassName(self)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.LinearCombinationGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.LinearCombinationGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.LinearCombinationGradient_getOutputDimension(self)

    def __repr__(self):
        return _func2.LinearCombinationGradient___repr__(self)

    def __str__(self, *args):
        return _func2.LinearCombinationGradient___str__(self, *args)

    def __init__(self, *args):
        _func2.LinearCombinationGradient_swiginit(self, _func2.new_LinearCombinationGradient(*args))
    __swig_destroy__ = _func2.delete_LinearCombinationGradient

# Register LinearCombinationGradient in _func2:
_func2.LinearCombinationGradient_swigregister(LinearCombinationGradient)
class MarginalGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::MarginalGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.MarginalGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.MarginalGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.MarginalGradient___repr__(self)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.MarginalGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.MarginalGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.MarginalGradient_getOutputDimension(self)

    def __init__(self, *args):
        _func2.MarginalGradient_swiginit(self, _func2.new_MarginalGradient(*args))
    __swig_destroy__ = _func2.delete_MarginalGradient

# Register MarginalGradient in _func2:
_func2.MarginalGradient_swigregister(MarginalGradient)
class ParametricGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::ParametricGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ParametricGradient_getClassName(self)

    def gradient(self, point):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ParametricGradient_gradient(self, point)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ParametricGradient_getInputDimension(self)

    def getParameterDimension(self):
        return _func2.ParametricGradient_getParameterDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ParametricGradient_getOutputDimension(self)

    def __repr__(self):
        return _func2.ParametricGradient___repr__(self)

    def __str__(self, *args):
        return _func2.ParametricGradient___str__(self, *args)

    def __init__(self, *args):
        _func2.ParametricGradient_swiginit(self, _func2.new_ParametricGradient(*args))
    __swig_destroy__ = _func2.delete_ParametricGradient

# Register ParametricGradient in _func2:
_func2.ParametricGradient_swigregister(ParametricGradient)
class ProductGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::ProductGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ProductGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.ProductGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.ProductGradient___repr__(self)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.ProductGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.ProductGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.ProductGradient_getOutputDimension(self)

    def __init__(self, *args):
        _func2.ProductGradient_swiginit(self, _func2.new_ProductGradient(*args))
    __swig_destroy__ = _func2.delete_ProductGradient

# Register ProductGradient in _func2:
_func2.ProductGradient_swigregister(ProductGradient)
class SymbolicGradient(openturns.func.GradientImplementation):
    r"""Proxy of C++ OT::SymbolicGradient."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.SymbolicGradient_getClassName(self)

    def __eq__(self, *args):
        return _func2.SymbolicGradient___eq__(self, *args)

    def __repr__(self):
        return _func2.SymbolicGradient___repr__(self)

    def __str__(self, *args):
        return _func2.SymbolicGradient___str__(self, *args)

    def gradient(self, inP):
        r"""
        Return the Jacobian transposed matrix of the implementation at a point.

        Parameters
        ----------
        point : sequence of float
            Point where the Jacobian transposed matrix is calculated.

        Returns
        -------
        gradient : :class:`~openturns.Matrix`
            The Jacobian transposed matrix of the function at *point*.
        """
        return _func2.SymbolicGradient_gradient(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.
        """
        return _func2.SymbolicGradient_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.
        """
        return _func2.SymbolicGradient_getOutputDimension(self)

    def getFormula(self, i, j):
        return _func2.SymbolicGradient_getFormula(self, i, j)

    def getMarginal(self, *args):
        r"""
        Accessor to the gradient implementation of a specific output.

        Parameters
        ----------
        i : int
            Integer corresponding to the output (Care: it starts at 0).
        indices : sequence of integer
            The set of indices for which the outputs are extracted.

        Returns
        -------
        gradientImplementation : :class:`~openturns.GradientImplementation`
            A gradient implementation restricted to its components functions which
            indices are *i* or *indices*.
        """
        return _func2.SymbolicGradient_getMarginal(self, *args)

    def __init__(self, *args):
        _func2.SymbolicGradient_swiginit(self, _func2.new_SymbolicGradient(*args))
    __swig_destroy__ = _func2.delete_SymbolicGradient

# Register SymbolicGradient in _func2:
_func2.SymbolicGradient_swigregister(SymbolicGradient)
class NoEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::NoEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.NoEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.NoEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.NoEvaluation___repr__(self)

    def isActualImplementation(self):
        r"""
        Accessor to the validity flag.

        Returns
        -------
        is_impl : bool
            Whether the implementation is valid.
        """
        return _func2.NoEvaluation_isActualImplementation(self)

    def __call__(self, inP):
        return _func2.NoEvaluation___call__(self, inP)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.NoEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.NoEvaluation_getOutputDimension(self)

    def __init__(self, *args):
        _func2.NoEvaluation_swiginit(self, _func2.new_NoEvaluation(*args))
    __swig_destroy__ = _func2.delete_NoEvaluation

# Register NoEvaluation in _func2:
_func2.NoEvaluation_swigregister(NoEvaluation)
class TranslationEvaluation(openturns.func.EvaluationImplementation):
    r"""
    Translation evaluation.

    Parameters
    ----------
    constant : sequence of float
        Vector :math:`\vect{c}`.

    See also
    --------
    Function

    Notes
    -----
    This implements a :class:`~openturns.Function` :math:`f`
    defined as :

    .. math::

        f : & \Rset^n \rightarrow \Rset^n  \\
            & \vect{X} \mapsto \vect{X} + \vect{c}

    where:

    - :math:`\vect{c}` is the :math:`\Rset^n` vector defined by the object *constant*.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.TranslationEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.TranslationEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.TranslationEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.TranslationEvaluation___str__(self, *args)

    def getConstant(self):
        r"""
        Accessor to the constant.

        Returns
        -------
        constant : :class:`~openturns.Point`
            The constant :math:`\vect{c}`.
        """
        return _func2.TranslationEvaluation_getConstant(self)

    def setConstant(self, constant):
        r"""
        Accessor to the constant.

        Parameters
        ----------
        constant : sequence of float
            The constant :math:`\vect{c}`.
        """
        return _func2.TranslationEvaluation_setConstant(self, constant)

    def __call__(self, *args):
        return _func2.TranslationEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.TranslationEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.TranslationEvaluation_getOutputDimension(self)

    def isLinear(self):
        r"""
        Accessor to the linearity of the evaluation.

        Returns
        -------
        linear : bool
            *True* if the evaluation is linear, *False* otherwise.
        """
        return _func2.TranslationEvaluation_isLinear(self)

    def isLinearlyDependent(self, index):
        r"""
        Accessor to the linearity of the evaluation with regard to a specific variable.

        Parameters
        ----------
        index : int
            The index of the variable with regard to which linearity is evaluated.

        Returns
        -------
        linear : bool
            *True* if the evaluation is linearly dependent on the specified variable, *False* otherwise.
        """
        return _func2.TranslationEvaluation_isLinearlyDependent(self, index)

    def __init__(self, *args):
        _func2.TranslationEvaluation_swiginit(self, _func2.new_TranslationEvaluation(*args))
    __swig_destroy__ = _func2.delete_TranslationEvaluation

# Register TranslationEvaluation in _func2:
_func2.TranslationEvaluation_swigregister(TranslationEvaluation)
class LinearEvaluation(openturns.func.EvaluationImplementation):
    r"""
    Linear numerical math evaluation implementation.

    Parameters
    ----------
    center : sequence of float
        Vector :math:`\vect{b}`.
    constant : sequence of float
        Vector :math:`\vect{c}`.
    linear : :class:`~openturns.Matrix`
        Matrix :math:`\mat{A}`.

    Notes
    -----
    This class implements the evaluation of a linear :class:`~openturns.Function` :math:`f` defined as:

    .. math::

        f : & \Rset^\inputDim \rightarrow \Rset^\outputDim  \\
            & \vect{X} \mapsto \Tr{\mat{A}} ( \vect{X} - \vect{b} ) + \vect{c}

    where:

    - :math:`\mat{A}` is a matrix with :math:`\inputDim` lines and :math:`\outputDim` columns,
    - :math:`\vect{b}` is a vector in  :math:`\Rset^\inputDim`,
    - :math:`\vect{c}` is a vector in :math:`\Rset^\outputDim`.

    See also
    --------
    Function

    Examples
    --------
    In this example, we create the linear function :math:`f: \Rset^2 \rightarrow \Rset` such that
    :math:`f(x,y) = 2x + 3y-1`. Then we have:

    .. math::

        \mat{A} = \left( \begin{array}{cc}
        2  \\
        3
        \end{array}\right), \vect{b} = \Tr{(0,0)}, \vect{c} = (-1)

    >>> import openturns as ot
    >>> A = ot.Matrix(2,1)
    >>> A[0,0] = 2
    >>> A[1,0] = 3
    >>> b = [2.0, 3.0]
    >>> c = [4.0]
    >>> f = ot.LinearEvaluation(b,c,A)

    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.LinearEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.LinearEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.LinearEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.LinearEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.LinearEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.LinearEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.LinearEvaluation_getOutputDimension(self)

    def getCenter(self):
        r"""
        Accessor to the center.

        Returns
        -------
        center : :class:`~openturns.Point`
            The center :math:`\vect{b}`.
        """
        return _func2.LinearEvaluation_getCenter(self)

    def getConstant(self):
        r"""
        Accessor to the constant.

        Returns
        -------
        constant : :class:`~openturns.Point`
            The constant :math:`\vect{c}`.
        """
        return _func2.LinearEvaluation_getConstant(self)

    def getLinear(self):
        r"""
        Accessor to the matrix.

        Returns
        -------
        linear : :class:`~openturns.Matrix`
            The matrix :math:`\mat{A}`.
        """
        return _func2.LinearEvaluation_getLinear(self)

    def isLinear(self):
        r"""
        Accessor to the linearity of the evaluation.

        Returns
        -------
        linear : bool
            *True* if the evaluation is linear, *False* otherwise.
        """
        return _func2.LinearEvaluation_isLinear(self)

    def isLinearlyDependent(self, index):
        r"""
        Accessor to the linearity of the evaluation with regard to a specific variable.

        Parameters
        ----------
        index : int
            The index of the variable with regard to which linearity is evaluated.

        Returns
        -------
        linear : bool
            *True* if the evaluation is linearly dependent on the specified variable, *False* otherwise.
        """
        return _func2.LinearEvaluation_isLinearlyDependent(self, index)

    def __init__(self, *args):
        _func2.LinearEvaluation_swiginit(self, _func2.new_LinearEvaluation(*args))
    __swig_destroy__ = _func2.delete_LinearEvaluation

# Register LinearEvaluation in _func2:
_func2.LinearEvaluation_swigregister(LinearEvaluation)
class QuadraticEvaluation(openturns.func.EvaluationImplementation):
    r"""
    Quadratic numerical math evaluation implementation.

    Parameters
    ----------
    center : sequence of float
        Vector :math:`\vect{b}`.
    constant : sequence of float
        Vector :math:`\vect{c}`.
    linear : :class:`~openturns.Matrix`
        Matrix :math:`\mat{A}`.
    quadratic : :class:`~openturns.SymmetricTensor`
        Tensor :math:`\tens{M}`.

    Notes
    -----
    This class implements the evaluation of a quadratic function :math:`f` defined as:

    .. math::

        f : & \Rset^\inputDim \rightarrow \Rset^\outputDim  \\
        & \vect{x} \mapsto \Tr{\mat{A}} ( \vect{x} - \vect{b} ) + \frac{1}{2} \Tr{( \vect{x} - \vect{b} )}\tens{M} ( \vect{x} - \vect{b} )

    where:

    - :math:`\mat{A}` is a matrix with :math:`d` lines and :math:`p` columns, called *linear*,
    - :math:`\vect{b}` is a vector in :math:`\Rset^\inputDim`, called *center*,
    - :math:`\vect{c}` is a  vector in :math:`\Rset^\outputDim`, called *constant*
    - :math:`\tens{M}` is a :math:`\Rset^\outputDim \times \Rset^\inputDim \times \Rset^\inputDim`
      symmetric  tensor, called *quadratic*.

    Examples
    --------
    In this example, we create the linear function :math:`f: \Rset^2 \rightarrow \Rset^2`
    such that:

    .. math::

        \mat{A} = \left( \begin{array}{cc}
        1 & 2 \\
        3 & 4
        \end{array}\right), \vect{b} = \Tr{(0,0)}, \vect{c} = (0)

    and:

    .. math::

        \tens{M}_{:,:,0} = \left( \begin{array}{cc}
        5 & 6 \\
        7 & 8
        \end{array}\right),

        \tens{M}_{:,:,1} = \left( \begin{array}{cc}
        9 & 10 \\
        11 & 12
        \end{array}\right).


    >>> import openturns as ot
    >>> d = 2
    >>> p = 2
    >>> center = [0.0] * d
    >>> constant = [0.0] * p
    >>> linear = ot.Matrix(d, p)
    >>> linear[0,0] = 1.0
    >>> linear[0,1] = 2.0
    >>> linear[1,0] = 3.0
    >>> linear[1,1] = 4.0
    >>> quadratic = ot.SymmetricTensor(d, p)
    >>> quadratic[0,0,0] = 5
    >>> quadratic[0,1,0] = 6
    >>> quadratic[1,0,0] = 7
    >>> quadratic[1,1,0] = 8
    >>> quadratic[0,0,1] = 9
    >>> quadratic[0,1,1] = 10
    >>> quadratic[1,0,1] = 11
    >>> quadratic[1,1,1] = 12
    >>> function = ot.QuadraticEvaluation(center, constant, linear, quadratic)
    >>> inP = [1.0, 2.0]
    >>> print(function(inP))
    [39.5,60.5]
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.QuadraticEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.QuadraticEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.QuadraticEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.QuadraticEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.QuadraticEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.QuadraticEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.QuadraticEvaluation_getOutputDimension(self)

    def getCenter(self):
        r"""
        Accessor to the center.

        Returns
        -------
        center : sequence of float
            Vector :math:`\vect{b}`.
        """
        return _func2.QuadraticEvaluation_getCenter(self)

    def getConstant(self):
        r"""
        Accessor to the constant.

        Returns
        -------
        constant : sequence of float
            Vector :math:`\vect{c}`.
        """
        return _func2.QuadraticEvaluation_getConstant(self)

    def getLinear(self):
        r"""
        Accessor to the matrix.

        Returns
        -------
        linear : :class:`~openturns.Matrix`
            Matrix :math:`\mat{A}`.
        """
        return _func2.QuadraticEvaluation_getLinear(self)

    def getQuadratic(self):
        r"""
        Accessor to the symmetric tensor.

        Returns
        -------
        quadratic : :class:`~openturns.SymmetricTensor`
            Tensor :math:`\tens{M}`.
        """
        return _func2.QuadraticEvaluation_getQuadratic(self)

    def __init__(self, *args):
        _func2.QuadraticEvaluation_swiginit(self, _func2.new_QuadraticEvaluation(*args))
    __swig_destroy__ = _func2.delete_QuadraticEvaluation

# Register QuadraticEvaluation in _func2:
_func2.QuadraticEvaluation_swigregister(QuadraticEvaluation)
class ComposedEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::ComposedEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ComposedEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.ComposedEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.ComposedEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.ComposedEvaluation___str__(self, *args)

    def _repr_html_(self):
        return _func2.ComposedEvaluation__repr_html_(self)

    def __call__(self, *args):
        return _func2.ComposedEvaluation___call__(self, *args)

    def getParameter(self):
        r"""
        Accessor to the parameter values.

        Returns
        -------
        parameter : :class:`~openturns.Point`
            The parameter values.
        """
        return _func2.ComposedEvaluation_getParameter(self)

    def setParameter(self, parameter):
        r"""
        Accessor to the parameter values.

        Parameters
        ----------
        parameter : sequence of float
            The parameter values.
        """
        return _func2.ComposedEvaluation_setParameter(self, parameter)

    def getParameterDescription(self):
        r"""
        Accessor to the parameter description.

        Returns
        -------
        parameter : :class:`~openturns.Description`
            The parameter description.
        """
        return _func2.ComposedEvaluation_getParameterDescription(self)

    def setParameterDescription(self, description):
        r"""
        Accessor to the parameter description.

        Parameters
        ----------
        parameter : :class:`~openturns.Description`
            The parameter description.
        """
        return _func2.ComposedEvaluation_setParameterDescription(self, description)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.ComposedEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.ComposedEvaluation_getOutputDimension(self)

    def getMarginal(self, *args):
        r"""
        Accessor to marginal.

        Parameters
        ----------
        indices : int or sequence of ints
            Set of indices for which the marginal is extracted.

        Returns
        -------
        marginal : :class:`~openturns.Function`
            Function corresponding to either :math:`f_i` or
            :math:`(f_i)_{i \in indices}`, with :math:`f:\Rset^n \rightarrow \Rset^p`
            and :math:`f=(f_0 , \dots, f_{p-1})`.
        """
        return _func2.ComposedEvaluation_getMarginal(self, *args)

    def getLeftEvaluation(self):
        return _func2.ComposedEvaluation_getLeftEvaluation(self)

    def getRightEvaluation(self):
        return _func2.ComposedEvaluation_getRightEvaluation(self)

    def isLinear(self):
        r"""
        Accessor to the linearity of the evaluation.

        Returns
        -------
        linear : bool
            *True* if the evaluation is linear, *False* otherwise.
        """
        return _func2.ComposedEvaluation_isLinear(self)

    def isLinearlyDependent(self, index):
        r"""
        Accessor to the linearity of the evaluation with regard to a specific variable.

        Parameters
        ----------
        index : int
            The index of the variable with regard to which linearity is evaluated.

        Returns
        -------
        linear : bool
            *True* if the evaluation is linearly dependent on the specified variable, *False* otherwise.
        """
        return _func2.ComposedEvaluation_isLinearlyDependent(self, index)

    def setStopCallback(self, callBack, state=None):
        r"""
        Set up a stop callback.

        Can be used to programmatically stop an evaluation.

        Parameters
        ----------
        callback : callable
            Returns a bool deciding whether to stop or continue.

        """
        return _func2.ComposedEvaluation_setStopCallback(self, callBack, state)

    def __init__(self, *args):
        _func2.ComposedEvaluation_swiginit(self, _func2.new_ComposedEvaluation(*args))
    __swig_destroy__ = _func2.delete_ComposedEvaluation

# Register ComposedEvaluation in _func2:
_func2.ComposedEvaluation_swigregister(ComposedEvaluation)
class ProductEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::ProductEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ProductEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.ProductEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.ProductEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.ProductEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.ProductEvaluation___call__(self, *args)

    def getParameter(self):
        r"""
        Accessor to the parameter values.

        Returns
        -------
        parameter : :class:`~openturns.Point`
            The parameter values.
        """
        return _func2.ProductEvaluation_getParameter(self)

    def setParameter(self, parameter):
        r"""
        Accessor to the parameter values.

        Parameters
        ----------
        parameter : sequence of float
            The parameter values.
        """
        return _func2.ProductEvaluation_setParameter(self, parameter)

    def getParameterDescription(self):
        r"""
        Accessor to the parameter description.

        Returns
        -------
        parameter : :class:`~openturns.Description`
            The parameter description.
        """
        return _func2.ProductEvaluation_getParameterDescription(self)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.ProductEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.ProductEvaluation_getOutputDimension(self)

    def __init__(self, *args):
        _func2.ProductEvaluation_swiginit(self, _func2.new_ProductEvaluation(*args))
    __swig_destroy__ = _func2.delete_ProductEvaluation

# Register ProductEvaluation in _func2:
_func2.ProductEvaluation_swigregister(ProductEvaluation)
class PiecewiseLinearEvaluation(openturns.func.EvaluationImplementation):
    r"""
    Piecewise linear interpolation evaluation.

    Parameters
    ----------
    locations : sequence of float
        Locations
    values : 1-d or 2-d sequence of float
        Values at each location

    See also
    --------
    PiecewiseHermiteEvaluation

    Notes
    -----
    The evaluation returns constant values for data outside the bounds of the design of experiments.
    Thus, the approximation should not be used outside the range of the design of experiments.
    The possibility of extrapolation can be changed using :meth:`setEnableExtrapolation` (default value is *True*, see :class:`~openturns.ResourceMap`). 
    If this parameter is set to *False*, an error message is retrieved for evaluations outside the design of experiments.

    Examples
    --------
    >>> import openturns as ot
    >>> locations = [1.0, 2.0, 3.0, 4.0, 5.0]
    >>> values = [-2.0, 2.0, 1.0, 3.0, 5.0]
    >>> evaluation = ot.PiecewiseLinearEvaluation(locations, values)
    >>> f = ot.Function(evaluation)
    >>> print(f([2.5]))
    [1.5]
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.PiecewiseLinearEvaluation_getClassName(self)

    def __repr__(self):
        return _func2.PiecewiseLinearEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.PiecewiseLinearEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.PiecewiseLinearEvaluation___call__(self, *args)

    def getLocations(self):
        r"""
        Accessor to the locations.

        Returns
        -------
        locations : :class:`~openturns.Point`
            Locations.
        """
        return _func2.PiecewiseLinearEvaluation_getLocations(self)

    def setLocations(self, locations):
        r"""
        Accessor to the locations.

        Parameters
        ----------
        locations : :class:`~openturns.Point`
            Locations.
        """
        return _func2.PiecewiseLinearEvaluation_setLocations(self, locations)

    def getEnableExtrapolation(self):
        r"""
        Accessor to the parameters allowing extrapolation outside the design of experiments.

        Returns
        -------
        enableExtrapolation : bool
            Parameter for extrapolation.
        """
        return _func2.PiecewiseLinearEvaluation_getEnableExtrapolation(self)

    def setEnableExtrapolation(self, enableExtrapolation):
        r"""
        Accessor to the parameters allowing extrapolation outside the design of experiments.

        Parameters
        ----------
        enableExtrapolation : bool
            Parameter for extrapolation.
        """
        return _func2.PiecewiseLinearEvaluation_setEnableExtrapolation(self, enableExtrapolation)

    def getValues(self):
        r"""
        Accessor to the values.

        Returns
        -------
        values : :class:`~openturns.Sample`
            Values of the function at the locations.
        """
        return _func2.PiecewiseLinearEvaluation_getValues(self)

    def setValues(self, *args):
        r"""
        Accessor to the values.

        Parameters
        ----------
        values : :class:`~openturns.Sample`
            Values of the function at the locations.
        """
        return _func2.PiecewiseLinearEvaluation_setValues(self, *args)

    def setLocationsAndValues(self, locations, values):
        r"""
        Accessor to the locations and values.

        Parameters
        ----------
        locations : :class:`~openturns.Point`
            Locations.
        values : :class:`~openturns.Sample`
            Values of the function at the locations.
        """
        return _func2.PiecewiseLinearEvaluation_setLocationsAndValues(self, locations, values)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.PiecewiseLinearEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.PiecewiseLinearEvaluation_getOutputDimension(self)

    def __init__(self, *args):
        _func2.PiecewiseLinearEvaluation_swiginit(self, _func2.new_PiecewiseLinearEvaluation(*args))
    __swig_destroy__ = _func2.delete_PiecewiseLinearEvaluation

# Register PiecewiseLinearEvaluation in _func2:
_func2.PiecewiseLinearEvaluation_swigregister(PiecewiseLinearEvaluation)
class PiecewiseHermiteEvaluation(openturns.func.EvaluationImplementation):
    r"""
    Piecewise Hermite interpolation evaluation.

    Parameters
    ----------
    locations : sequence of float
        Locations
    values : 1-d or 2-d sequence of float
        Values at each location
    derivatives : 1-d or 2-d sequence of float
        Derivatives at each location

    See also
    --------
    PiecewiseLinearEvaluation

    Notes
    -----
    The evaluation returns constant values for data outside the bounds of the design of experiments.
    Thus, the approximation should not be used outside the range of the design of experiments.
    The possibility of extrapolation can be changed using :meth:`setEnableExtrapolation` (default value is *True*, see :class:`~openturns.ResourceMap`). 
    If this parameter is set to *False*, an error message is retrieved for evaluations outside the design of experiments.

    Examples
    --------
    >>> import openturns as ot
    >>> locations = [1.0, 2.0, 3.0, 4.0, 5.0]
    >>> values = [-2.0, 2.0, 1.0, 3.0, 5.0]
    >>> derivatives = [0.0]*5
    >>> evaluation = ot.PiecewiseHermiteEvaluation(locations, values, derivatives)
    >>> f = ot.Function(evaluation)
    >>> print(f([2.5]))
    [1.5]
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.PiecewiseHermiteEvaluation_getClassName(self)

    def __repr__(self):
        return _func2.PiecewiseHermiteEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.PiecewiseHermiteEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.PiecewiseHermiteEvaluation___call__(self, *args)

    def derivate(self, inP):
        r"""
        Derivative function.

        Parameters
        ----------
        point : :class:`~openturns.Point`
            A point.

        Returns
        -------
        derivative : :class:`~openturns.Point`
            The derivative of the function at the given point.
        """
        return _func2.PiecewiseHermiteEvaluation_derivate(self, inP)

    def getLocations(self):
        r"""
        Accessor to the locations.

        Returns
        -------
        locations : :class:`~openturns.Point`
            Locations.
        """
        return _func2.PiecewiseHermiteEvaluation_getLocations(self)

    def setLocations(self, locations):
        r"""
        Accessor to the locations.

        Parameters
        ----------
        locations : :class:`~openturns.Point`
            Locations.
        """
        return _func2.PiecewiseHermiteEvaluation_setLocations(self, locations)

    def getEnableExtrapolation(self):
        r"""
        Accessor to the parameters allowing extrapolation outside the design of experiments.

        Returns
        -------
        enableExtrapolation : bool
            Parameter for extrapolation.
        """
        return _func2.PiecewiseHermiteEvaluation_getEnableExtrapolation(self)

    def setEnableExtrapolation(self, enableExtrapolation):
        r"""
        Accessor to the parameters allowing extrapolation outside the design of experiments.

        Parameters
        ----------
        enableExtrapolation : bool
            Parameter for extrapolation.
        """
        return _func2.PiecewiseHermiteEvaluation_setEnableExtrapolation(self, enableExtrapolation)

    def getValues(self):
        r"""
        Accessor to the values.

        Returns
        -------
        values : :class:`~openturns.Sample`
            Values of the function at the locations.
        """
        return _func2.PiecewiseHermiteEvaluation_getValues(self)

    def setValues(self, values):
        r"""
        Accessor to the values.

        Parameters
        ----------
        values : :class:`~openturns.Sample`
            Values of the function at the locations.
        """
        return _func2.PiecewiseHermiteEvaluation_setValues(self, values)

    def getDerivatives(self):
        r"""
        Accessor to the derivatives.

        Returns
        -------
        derivatives : :class:`~openturns.Sample`
            Derivatives of the function at the locations.
        """
        return _func2.PiecewiseHermiteEvaluation_getDerivatives(self)

    def setDerivatives(self, derivatives):
        r"""
        Accessor to the derivatives.

        Parameters
        ----------
        derivatives : :class:`~openturns.Sample`
            Derivatives of the function at the locations.
        """
        return _func2.PiecewiseHermiteEvaluation_setDerivatives(self, derivatives)

    def setLocationsValuesAndDerivatives(self, locations, values, derivatives):
        r"""
        Accessor to the locations and values.

        Parameters
        ----------
        locations : :class:`~openturns.Point`
            Locations.
        values : :class:`~openturns.Sample`
            Values of the function at the locations.
        derivatives : :class:`~openturns.Sample`
            Derivatives of the function at the locations.
        """
        return _func2.PiecewiseHermiteEvaluation_setLocationsValuesAndDerivatives(self, locations, values, derivatives)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.PiecewiseHermiteEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.PiecewiseHermiteEvaluation_getOutputDimension(self)

    def __init__(self, *args):
        _func2.PiecewiseHermiteEvaluation_swiginit(self, _func2.new_PiecewiseHermiteEvaluation(*args))
    __swig_destroy__ = _func2.delete_PiecewiseHermiteEvaluation

# Register PiecewiseHermiteEvaluation in _func2:
_func2.PiecewiseHermiteEvaluation_swigregister(PiecewiseHermiteEvaluation)
class IndicatorEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::IndicatorEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.IndicatorEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.IndicatorEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.IndicatorEvaluation___repr__(self)

    def __call__(self, *args):
        return _func2.IndicatorEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.IndicatorEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.IndicatorEvaluation_getOutputDimension(self)

    def __init__(self, *args):
        _func2.IndicatorEvaluation_swiginit(self, _func2.new_IndicatorEvaluation(*args))
    __swig_destroy__ = _func2.delete_IndicatorEvaluation

# Register IndicatorEvaluation in _func2:
_func2.IndicatorEvaluation_swigregister(IndicatorEvaluation)
class DistanceToDomainEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::DistanceToDomainEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.DistanceToDomainEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.DistanceToDomainEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.DistanceToDomainEvaluation___repr__(self)

    def __call__(self, *args):
        return _func2.DistanceToDomainEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.DistanceToDomainEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.DistanceToDomainEvaluation_getOutputDimension(self)

    def __init__(self, *args):
        _func2.DistanceToDomainEvaluation_swiginit(self, _func2.new_DistanceToDomainEvaluation(*args))
    __swig_destroy__ = _func2.delete_DistanceToDomainEvaluation

# Register DistanceToDomainEvaluation in _func2:
_func2.DistanceToDomainEvaluation_swigregister(DistanceToDomainEvaluation)
class MarginalEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::MarginalEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.MarginalEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.MarginalEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.MarginalEvaluation___repr__(self)

    def __str__(self, arg2):
        return _func2.MarginalEvaluation___str__(self, arg2)

    def getIndices(self):
        return _func2.MarginalEvaluation_getIndices(self)

    def getEvaluation(self):
        return _func2.MarginalEvaluation_getEvaluation(self)

    def __call__(self, *args):
        return _func2.MarginalEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.MarginalEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.MarginalEvaluation_getOutputDimension(self)

    def parameterGradient(self, inP):
        r"""
        Gradient against the parameters.

        Parameters
        ----------
        x : sequence of float
            Input point

        Returns
        -------
        parameter_gradient : :class:`~openturns.Matrix`
            The parameters gradient computed at x.
        """
        return _func2.MarginalEvaluation_parameterGradient(self, inP)

    def getParameter(self):
        r"""
        Accessor to the parameter values.

        Returns
        -------
        parameter : :class:`~openturns.Point`
            The parameter values.
        """
        return _func2.MarginalEvaluation_getParameter(self)

    def setParameter(self, parameters):
        r"""
        Accessor to the parameter values.

        Parameters
        ----------
        parameter : sequence of float
            The parameter values.
        """
        return _func2.MarginalEvaluation_setParameter(self, parameters)

    def getParameterDescription(self):
        r"""
        Accessor to the parameter description.

        Returns
        -------
        parameter : :class:`~openturns.Description`
            The parameter description.
        """
        return _func2.MarginalEvaluation_getParameterDescription(self)

    def setParameterDescription(self, description):
        r"""
        Accessor to the parameter description.

        Parameters
        ----------
        parameter : :class:`~openturns.Description`
            The parameter description.
        """
        return _func2.MarginalEvaluation_setParameterDescription(self, description)

    def setCheckOutput(self, checkOutput):
        r"""
        Accessor to the output verification flag.

        Parameters
        ----------
        check_output : bool
            Whether to check return values for nan or inf.
        """
        return _func2.MarginalEvaluation_setCheckOutput(self, checkOutput)

    def getCheckOutput(self):
        r"""
        Accessor to the output verification flag.

        Returns
        -------
        check_output : bool
            Whether to check return values for nan or inf.
        """
        return _func2.MarginalEvaluation_getCheckOutput(self)

    def __init__(self, *args):
        _func2.MarginalEvaluation_swiginit(self, _func2.new_MarginalEvaluation(*args))
    __swig_destroy__ = _func2.delete_MarginalEvaluation

# Register MarginalEvaluation in _func2:
_func2.MarginalEvaluation_swigregister(MarginalEvaluation)
class BasisFactory(openturns.common.PersistentObject):
    r"""
    Basis factory base class.

    Parameters
    ----------
    orthogUniVarPolFactory : :class:`~openturns.OrthogonalUniVariatePolynomialFactory`
        Factory that builds particular univariate polynomial (e.g. Hermite,
        Legendre, Laguerre, ...).

    See also
    --------
    ConstantBasisFactory, LinearBasisFactory, QuadraticBasisFactory

    Notes
    -----
    BasisFactory is the interface of the OrthogonalUniVariatePolynomialFactory
    implementation. It represents the factory that allows the construction of any
    univariate orthonormal polynomial with any degree.
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.BasisFactory_getClassName(self)

    def __repr__(self):
        return _func2.BasisFactory___repr__(self)

    def build(self):
        r"""
        Build the basis.

        Returns
        -------
        basis : :class:`~openturns.Basis`.
        """
        return _func2.BasisFactory_build(self)

    def __init__(self, *args):
        _func2.BasisFactory_swiginit(self, _func2.new_BasisFactory(*args))
    __swig_destroy__ = _func2.delete_BasisFactory

# Register BasisFactory in _func2:
_func2.BasisFactory_swigregister(BasisFactory)
class ConstantBasisFactory(BasisFactory):
    r"""
    Constant basis factory.

    Parameters
    ----------
    dimension : int
        Input dimension of the basis.

    See also
    --------
    BasisFactory, LinearBasisFactory, QuadraticBasisFactory

    Notes
    -----
    A factory for constant basis of input dimension *dimension*.

    Examples
    --------
    >>> import openturns as ot
    >>> basis = ot.ConstantBasisFactory(2).build()
    >>> f = ot.AggregatedFunction(basis)
    >>> x = [2, 3]
    >>> print(f(x))
    [1]
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.ConstantBasisFactory_getClassName(self)

    def __repr__(self):
        return _func2.ConstantBasisFactory___repr__(self)

    def build(self):
        r"""
        Build the basis.

        Returns
        -------
        basis : :class:`~openturns.Basis`.
        """
        return _func2.ConstantBasisFactory_build(self)

    def __init__(self, *args):
        _func2.ConstantBasisFactory_swiginit(self, _func2.new_ConstantBasisFactory(*args))
    __swig_destroy__ = _func2.delete_ConstantBasisFactory

# Register ConstantBasisFactory in _func2:
_func2.ConstantBasisFactory_swigregister(ConstantBasisFactory)
class LinearBasisFactory(BasisFactory):
    r"""
    Linear basis factory.

    The linear basis is the collection of functions :math:`\psi_k: \mathbb{R}^d \mapsto \mathbb{R}` for :math:`0 \leq k \leq d` defined:

    .. math::

        \psi_0(x_1, \dots, x_d) & = 1 \\
        \psi_k(x_1, \dots, x_d) & = x_k \mbox{for } 1 \leq k \leq d

    Parameters
    ----------
    dimension : int
        Input dimension :math:`d` of the basis.

    See also
    --------
    BasisFactory, ConstantBasisFactory, QuadraticBasisFactory

    Examples
    --------
    >>> import openturns as ot
    >>> basis = ot.LinearBasisFactory(2).build()
    >>> psi_1 = basis.build(1)
    >>> print(psi_1)
    class=LinearEvaluation name=Unnamed center=[0,0] constant=[0] linear=[[ 1 ]
     [ 0 ]]
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.LinearBasisFactory_getClassName(self)

    def __repr__(self):
        return _func2.LinearBasisFactory___repr__(self)

    def build(self):
        r"""
        Build the basis.

        Returns
        -------
        basis : :class:`~openturns.Basis`.
        """
        return _func2.LinearBasisFactory_build(self)

    def __init__(self, *args):
        _func2.LinearBasisFactory_swiginit(self, _func2.new_LinearBasisFactory(*args))
    __swig_destroy__ = _func2.delete_LinearBasisFactory

# Register LinearBasisFactory in _func2:
_func2.LinearBasisFactory_swigregister(LinearBasisFactory)
class QuadraticBasisFactory(BasisFactory):
    r"""
    Quadratic basis factory.

    The quadratic basis is composed of the quadratic terms of the canonical basis:

    .. math::

        \{ \psi_k(x) \} = \{ 1, x_1, \hdots, x_n, x_i x_j \forall i,j \in [1,n] \}

    Parameters
    ----------
    dimension : int
        Input dimension of the basis.

    See also
    --------
    BasisFactory, ConstantBasisFactory, LinearBasisFactory

    Examples
    --------
    >>> import openturns as ot
    >>> basis = ot.QuadraticBasisFactory(2).build()
    >>> f = ot.AggregatedFunction(basis)
    >>> x = [2, 3]
    >>> print(f(x))
    [1,2,3,4,6,9]
    """

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.QuadraticBasisFactory_getClassName(self)

    def __repr__(self):
        return _func2.QuadraticBasisFactory___repr__(self)

    def build(self):
        r"""
        Build the basis.

        Returns
        -------
        basis : :class:`~openturns.Basis`.
        """
        return _func2.QuadraticBasisFactory_build(self)

    def __init__(self, *args):
        _func2.QuadraticBasisFactory_swiginit(self, _func2.new_QuadraticBasisFactory(*args))
    __swig_destroy__ = _func2.delete_QuadraticBasisFactory

# Register QuadraticBasisFactory in _func2:
_func2.QuadraticBasisFactory_swigregister(QuadraticBasisFactory)
class TrendEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::TrendEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.TrendEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.TrendEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.TrendEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.TrendEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.TrendEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.TrendEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.TrendEvaluation_getOutputDimension(self)

    def getFunction(self):
        return _func2.TrendEvaluation_getFunction(self)

    def __init__(self, *args):
        _func2.TrendEvaluation_swiginit(self, _func2.new_TrendEvaluation(*args))
    __swig_destroy__ = _func2.delete_TrendEvaluation

# Register TrendEvaluation in _func2:
_func2.TrendEvaluation_swigregister(TrendEvaluation)
class InverseTrendEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::InverseTrendEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.InverseTrendEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.InverseTrendEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.InverseTrendEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.InverseTrendEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.InverseTrendEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.InverseTrendEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.InverseTrendEvaluation_getOutputDimension(self)

    def getFunction(self):
        return _func2.InverseTrendEvaluation_getFunction(self)

    def __init__(self, *args):
        _func2.InverseTrendEvaluation_swiginit(self, _func2.new_InverseTrendEvaluation(*args))
    __swig_destroy__ = _func2.delete_InverseTrendEvaluation

# Register InverseTrendEvaluation in _func2:
_func2.InverseTrendEvaluation_swigregister(InverseTrendEvaluation)
class BoxCoxEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::BoxCoxEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.BoxCoxEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.BoxCoxEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.BoxCoxEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.BoxCoxEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.BoxCoxEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.BoxCoxEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.BoxCoxEvaluation_getOutputDimension(self)

    def getLambda(self):
        return _func2.BoxCoxEvaluation_getLambda(self)

    def getShift(self):
        return _func2.BoxCoxEvaluation_getShift(self)

    def __init__(self, *args):
        _func2.BoxCoxEvaluation_swiginit(self, _func2.new_BoxCoxEvaluation(*args))
    __swig_destroy__ = _func2.delete_BoxCoxEvaluation

# Register BoxCoxEvaluation in _func2:
_func2.BoxCoxEvaluation_swigregister(BoxCoxEvaluation)
class InverseBoxCoxEvaluation(openturns.func.EvaluationImplementation):
    r"""Proxy of C++ OT::InverseBoxCoxEvaluation."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def getClassName(self):
        r"""
        Accessor to the object's name.

        Returns
        -------
        class_name : str
            The object class name (`object.__class__.__name__`).
        """
        return _func2.InverseBoxCoxEvaluation_getClassName(self)

    def __eq__(self, *args):
        return _func2.InverseBoxCoxEvaluation___eq__(self, *args)

    def __repr__(self):
        return _func2.InverseBoxCoxEvaluation___repr__(self)

    def __str__(self, *args):
        return _func2.InverseBoxCoxEvaluation___str__(self, *args)

    def __call__(self, *args):
        return _func2.InverseBoxCoxEvaluation___call__(self, *args)

    def getInputDimension(self):
        r"""
        Accessor to the number of the inputs.

        Returns
        -------
        number_inputs : int
            Number of inputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getInputDimension())
        2
        """
        return _func2.InverseBoxCoxEvaluation_getInputDimension(self)

    def getOutputDimension(self):
        r"""
        Accessor to the number of the outputs.

        Returns
        -------
        number_outputs : int
            Number of outputs.

        Examples
        --------
        >>> import openturns as ot
        >>> f = ot.SymbolicFunction(['x1', 'x2'],
        ...                         ['2 * x1^2 + x1 + 8 * x2 + 4 * cos(x1) * x2 + 6'])
        >>> print(f.getOutputDimension())
        1
        """
        return _func2.InverseBoxCoxEvaluation_getOutputDimension(self)

    def getLambda(self):
        return _func2.InverseBoxCoxEvaluation_getLambda(self)

    def getShift(self):
        return _func2.InverseBoxCoxEvaluation_getShift(self)

    def __init__(self, *args):
        _func2.InverseBoxCoxEvaluation_swiginit(self, _func2.new_InverseBoxCoxEvaluation(*args))
    __swig_destroy__ = _func2.delete_InverseBoxCoxEvaluation

# Register InverseBoxCoxEvaluation in _func2:
_func2.InverseBoxCoxEvaluation_swigregister(InverseBoxCoxEvaluation)

