提交 04b8762b authored 作者: Olivier Breuleux's avatar Olivier Breuleux

added switch op

上级 5ccd963d
...@@ -441,6 +441,18 @@ class InRange(LogicalComparison): ...@@ -441,6 +441,18 @@ class InRange(LogicalComparison):
inopenrange = InRange(True, True) inopenrange = InRange(True, True)
inclosedrange = InRange(False, False) inclosedrange = InRange(False, False)
class Switch(ScalarOp):
nin = 3
def impl(self, cond, ift, iff):
return ift if cond else iff
def c_code(self, node, name, (cond, ift, iff), (z, ), sub):
return "%(z)s = %(cond)s ? %(ift)s : %(iff)s;" % locals()
def grad(self, (cond, ift, iff), (gz, )):
return None, switch(cond, gz, 0), switch(cond, 0, gz)
def output_types(self, (cond_t, ift_t, iff_t)):
return upcast_out(ift_t, iff_t)
switch = Switch()
#################### ####################
# BIT-WISE OPERATORS # BIT-WISE OPERATORS
#################### ####################
......
...@@ -910,6 +910,15 @@ def neq(a, b): ...@@ -910,6 +910,15 @@ def neq(a, b):
"""a != b""" """a != b"""
##########################
# Condition
##########################
@_scal_elemwise
def switch(cond, ift, iff):
"""if cond then ift else iff"""
########################## ##########################
# Bit-wise # Bit-wise
########################## ##########################
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论