Source code for numpy_ipps.integer

"""Arithmetic Integer Functions."""
import enum as _enum

import numpy as _numpy

import numpy_ipps._detail.dispatch as _dispatch
import numpy_ipps._detail.metaclass.binaries as _binaries
import numpy_ipps._detail.metaclass.selector as _selector
import numpy_ipps._detail.metaclass.unaries as _unaries
import numpy_ipps.policies
import numpy_ipps.support
import numpy_ipps.utils


_binaryInt_candidates = (
    _numpy.uint8,
    _numpy.int16,
    _numpy.uint16,
    _numpy.int32,
)
_unarySignedInt_candidates = (
    _numpy.int16,
    _numpy.int32,
)
_unaryUnsignedInt_candidates = (
    _numpy.uint8,
    _numpy.int16,
    _numpy.uint16,
)


[docs]class Polarity(_enum.Enum): """Polarity enumeration.""" NORMAL = 1 REVERSE = 2
[docs]class AddInteger( metaclass=_binaries.Binary, ipps_backend="Add", numpy_backend=_numpy.add, policies=numpy_ipps.policies.Policies( bytes1=numpy_ipps.policies.TagPolicy.SCALE_UNSIGNED, bytes4=numpy_ipps.policies.TagPolicy.INTEGER_UNSIGNED, bytes8=numpy_ipps.policies.TagPolicy.SCALE_SIGNED, ), candidates=( _numpy.int8, _numpy.uint8, _numpy.int16, _numpy.uint16, _numpy.int32, _numpy.uint32, ), ): """Add Function. ``dst[n] <- src1[n] + src2[n]`` """ pass
[docs]class AddInteger_I( metaclass=_binaries.Binary_I, ipps_backend="Add_I", numpy_backend=_numpy.add, policies=numpy_ipps.policies.Policies( bytes1=numpy_ipps.policies.TagPolicy.SCALE_UNSIGNED, bytes2=numpy_ipps.policies.TagPolicy.SIGNED, bytes4=numpy_ipps.policies.TagPolicy.INTEGER_UNSIGNED, ), candidates=( _numpy.int8, _numpy.uint8, _numpy.int16, _numpy.uint16, _numpy.int32, _numpy.uint32, ), ): """Add_I Function. ``src_dst[n] <- src_dst[n] + src[n]`` """ pass
class _MulIntegerIPPSImpl( metaclass=_binaries.Binary, ipps_backend="Mul", numpy_backend=_numpy.multiply, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, ): """Mul Function -- Intel IPPS implementation.""" pass class _MulIntegerNumpyImpl( metaclass=_binaries.Binary, ipps_backend="Mul", numpy_backend=_numpy.multiply, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, force_numpy=True, ): """Mul Function -- Numpy implementation.""" pass
[docs]class MulInteger( metaclass=_selector.Selector, ipps_class=_MulIntegerIPPSImpl, numpy_class=_MulIntegerNumpyImpl, numpy_types_L2=(_numpy.int32,), ): """Mul Function. ``dst[n] <- src1[n] * src2[n]`` """ pass
class _MulIntegerIIPPSImpl( metaclass=_binaries.Binary_I, ipps_backend="Mul_I", numpy_backend=_numpy.multiply, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, ): """Mul_I Function -- Intel IPPS implementation.""" pass class _MulIntegerINumpyImpl( metaclass=_binaries.Binary_I, ipps_backend="Mul_I", numpy_backend=_numpy.multiply, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, force_numpy=True, ): """Mul_I Function -- Numpy implementation.""" pass
[docs]class MulInteger_I( metaclass=_selector.Selector, ipps_class=_MulIntegerIIPPSImpl, numpy_class=_MulIntegerINumpyImpl, numpy_types_L2=(_numpy.int32,), ): """Mul_I Function. ``src_dst[n] <- src_dst[n] * src[n]`` """ pass
[docs]class SubInteger( metaclass=_binaries.Binary, ipps_backend="Sub", numpy_backend=_numpy.subtract, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, numpy_swap=True, ): """Sub Function. ``dst[n] <- src2[n] - src1[n]`` """ pass
[docs]class SubInteger_I( metaclass=_binaries.Binary_I, ipps_backend="Sub_I", numpy_backend=_numpy.subtract, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, numpy_swap=True, ): """Sub_I Function. ``src_dst[n] <- src[n] - src_dst[n]`` """ pass
[docs]class DivInteger( metaclass=_binaries.Binary, ipps_backend="Div", numpy_backend=_numpy.divide, policies=numpy_ipps.policies.scaled_all, candidates=_binaryInt_candidates, numpy_swap=True, ): """Div Function. dst[n] <- src2[n] / src1[n] """ pass
[docs]class DivInteger_I( metaclass=_binaries.Binary_I, ipps_backend="Div_I", numpy_backend=_numpy.divide, policies=numpy_ipps.policies.scaled_all, candidates=( _numpy.int16, _numpy.uint16, ), numpy_swap=True, ): """Div_I Function. ``src_dst[n] <- src[n] / src_dst[n]`` """ pass
[docs]class AbsInteger( metaclass=_unaries.Unary, ipps_backend="Abs", numpy_backend=_numpy.fabs, candidates=_unarySignedInt_candidates, ): """Abs Function. ``dst[n] <- | src[n] |`` """ pass
[docs]class AbsInteger_I( metaclass=_unaries.Unary_I, ipps_backend="Abs_I", numpy_backend=_numpy.fabs, candidates=_unarySignedInt_candidates, ): """Abs_I Function. ``src_dst[n] <- | src_dst[n] |`` """ pass
class _SqrIntegerIPPSImpl( metaclass=_unaries.Unary, ipps_backend="Sqr", numpy_backend=_numpy.square, policies=numpy_ipps.policies.scaled_all, candidates=_unaryUnsignedInt_candidates, ): """Sqr Function -- Intel IPPS implementation.""" pass class _SqrIntegerNumpyImpl( metaclass=_unaries.Unary, ipps_backend="Sqr", numpy_backend=_numpy.square, policies=numpy_ipps.policies.scaled_all, candidates=_unaryUnsignedInt_candidates, force_numpy=True, ): """Sqr Function -- Numpy implementation.""" pass
[docs]class SqrInteger( metaclass=_selector.Selector, ipps_class=_SqrIntegerIPPSImpl, numpy_class=_SqrIntegerNumpyImpl, numpy_types_L2=( _numpy.int16, _numpy.uint16, ), ): """Sqr Function. ``dst[n] <- src[n] * src[n]`` """ pass
[docs]class SqrInteger_I( metaclass=_unaries.Unary_I, ipps_backend="Sqr_I", numpy_backend=_numpy.square, policies=numpy_ipps.policies.scaled_all, candidates=(_numpy.uint8,), ): """Sqr_I Function. ``src_dst[n] <- src_dst[n] * src_dst[n]`` """ pass
[docs]class SqrtInteger( metaclass=_unaries.Unary, ipps_backend="Sqrt", numpy_backend=_numpy.sqrt, policies=numpy_ipps.policies.scaled_all, candidates=_unaryUnsignedInt_candidates, ): """Sqrt Function. ``dst[n] <- sqrt( src[n] )`` """ pass
[docs]class SqrtInteger_I( metaclass=_unaries.Unary_I, ipps_backend="Sqrt_I", numpy_backend=_numpy.sqrt, policies=numpy_ipps.policies.scaled_all, candidates=_unaryUnsignedInt_candidates, ): """Sqrt_I Function. ``src_dst[n] <- sqrt( src_dst[n] )`` """ pass
[docs]class ExpInteger( metaclass=_unaries.Unary, ipps_backend="Exp", numpy_backend=_numpy.exp, policies=numpy_ipps.policies.scaled_all, candidates=_unarySignedInt_candidates, ): """Exp Function. ``dst[n] <- exp( src[n] )`` """ pass
[docs]class ExpInteger_I( metaclass=_unaries.Unary_I, ipps_backend="Exp_I", numpy_backend=_numpy.exp, policies=numpy_ipps.policies.scaled_all, candidates=_unarySignedInt_candidates, ): """Exp_I Function. ``src_dst[n] <- exp( src_dst[n] )`` """ pass
[docs]class LnInteger( metaclass=_unaries.Unary, ipps_backend="Ln", numpy_backend=_numpy.log, policies=numpy_ipps.policies.scaled_all, candidates=_unarySignedInt_candidates, ): """Ln Function. ``dst[n] <- ln( src[n] )`` """ pass
[docs]class LnInteger_I( metaclass=_unaries.Unary_I, ipps_backend="Ln_I", numpy_backend=_numpy.log, policies=numpy_ipps.policies.scaled_all, candidates=_unarySignedInt_candidates, ): """Ln_I Function. ``src_dst[n] <- ln( src_dst[n] )`` """ pass
[docs]class AddProductInteger: """AddProduct Function. ``src_dst[n] <- src_dst[n] + src1[n] * src2[n]`` """ __slots__ = ( "_ipps_backend", "_ipps_arg", ) dtype_candidates = ( _numpy.int16, _numpy.int32, ) _ipps_kind = _selector.Kind.BINARY def __init__(self, dtype, size=None): self._ipps_arg = numpy_ipps.utils.cast("int", 0) self._ipps_backend = _dispatch.ipps_function( "AddProduct", ( "void*", "void*", "void*", "int", ), dtype, policies=numpy_ipps.policies.scaled_all, ) def __call__(self, src1, src2, src_dst): numpy_ipps.status = self._ipps_backend( src1.cdata, src2.cdata, src_dst.cdata, src1.size, self._ipps_arg, ) assert ( numpy_ipps.status == 0 ), "DEBUG: Bad Intel IPP Signal status {}".format(numpy_ipps.status) def _numpy_backend(self, src1, src2, src_dst): raise NotImplementedError
[docs]class NormalizeInteger: """Normalize Function. ``dst[n] <- (src[n] - sub) / div`` """ __slots__ = ( "_ipps_backend", "_ipps_arg", ) dtype_candidates = (_numpy.int16,) _ipps_kind = _selector.Kind.UNARY def __init__(self, dtype, size=None): self._ipps_arg = numpy_ipps.utils.cast("int", 0) self._ipps_backend = _dispatch.ipps_function( "Normalize", ( "void*", "void*", "int", _dispatch.as_ctype_str( dtype, policies=numpy_ipps.policies.scaled_all ), "int", ), dtype, policies=numpy_ipps.policies.scaled_all, ) def __call__(self, src, dst, sub, div): numpy_ipps.status = self._ipps_backend( src.cdata, dst.cdata, src.size, sub, div, self._ipps_arg ) assert ( numpy_ipps.status == 0 ), "DEBUG: Bad Intel IPP Signal status {}".format(numpy_ipps.status) def _numpy_backend(self, src, dst, sub, div): _numpy.subtract(src.ndarray, sub, dst.ndarray, casting="unsafe") _numpy.divide(dst.ndarray, div, dst.ndarray, casting="unsafe")
[docs]class NormalizeInteger_I: """Normalize_I Function. ``src_dst[n] <- (src_dst[n] - sub) / div`` """ __slots__ = ( "_ipps_backend", "_ipps_arg", ) dtype_candidates = (_numpy.int16,) _ipps_kind = _selector.Kind.UNARY_I def __init__(self, dtype, size=None): self._ipps_arg = numpy_ipps.utils.cast("int", 0) self._ipps_backend = _dispatch.ipps_function( "Normalize_I", ( "void*", "int", _dispatch.as_ctype_str( dtype, policies=numpy_ipps.policies.scaled_all ), "int", ), dtype, policies=numpy_ipps.policies.scaled_all, ) def __call__(self, src_dst, sub, div): numpy_ipps.status = self._ipps_backend( src_dst.cdata, src_dst.size, sub, div, self._ipps_arg ) assert ( numpy_ipps.status == 0 ), "DEBUG: Bad Intel IPP Signal status {}".format(numpy_ipps.status) def _numpy_backend(self, src_dst, sub, div): _numpy.subtract( src_dst.ndarray, sub, src_dst.ndarray, casting="unsafe" ) _numpy.divide(src_dst.ndarray, div, src_dst.ndarray, casting="unsafe")