Added operators for ceil and floor.

上级 92194ff9
......@@ -1013,6 +1013,24 @@ class Sgn(UnaryScalarOp):
return "%(z)s = (%(x)s >= 0) ? (%(x)s == 0) ? 0.0 : 1.0 : -1.0;" % locals()
sgn = Sgn(same_out, name = 'sgn')
class Ceil(UnaryScalarOp):
def impl(self, x):
return numpy.ceil(x)
def grad(self, (x,), (gz,)):
return None,
def c_code(self, node, name, (x,), (z,), sub):
return "%(z)s = ceil(%(x)s);" % locals()
ceil = Ceil(same_out, name = 'ceil')
class Floor(UnaryScalarOp):
def impl(self, x):
return numpy.floor(x)
def grad(self, (x,), (gz,)):
return None,
def c_code(self, node, name, (x,), (z,), sub):
return "%(z)s = floor(%(x)s);" % locals()
floor = Floor(same_out, name = 'ceil')
class IRound(UnaryScalarOp):
def impl(self, x):
return numpy.asarray(numpy.round(x), dtype = 'int64')
......
......@@ -1383,6 +1383,14 @@ def log10(a):
def sgn(a):
"""sign of a"""
@_scal_elemwise
def ceil(a):
"""ceiling of a"""
@_scal_elemwise
def floor(a):
"""floor of a"""
@_scal_elemwise
def iround(a):
"""int(round(a))"""
......
......@@ -112,6 +112,14 @@ def log10_inplace(a):
def sgn_inplace(a):
"""sign of `a` (inplace on `a`)"""
@_scal_inplace
def ceil_inplace(a):
"""ceil of `a` (inplace on `a`)"""
@_scal_inplace
def floor_inplace(a):
"""floor of `a` (inplace on `a`)"""
@_scal_inplace
def iround_inplace(a):
"""int(round(a)) (inplace on `a`)"""
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论