Skip to content

Commit e9fa6ec

Browse files
committed
compiler: mssing substraction cxx def
1 parent 1da795e commit e9fa6ec

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

devito/passes/iet/languages/CXX.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ def std_arith(qualifier=None):
4747
return std::complex<_Tp>(b.real() + a, b.imag());
4848
}}
4949
50+
template<typename _Tp, typename _Ti>
51+
{qual}std::complex<_Tp> operator - (const _Ti & a, const std::complex<_Tp> & b){{
52+
return std::complex<_Tp>(a = b.real(), b.imag());
53+
}}
54+
55+
template<typename _Tp, typename _Ti>
56+
{qual}std::complex<_Tp> operator - (const std::complex<_Tp> & b, const _Ti & a){{
57+
return std::complex<_Tp>(b.real() - a, b.imag());
58+
}}
59+
5060
"""
5161

5262

devito/passes/iet/misc.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from devito.passes.iet.engine import iet_pass
1414
from devito.passes.iet.languages.C import CPrinter
1515
from devito.ir.iet.efunc import DeviceFunction, EntryFunction
16-
from devito.symbolics import (ValueLimit, evalrel, has_integer_args, limits_mapper)
16+
from devito.symbolics import (ValueLimit, evalrel, has_integer_args, limits_mapper, Cast)
1717
from devito.tools import Bunch, as_mapper, filter_ordered, split
1818
from devito.types import FIndexed
1919

@@ -235,9 +235,10 @@ def _(expr, lang):
235235

236236
@_lower_macro_math.register(SafeInv)
237237
def _(expr, lang):
238-
eps = 2 * np.finfo(expr.base.dtype).resolution**2
238+
eps = np.finfo(expr.base.dtype).resolution**2
239+
b = Cast('b', dtype=np.float32)
239240
return (('SAFEINV(a, b)',
240-
f'(((a + b) < {eps}F) ? (0.0F) : ((1.0F) / (a)))'),), {}
241+
f'(((a) < {eps}F || ({b}) < {eps}F) ? (0.0F) : ((1.0F) / (a)))'),), {}
241242

242243

243244
@iet_pass

0 commit comments

Comments
 (0)