mindspore.ops.xlogy

mindspore.ops.xlogy(input, other)[source]

Computes the first input tensor multiplied by the logarithm of second input tensor element-wise. Returns zero when input is zero.

\[out_i = input_{i}\ln{other_{i}}\]

Inputs of input and other comply with the implicit type conversion rules to make the data types consistent. The inputs must be two tensors or one tensor and one scalar. When the inputs are two tensors, the shapes of them could be broadcast. When the inputs are one tensor and one scalar, the scalar could only be a constant.

Warning

  • On Ascend, the data type of input and other must be float16 or float32.

Parameters
  • input (Union[Tensor, number.Number, bool]) – The first input is a number.Number or a bool or a tensor whose data type is number or bool_.

  • other (Union[Tensor, number.Number, bool]) – The second input is a number.Number or a bool when the first input is a tensor or a tensor whose data type is number or bool_. When the first input is Scalar, the second input must be a Tensor whose data type is number or bool_.

Returns

Tensor, the shape is the same as the one after broadcasting, and the data type is the one with higher precision or higher digits among the two inputs.

Raises
  • TypeError – If input and other is not a number.Number or a bool or a Tensor.

  • TypeError – If dtype of input and other is not in [float16, float32, float64, complex64, complex128].

  • ValueError – If input could not be broadcast to a tensor with shape of other.

Supported Platforms:

Ascend GPU CPU

Examples

>>> input = Tensor(np.array([-5, 0, 4]), mindspore.float32)
>>> other = Tensor(np.array([2, 2, 2]), mindspore.float32)
>>> output = ops.xlogy(input, other)
>>> print(output)
[-3.465736   0.        2.7725887]