diff --git a/arraycontext/fake_numpy.py b/arraycontext/fake_numpy.py index e5c281c415fad36cd838f71186b6373354160603..97ee9ef85030713062c4bdfd3e127a52e6ed9e9c 100644 --- a/arraycontext/fake_numpy.py +++ b/arraycontext/fake_numpy.py @@ -179,19 +179,6 @@ class BaseFakeNumpyLinalgNamespace: if isinstance(ary, Number): return abs(ary) - if is_array_container(ary): - import numpy.linalg as la - return la.norm( - [self.norm(subary, ord=ord) - for _, subary in serialize_container(ary)], - ord=ord) - - if len(ary.shape) != 1: - raise NotImplementedError("only vector norms are implemented") - - if ary.size == 0: - return 0 - if ord is None: ord = 2 @@ -213,6 +200,19 @@ class BaseFakeNumpyLinalgNamespace: for _, subary in serialize_container(ary)], ord=ord) + if is_array_container(ary): + import numpy.linalg as la + return la.norm( + [self.norm(subary, ord=ord) + for _, subary in serialize_container(ary)], + ord=ord) + + if len(ary.shape) != 1: + raise NotImplementedError("only vector norms are implemented") + + if ary.size == 0: + return 0 + if ord == np.inf: return self._array_context.np.max(abs(ary)) elif isinstance(ord, Number) and ord > 0: