|
21 | 21 | 'power', 'rad2deg', 'radians', 'reciprocal', 'remainder',
|
22 | 22 | 'right_shift', 'rint', 'sign', 'signbit', 'sin',
|
23 | 23 | 'sinh', 'spacing', 'sqrt', 'square', 'subtract', 'tan', 'tanh',
|
24 |
| - 'true_divide', 'trunc'] |
| 24 | + 'true_divide', 'trunc', 'vecdot'] |
25 | 25 | arrayfuncdisp = ['real', 'round']
|
26 | 26 |
|
| 27 | +for name in ufuncs: |
| 28 | + f = getattr(np, name, None) |
| 29 | + if not isinstance(f, np.ufunc): |
| 30 | + raise ValueError(f"Bench target `np.{name}` is not a ufunc") |
27 | 31 |
|
28 |
| -for name in dir(np): |
29 |
| - if isinstance(getattr(np, name, None), np.ufunc) and name not in ufuncs: |
30 |
| - print("Missing ufunc %r" % (name,)) |
| 32 | +all_ufuncs = (getattr(np, name, None) for name in dir(np)) |
| 33 | +all_ufuncs = set(filter(lambda f: isinstance(f, np.ufunc), all_ufuncs)) |
| 34 | +bench_ufuncs = set((getattr(np, name, None) for name in ufuncs)) |
| 35 | + |
| 36 | +missing_ufuncs = all_ufuncs - bench_ufuncs |
| 37 | +if len(missing_ufuncs) > 0: |
| 38 | + missing_ufunc_names = [f.__name__ for f in missing_ufuncs] |
| 39 | + raise NotImplementedError( |
| 40 | + "Missing benchmarks for ufuncs %r" % missing_ufunc_names) |
31 | 41 |
|
32 | 42 |
|
33 | 43 | class ArrayFunctionDispatcher(Benchmark):
|
|
0 commit comments