def METHOD_NAME(
    diffs: np.ndarray, comb_inds: np.ndarray, ndims: int, npoints: int
) -> np.ndarray:
    """
    Finds the numerators of the interpolation weights, which are the areas of the hypercubes
    formed by the points and the grid points that contain them.
    Parameters
    ----------
    diffs : np.ndarray
        A (2, ndim, npoints) that contains the forward and backward differences of point coordinates.
        and the grid points that contain them along every dimension.
    comb_inds : np.ndarray
        An array with all the 2**ndim possible combinations of 0s and 1s (fwd and bwd differences).
    ndims : int
        The number of dimensions.
    npoints : int
        The number of points.
    Returns
    -------
    np.ndarray
        The numerators of the interpolation weights.
    """
    numers = np.ones((2**ndims, npoints), dtype=np.float64)
    for i in range(2**ndims):
        for d, j in enumerate(comb_inds[i]):
            numers[i, :] *= diffs[j, d, :]
    return numers