| f | from numbers import Real | f | from numbers import Real | 
             | from types import FunctionType |  | from types import FunctionType | 
             |  |  |  | 
             | class fixed(type): |  | class fixed(type): | 
             |  |  |  | 
            | n |     def __new__(metacls, name, parents, ns, ndigits=3): | n |     def __new__(metaclass, name, parents, ns, ndigits=3): | 
             |         for (i, j) in ns.items(): |  |         for (i, j) in ns.items(): | 
             |             if isinstance(j, FunctionType): |  |             if isinstance(j, FunctionType): | 
             |  |  |  | 
             |                 def new(*args, _fun=j, **kwargs): |  |                 def new(*args, _fun=j, **kwargs): | 
            | n |                     ans = _fun(*args, **kwargs) | n |                     res = _fun(*args, **kwargs) | 
             |                     if isinstance(ans, Real): |  |                     if isinstance(res, Real): | 
             |                         return round(ans, ndigits) |  |                         return round(res, ndigits) | 
             |                     else: |  |                     else: | 
            | n |                         return ans | n |                         return res | 
             |                 ns[i] = new |  |                 ns[i] = new | 
            | t |         return super().__new__(metacls, name, parents, ns) | t |         return super().__new__(metaclass, name, parents, ns) |