tree b230f9d40eb19cff94380ba47db3ca60824191a9
parent 7d0a91fc486f3f020dbde1b543edda811f455ad2
author Yong Tang <yong.tang.github@outlook.com> 1585697066 +0000
committer Yong Tang <yong.tang.github@outlook.com> 1585698707 +0000

Add int16 support for tf.math.minimum and tf.math.maximum

I was working on lossless audio data which is primary int16 PCM data,
when trying to do a simple minimum to my surprise I noticed that in16
is not supported:
```
>>> x = tf.constant(1, tf.int16)
>>> y = tf.constant(2, tf.int16)
>>> tf.math.minimum(x, y)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/3.7/site-packages/tensorflow/python/ops/gen_math_ops.py", line 5961, in minimum
    _ops.raise_from_not_ok_status(e, name)
  File "/Library/Python/3.7/site-packages/tensorflow/python/framework/ops.py", line 6653, in raise_from_not_ok_status
    six.raise_from(core._status_to_exception(e.code, message), None)
  File "<string>", line 3, in raise_from
tensorflow.python.framework.errors_impl.NotFoundError: Could not find valid device for node.
Node:{{node Minimum}}
All kernels registered for op Minimum :
  device='XLA_CPU_JIT'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_INT64, DT_BFLOAT16, DT_HALF]
  device='CPU'; T in [DT_FLOAT]
  device='CPU'; T in [DT_HALF]
  device='CPU'; T in [DT_BFLOAT16]
  device='CPU'; T in [DT_DOUBLE]
  device='CPU'; T in [DT_INT32]
  device='CPU'; T in [DT_INT64]
  device='XLA_CPU'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_INT64, DT_BFLOAT16, DT_HALF]
 [Op:Minimum]
```

As such I used a workardound which looks quite awkward:
```
>>> x = tf.constant(1, tf.int16)
>>> y = tf.constant(2, tf.int16)
>>> z = tf.stack([x, y])
>>> tf.math.reduce_min(z)
<tf.Tensor: shape=(), dtype=int16, numpy=1>
>>>
```

This PR adds int16 support for `tf.math.minimum` and `tf.math.maximum`.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
