Source code for mars.tensor.special.bessel

# Copyright 1999-2021 Alibaba Group Holding Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import scipy.special as spspecial

from ..arithmetic.utils import arithmetic_operand
from ..utils import infer_dtype, implement_scipy
from .core import TensorSpecialBinOp, _register_special_op


@_register_special_op
@arithmetic_operand(sparse_mode="binary_and")
class TensorJV(TensorSpecialBinOp):
    _func_name = "jv"


[docs]@implement_scipy(spspecial.jv) @infer_dtype(spspecial.jv) def jv(v, z, **kwargs): op = TensorJV(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorJVE(TensorSpecialBinOp): _func_name = "jve"
[docs]@implement_scipy(spspecial.jve) @infer_dtype(spspecial.jve) def jve(v, z, **kwargs): op = TensorJVE(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorYN(TensorSpecialBinOp): _func_name = "yn"
[docs]@implement_scipy(spspecial.yn) @infer_dtype(spspecial.yn) def yn(n, x, **kwargs): op = TensorYN(**kwargs) return op(n, x)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorYV(TensorSpecialBinOp): _func_name = "yv"
[docs]@implement_scipy(spspecial.yv) @infer_dtype(spspecial.yv) def yv(v, z, **kwargs): op = TensorYV(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorYVE(TensorSpecialBinOp): _func_name = "yve"
[docs]@implement_scipy(spspecial.yve) @infer_dtype(spspecial.yve) def yve(v, z, **kwargs): op = TensorYVE(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorKN(TensorSpecialBinOp): _func_name = "kn"
[docs]@implement_scipy(spspecial.kn) @infer_dtype(spspecial.kn) def kn(n, x, **kwargs): op = TensorKN(**kwargs) return op(n, x)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorKV(TensorSpecialBinOp): _func_name = "kv"
[docs]@implement_scipy(spspecial.kv) @infer_dtype(spspecial.kv) def kv(v, z, **kwargs): op = TensorKV(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorKVE(TensorSpecialBinOp): _func_name = "kve"
[docs]@implement_scipy(spspecial.kve) @infer_dtype(spspecial.kve) def kve(v, z, **kwargs): op = TensorKVE(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorIV(TensorSpecialBinOp): _func_name = "iv"
[docs]@implement_scipy(spspecial.iv) @infer_dtype(spspecial.iv) def iv(v, z, **kwargs): op = TensorIV(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorIVE(TensorSpecialBinOp): _func_name = "ive"
[docs]@implement_scipy(spspecial.ive) @infer_dtype(spspecial.ive) def ive(v, z, **kwargs): op = TensorIVE(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorHankel1(TensorSpecialBinOp): _func_name = "hankel1"
[docs]@implement_scipy(spspecial.hankel1) @infer_dtype(spspecial.hankel1) def hankel1(v, z, **kwargs): op = TensorHankel1(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorHankel1e(TensorSpecialBinOp): _func_name = "hankel1e"
[docs]@implement_scipy(spspecial.hankel1e) @infer_dtype(spspecial.hankel1e) def hankel1e(v, z, **kwargs): op = TensorHankel1e(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorHankel2(TensorSpecialBinOp): _func_name = "hankel2"
[docs]@implement_scipy(spspecial.hankel2) @infer_dtype(spspecial.hankel2) def hankel2(v, z, **kwargs): op = TensorHankel2(**kwargs) return op(v, z)
@_register_special_op @arithmetic_operand(sparse_mode="binary_and") class TensorHankel2e(TensorSpecialBinOp): _func_name = "hankel2e"
[docs]@implement_scipy(spspecial.hankel2e) @infer_dtype(spspecial.hankel2e) def hankel2e(v, z, **kwargs): op = TensorHankel2e(**kwargs) return op(v, z)