# Universal functions

These functions are equivalent to their NumPy versions, but for xarray
objects backed by non-NumPy array types (e.g. `cupy`, `sparse`, or `jax`),
they will ensure that the computation is dispatched to the appropriate
backend. You can find them in the `xarray.ufuncs` module:

| [`ufuncs.abs`](../generated/xarray.ufuncs.abs.html.md#xarray.ufuncs.abs)                                 | xarray specific variant of `numpy.abs()`.                                                                                                |
|---------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
| [`ufuncs.absolute`](../generated/xarray.ufuncs.absolute.html.md#xarray.ufuncs.absolute)                       | xarray specific variant of `numpy.absolute()`.                                                                                           |
| [`ufuncs.acos`](../generated/xarray.ufuncs.acos.html.md#xarray.ufuncs.acos)                               | xarray specific variant of `numpy.acos()`.                                                                                               |
| [`ufuncs.acosh`](../generated/xarray.ufuncs.acosh.html.md#xarray.ufuncs.acosh)                             | xarray specific variant of `numpy.acosh()`.                                                                                              |
| [`ufuncs.arccos`](../generated/xarray.ufuncs.arccos.html.md#xarray.ufuncs.arccos)                           | xarray specific variant of `numpy.arccos()`.                                                                                             |
| [`ufuncs.arccosh`](../generated/xarray.ufuncs.arccosh.html.md#xarray.ufuncs.arccosh)                         | xarray specific variant of `numpy.arccosh()`.                                                                                            |
| [`ufuncs.arcsin`](../generated/xarray.ufuncs.arcsin.html.md#xarray.ufuncs.arcsin)                           | xarray specific variant of `numpy.arcsin()`.                                                                                             |
| [`ufuncs.arcsinh`](../generated/xarray.ufuncs.arcsinh.html.md#xarray.ufuncs.arcsinh)                         | xarray specific variant of `numpy.arcsinh()`.                                                                                            |
| [`ufuncs.arctan`](../generated/xarray.ufuncs.arctan.html.md#xarray.ufuncs.arctan)                           | xarray specific variant of `numpy.arctan()`.                                                                                             |
| [`ufuncs.arctanh`](../generated/xarray.ufuncs.arctanh.html.md#xarray.ufuncs.arctanh)                         | xarray specific variant of `numpy.arctanh()`.                                                                                            |
| [`ufuncs.asin`](../generated/xarray.ufuncs.asin.html.md#xarray.ufuncs.asin)                               | xarray specific variant of `numpy.asin()`.                                                                                               |
| [`ufuncs.asinh`](../generated/xarray.ufuncs.asinh.html.md#xarray.ufuncs.asinh)                             | xarray specific variant of `numpy.asinh()`.                                                                                              |
| [`ufuncs.atan`](../generated/xarray.ufuncs.atan.html.md#xarray.ufuncs.atan)                               | xarray specific variant of `numpy.atan()`.                                                                                               |
| [`ufuncs.atanh`](../generated/xarray.ufuncs.atanh.html.md#xarray.ufuncs.atanh)                             | xarray specific variant of `numpy.atanh()`.                                                                                              |
| [`ufuncs.bitwise_count`](../generated/xarray.ufuncs.bitwise_count.html.md#xarray.ufuncs.bitwise_count)             | xarray specific variant of `numpy.bitwise_count()`.                                                                                      |
| [`ufuncs.bitwise_invert`](../generated/xarray.ufuncs.bitwise_invert.html.md#xarray.ufuncs.bitwise_invert)           | xarray specific variant of `numpy.bitwise_invert()`.                                                                                     |
| [`ufuncs.bitwise_not`](../generated/xarray.ufuncs.bitwise_not.html.md#xarray.ufuncs.bitwise_not)                 | xarray specific variant of `numpy.bitwise_not()`.                                                                                        |
| [`ufuncs.cbrt`](../generated/xarray.ufuncs.cbrt.html.md#xarray.ufuncs.cbrt)                               | xarray specific variant of `numpy.cbrt()`.                                                                                               |
| [`ufuncs.ceil`](../generated/xarray.ufuncs.ceil.html.md#xarray.ufuncs.ceil)                               | xarray specific variant of `numpy.ceil()`.                                                                                               |
| [`ufuncs.conj`](../generated/xarray.ufuncs.conj.html.md#xarray.ufuncs.conj)                               | xarray specific variant of `numpy.conj()`.                                                                                               |
| [`ufuncs.conjugate`](../generated/xarray.ufuncs.conjugate.html.md#xarray.ufuncs.conjugate)                     | xarray specific variant of `numpy.conjugate()`.                                                                                          |
| [`ufuncs.cos`](../generated/xarray.ufuncs.cos.html.md#xarray.ufuncs.cos)                                 | xarray specific variant of `numpy.cos()`.                                                                                                |
| [`ufuncs.cosh`](../generated/xarray.ufuncs.cosh.html.md#xarray.ufuncs.cosh)                               | xarray specific variant of `numpy.cosh()`.                                                                                               |
| [`ufuncs.deg2rad`](../generated/xarray.ufuncs.deg2rad.html.md#xarray.ufuncs.deg2rad)                         | xarray specific variant of `numpy.deg2rad()`.                                                                                            |
| [`ufuncs.degrees`](../generated/xarray.ufuncs.degrees.html.md#xarray.ufuncs.degrees)                         | xarray specific variant of `numpy.degrees()`.                                                                                            |
| [`ufuncs.exp`](../generated/xarray.ufuncs.exp.html.md#xarray.ufuncs.exp)                                 | xarray specific variant of `numpy.exp()`.                                                                                                |
| [`ufuncs.exp2`](../generated/xarray.ufuncs.exp2.html.md#xarray.ufuncs.exp2)                               | xarray specific variant of `numpy.exp2()`.                                                                                               |
| [`ufuncs.expm1`](../generated/xarray.ufuncs.expm1.html.md#xarray.ufuncs.expm1)                             | xarray specific variant of `numpy.expm1()`.                                                                                              |
| [`ufuncs.fabs`](../generated/xarray.ufuncs.fabs.html.md#xarray.ufuncs.fabs)                               | xarray specific variant of `numpy.fabs()`.                                                                                               |
| [`ufuncs.floor`](../generated/xarray.ufuncs.floor.html.md#xarray.ufuncs.floor)                             | xarray specific variant of `numpy.floor()`.                                                                                              |
| [`ufuncs.invert`](../generated/xarray.ufuncs.invert.html.md#xarray.ufuncs.invert)                           | xarray specific variant of `numpy.invert()`.                                                                                             |
| [`ufuncs.isfinite`](../generated/xarray.ufuncs.isfinite.html.md#xarray.ufuncs.isfinite)                       | xarray specific variant of `numpy.isfinite()`.                                                                                           |
| [`ufuncs.isinf`](../generated/xarray.ufuncs.isinf.html.md#xarray.ufuncs.isinf)                             | xarray specific variant of `numpy.isinf()`.                                                                                              |
| [`ufuncs.isnan`](../generated/xarray.ufuncs.isnan.html.md#xarray.ufuncs.isnan)                             | xarray specific variant of `numpy.isnan()`.                                                                                              |
| [`ufuncs.isnat`](../generated/xarray.ufuncs.isnat.html.md#xarray.ufuncs.isnat)                             | xarray specific variant of `numpy.isnat()`.                                                                                              |
| [`ufuncs.log`](../generated/xarray.ufuncs.log.html.md#xarray.ufuncs.log)                                 | xarray specific variant of `numpy.log()`.                                                                                                |
| [`ufuncs.log10`](../generated/xarray.ufuncs.log10.html.md#xarray.ufuncs.log10)                             | xarray specific variant of `numpy.log10()`.                                                                                              |
| [`ufuncs.log1p`](../generated/xarray.ufuncs.log1p.html.md#xarray.ufuncs.log1p)                             | xarray specific variant of `numpy.log1p()`.                                                                                              |
| [`ufuncs.log2`](../generated/xarray.ufuncs.log2.html.md#xarray.ufuncs.log2)                               | xarray specific variant of `numpy.log2()`.                                                                                               |
| [`ufuncs.logical_not`](../generated/xarray.ufuncs.logical_not.html.md#xarray.ufuncs.logical_not)                 | xarray specific variant of `numpy.logical_not()`.                                                                                        |
| [`ufuncs.negative`](../generated/xarray.ufuncs.negative.html.md#xarray.ufuncs.negative)                       | xarray specific variant of `numpy.negative()`.                                                                                           |
| [`ufuncs.positive`](../generated/xarray.ufuncs.positive.html.md#xarray.ufuncs.positive)                       | xarray specific variant of `numpy.positive()`.                                                                                           |
| [`ufuncs.rad2deg`](../generated/xarray.ufuncs.rad2deg.html.md#xarray.ufuncs.rad2deg)                         | xarray specific variant of `numpy.rad2deg()`.                                                                                            |
| [`ufuncs.radians`](../generated/xarray.ufuncs.radians.html.md#xarray.ufuncs.radians)                         | xarray specific variant of `numpy.radians()`.                                                                                            |
| [`ufuncs.reciprocal`](../generated/xarray.ufuncs.reciprocal.html.md#xarray.ufuncs.reciprocal)                   | xarray specific variant of `numpy.reciprocal()`.                                                                                         |
| [`ufuncs.rint`](../generated/xarray.ufuncs.rint.html.md#xarray.ufuncs.rint)                               | xarray specific variant of `numpy.rint()`.                                                                                               |
| [`ufuncs.sign`](../generated/xarray.ufuncs.sign.html.md#xarray.ufuncs.sign)                               | xarray specific variant of `numpy.sign()`.                                                                                               |
| [`ufuncs.signbit`](../generated/xarray.ufuncs.signbit.html.md#xarray.ufuncs.signbit)                         | xarray specific variant of `numpy.signbit()`.                                                                                            |
| [`ufuncs.sin`](../generated/xarray.ufuncs.sin.html.md#xarray.ufuncs.sin)                                 | xarray specific variant of `numpy.sin()`.                                                                                                |
| [`ufuncs.sinh`](../generated/xarray.ufuncs.sinh.html.md#xarray.ufuncs.sinh)                               | xarray specific variant of `numpy.sinh()`.                                                                                               |
| [`ufuncs.spacing`](../generated/xarray.ufuncs.spacing.html.md#xarray.ufuncs.spacing)                         | xarray specific variant of `numpy.spacing()`.                                                                                            |
| [`ufuncs.sqrt`](../generated/xarray.ufuncs.sqrt.html.md#xarray.ufuncs.sqrt)                               | xarray specific variant of `numpy.sqrt()`.                                                                                               |
| [`ufuncs.square`](../generated/xarray.ufuncs.square.html.md#xarray.ufuncs.square)                           | xarray specific variant of `numpy.square()`.                                                                                             |
| [`ufuncs.tan`](../generated/xarray.ufuncs.tan.html.md#xarray.ufuncs.tan)                                 | xarray specific variant of `numpy.tan()`.                                                                                                |
| [`ufuncs.tanh`](../generated/xarray.ufuncs.tanh.html.md#xarray.ufuncs.tanh)                               | xarray specific variant of `numpy.tanh()`.                                                                                               |
| [`ufuncs.trunc`](../generated/xarray.ufuncs.trunc.html.md#xarray.ufuncs.trunc)                             | xarray specific variant of `numpy.trunc()`.                                                                                              |
| [`ufuncs.add`](../generated/xarray.ufuncs.add.html.md#xarray.ufuncs.add)                                 | xarray specific variant of `numpy.add()`.                                                                                                |
| [`ufuncs.arctan2`](../generated/xarray.ufuncs.arctan2.html.md#xarray.ufuncs.arctan2)                         | xarray specific variant of `numpy.arctan2()`.                                                                                            |
| [`ufuncs.atan2`](../generated/xarray.ufuncs.atan2.html.md#xarray.ufuncs.atan2)                             | xarray specific variant of `numpy.atan2()`.                                                                                              |
| [`ufuncs.bitwise_and`](../generated/xarray.ufuncs.bitwise_and.html.md#xarray.ufuncs.bitwise_and)                 | xarray specific variant of `numpy.bitwise_and()`.                                                                                        |
| [`ufuncs.bitwise_left_shift`](../generated/xarray.ufuncs.bitwise_left_shift.html.md#xarray.ufuncs.bitwise_left_shift)   | xarray specific variant of `numpy.bitwise_left_shift()`.                                                                                 |
| [`ufuncs.bitwise_or`](../generated/xarray.ufuncs.bitwise_or.html.md#xarray.ufuncs.bitwise_or)                   | xarray specific variant of `numpy.bitwise_or()`.                                                                                         |
| [`ufuncs.bitwise_right_shift`](../generated/xarray.ufuncs.bitwise_right_shift.html.md#xarray.ufuncs.bitwise_right_shift) | xarray specific variant of `numpy.bitwise_right_shift()`.                                                                                |
| [`ufuncs.bitwise_xor`](../generated/xarray.ufuncs.bitwise_xor.html.md#xarray.ufuncs.bitwise_xor)                 | xarray specific variant of `numpy.bitwise_xor()`.                                                                                        |
| [`ufuncs.copysign`](../generated/xarray.ufuncs.copysign.html.md#xarray.ufuncs.copysign)                       | xarray specific variant of `numpy.copysign()`.                                                                                           |
| [`ufuncs.divide`](../generated/xarray.ufuncs.divide.html.md#xarray.ufuncs.divide)                           | xarray specific variant of `numpy.divide()`.                                                                                             |
| [`ufuncs.equal`](../generated/xarray.ufuncs.equal.html.md#xarray.ufuncs.equal)                             | xarray specific variant of `numpy.equal()`.                                                                                              |
| [`ufuncs.float_power`](../generated/xarray.ufuncs.float_power.html.md#xarray.ufuncs.float_power)                 | xarray specific variant of `numpy.float_power()`.                                                                                        |
| [`ufuncs.floor_divide`](../generated/xarray.ufuncs.floor_divide.html.md#xarray.ufuncs.floor_divide)               | xarray specific variant of `numpy.floor_divide()`.                                                                                       |
| [`ufuncs.fmax`](../generated/xarray.ufuncs.fmax.html.md#xarray.ufuncs.fmax)                               | xarray specific variant of `numpy.fmax()`.                                                                                               |
| [`ufuncs.fmin`](../generated/xarray.ufuncs.fmin.html.md#xarray.ufuncs.fmin)                               | xarray specific variant of `numpy.fmin()`.                                                                                               |
| [`ufuncs.fmod`](../generated/xarray.ufuncs.fmod.html.md#xarray.ufuncs.fmod)                               | xarray specific variant of `numpy.fmod()`.                                                                                               |
| [`ufuncs.gcd`](../generated/xarray.ufuncs.gcd.html.md#xarray.ufuncs.gcd)                                 | xarray specific variant of `numpy.gcd()`.                                                                                                |
| [`ufuncs.greater`](../generated/xarray.ufuncs.greater.html.md#xarray.ufuncs.greater)                         | xarray specific variant of `numpy.greater()`.                                                                                            |
| [`ufuncs.greater_equal`](../generated/xarray.ufuncs.greater_equal.html.md#xarray.ufuncs.greater_equal)             | xarray specific variant of `numpy.greater_equal()`.                                                                                      |
| [`ufuncs.heaviside`](../generated/xarray.ufuncs.heaviside.html.md#xarray.ufuncs.heaviside)                     | xarray specific variant of `numpy.heaviside()`.                                                                                          |
| [`ufuncs.hypot`](../generated/xarray.ufuncs.hypot.html.md#xarray.ufuncs.hypot)                             | xarray specific variant of `numpy.hypot()`.                                                                                              |
| [`ufuncs.lcm`](../generated/xarray.ufuncs.lcm.html.md#xarray.ufuncs.lcm)                                 | xarray specific variant of `numpy.lcm()`.                                                                                                |
| [`ufuncs.ldexp`](../generated/xarray.ufuncs.ldexp.html.md#xarray.ufuncs.ldexp)                             | xarray specific variant of `numpy.ldexp()`.                                                                                              |
| [`ufuncs.left_shift`](../generated/xarray.ufuncs.left_shift.html.md#xarray.ufuncs.left_shift)                   | xarray specific variant of `numpy.left_shift()`.                                                                                         |
| [`ufuncs.less`](../generated/xarray.ufuncs.less.html.md#xarray.ufuncs.less)                               | xarray specific variant of `numpy.less()`.                                                                                               |
| [`ufuncs.less_equal`](../generated/xarray.ufuncs.less_equal.html.md#xarray.ufuncs.less_equal)                   | xarray specific variant of `numpy.less_equal()`.                                                                                         |
| [`ufuncs.logaddexp`](../generated/xarray.ufuncs.logaddexp.html.md#xarray.ufuncs.logaddexp)                     | xarray specific variant of `numpy.logaddexp()`.                                                                                          |
| [`ufuncs.logaddexp2`](../generated/xarray.ufuncs.logaddexp2.html.md#xarray.ufuncs.logaddexp2)                   | xarray specific variant of `numpy.logaddexp2()`.                                                                                         |
| [`ufuncs.logical_and`](../generated/xarray.ufuncs.logical_and.html.md#xarray.ufuncs.logical_and)                 | xarray specific variant of `numpy.logical_and()`.                                                                                        |
| [`ufuncs.logical_or`](../generated/xarray.ufuncs.logical_or.html.md#xarray.ufuncs.logical_or)                   | xarray specific variant of `numpy.logical_or()`.                                                                                         |
| [`ufuncs.logical_xor`](../generated/xarray.ufuncs.logical_xor.html.md#xarray.ufuncs.logical_xor)                 | xarray specific variant of `numpy.logical_xor()`.                                                                                        |
| [`ufuncs.maximum`](../generated/xarray.ufuncs.maximum.html.md#xarray.ufuncs.maximum)                         | xarray specific variant of `numpy.maximum()`.                                                                                            |
| [`ufuncs.minimum`](../generated/xarray.ufuncs.minimum.html.md#xarray.ufuncs.minimum)                         | xarray specific variant of `numpy.minimum()`.                                                                                            |
| [`ufuncs.mod`](../generated/xarray.ufuncs.mod.html.md#xarray.ufuncs.mod)                                 | xarray specific variant of `numpy.mod()`.                                                                                                |
| [`ufuncs.multiply`](../generated/xarray.ufuncs.multiply.html.md#xarray.ufuncs.multiply)                       | xarray specific variant of `numpy.multiply()`.                                                                                           |
| [`ufuncs.nextafter`](../generated/xarray.ufuncs.nextafter.html.md#xarray.ufuncs.nextafter)                     | xarray specific variant of `numpy.nextafter()`.                                                                                          |
| [`ufuncs.not_equal`](../generated/xarray.ufuncs.not_equal.html.md#xarray.ufuncs.not_equal)                     | xarray specific variant of `numpy.not_equal()`.                                                                                          |
| [`ufuncs.pow`](../generated/xarray.ufuncs.pow.html.md#xarray.ufuncs.pow)                                 | xarray specific variant of `numpy.pow()`.                                                                                                |
| [`ufuncs.power`](../generated/xarray.ufuncs.power.html.md#xarray.ufuncs.power)                             | xarray specific variant of `numpy.power()`.                                                                                              |
| [`ufuncs.remainder`](../generated/xarray.ufuncs.remainder.html.md#xarray.ufuncs.remainder)                     | xarray specific variant of `numpy.remainder()`.                                                                                          |
| [`ufuncs.right_shift`](../generated/xarray.ufuncs.right_shift.html.md#xarray.ufuncs.right_shift)                 | xarray specific variant of `numpy.right_shift()`.                                                                                        |
| [`ufuncs.subtract`](../generated/xarray.ufuncs.subtract.html.md#xarray.ufuncs.subtract)                       | xarray specific variant of `numpy.subtract()`.                                                                                           |
| [`ufuncs.true_divide`](../generated/xarray.ufuncs.true_divide.html.md#xarray.ufuncs.true_divide)                 | xarray specific variant of `numpy.true_divide()`.                                                                                        |
| [`ufuncs.angle`](../generated/xarray.ufuncs.angle.html.md#xarray.ufuncs.angle)                             | xarray specific variant of [`numpy.angle()`](https://numpy.org/doc/stable/reference/generated/numpy.angle.html#numpy.angle).             |
| [`ufuncs.isreal`](../generated/xarray.ufuncs.isreal.html.md#xarray.ufuncs.isreal)                           | xarray specific variant of [`numpy.isreal()`](https://numpy.org/doc/stable/reference/generated/numpy.isreal.html#numpy.isreal).          |
| [`ufuncs.iscomplex`](../generated/xarray.ufuncs.iscomplex.html.md#xarray.ufuncs.iscomplex)                     | xarray specific variant of [`numpy.iscomplex()`](https://numpy.org/doc/stable/reference/generated/numpy.iscomplex.html#numpy.iscomplex). |
