--- Final Solver (used for performance test) ---
from typing import Any

import numpy as np


_FAST_LIMITS = {
    np.dtype(np.float64).num: 2047,
    np.dtype(np.int64).num: 2047,
    np.dtype(np.float32).num: 2560,
    np.dtype(np.int32).num: 2560,
}
_outer = np.outer


class Solver:
    __slots__ = ("_outer_same",)

    def __init__(self) -> None:
        self._outer_same = None
        try:
            import numba as nb
        except Exception:
            return

        @nb.njit(fastmath=True, cache=False)
        def outer_same(vec1, vec2):
            rows = vec1.shape[0]
            cols = vec2.shape[0]
            result = np.empty((rows, cols), dtype=vec1.dtype)
            for row in range(rows):
                value = vec1[row]
                for col in range(cols):
                    result[row, col] = value * vec2[col]
            return result

        for dtype in (np.float64, np.float32, np.int64, np.int32):
            sample = np.ones(2, dtype=dtype)
            outer_same(sample, sample)

        self._outer_same = outer_same

    def solve(self, problem, **kwargs) -> Any:
        vec1, vec2 = problem

        try:
            size = vec1.shape[0]
            dtype_num = vec1.dtype.num
            vec2_dtype_num = vec2.dtype.num
        except AttributeError:
            return _outer(vec1, vec2)

        outer_same = self._outer_same
        limit = _FAST_LIMITS.get(dtype_num)
        if (
            outer_same is not None
            and limit is not None
            and size <= limit
            and dtype_num == vec2_dtype_num
        ):
            return outer_same(vec1, vec2)

        if limit is None:
            return _outer(vec1, vec2)

        return vec1[:, None] * vec2
--- End Solver ---
Running performance test...
============================= test session starts ==============================
platform linux -- Python 3.12.13, pytest-9.0.2, pluggy-1.6.0
rootdir: /tests
plugins: anyio-4.13.0, jaxtyping-0.3.9
collected 3 items

../tests/test_outputs.py .
--- Performance Summary ---
Validity: True
Total Baseline Time: 6.5655s
Total Solver Time:   6.9614s
Raw Speedup:         0.9431 x
Final Reward (Score): 1.0000
---------------------------
.F

=================================== FAILURES ===================================
_____________________________ test_solver_speedup ______________________________

performance_results = {'raw_speedup': 0.9431378958885887, 'speedup': 1.0, 'validity': True}

    def test_solver_speedup(performance_results):
        """Checks if the solver effectively optimized the code."""
>       assert performance_results["raw_speedup"] > 1.0, \
            f"Solver was not faster than baseline (Speedup: {performance_results['raw_speedup']:.2f}x)"
E       AssertionError: Solver was not faster than baseline (Speedup: 0.94x)
E       assert 0.9431378958885887 > 1.0

/tests/test_outputs.py:205: AssertionError
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED ../tests/test_outputs.py::test_solver_exists
PASSED ../tests/test_outputs.py::test_solver_validity
FAILED ../tests/test_outputs.py::test_solver_speedup - AssertionError: Solver...
=================== 1 failed, 2 passed in 265.12s (0:04:25) ====================
