If I understand you correctly, you can evaluate the above expression as:
ne.evaluate('where(a>b, a, b) + log1p (exp (-abs (a - b)))')
Here it is an actual example:
In []: a = np.arange(1e7)
In []: b = a + 1
In []: time np.where(a>b, a, b) + np.log1p (np.exp (-np.abs (a - b)))
CPU times: user 1.11 s, sys: 1.20 s, total: 2.31 s
Wall time: 6.36 s
Out[]:
array([ 1.31326169e+00, 2.31326169e+00, 3.31326169e+00, ...,
9.99999831e+06, 9.99999931e+06, 1.00000003e+07])
In []: time ne.evaluate('where(a>b, a, b) + log1p (exp (-abs (a - b)))')
CPU times: user 0.55 s, sys: 0.12 s, total: 0.68 s
Wall time: 0.43 s
Out[]:
array([ 1.31326169e+00, 2.31326169e+00, 3.31326169e+00, ...,
9.99999831e+06, 9.99999931e+06, 1.00000003e+07])
[not using VML here]
--
Francesc Alted