FIX Handle large lengths and negative lengths in hiwire_get_length. While investigating this bug:

> ```
> Pyodide has suffered a fatal error. Please report this to the Pyodide maintainers.
> The cause of the fatal error was:
> PythonError: OverflowError: Python int too large to convert to C ssize_t
> ```
> 
> _Originally posted by @amitsaha in https://github.com/pyodide/pyodide/issues/2584#issuecomment-1139530294_

I found a different one. Turns out handling lengths correctly is quite hard.
# from http://stackoverflow.com/questions/77999777799977/numpy-vs-cython-speed
# pythran export multiple_sum(float[][])
# setup: import numpy as np ; r = np.random.rand(100,100)
# run: multiple_sum(r)
import numpy as np


def multiple_sum(array):

    rows = array.shape[0]
    cols = array.shape[1]

    out = np.zeros((rows, cols))

    for row in range(0, rows):
        out[row, :] = np.sum(array - array[row, :], 0)

    return out

# from http://stackoverflow.com/questions/77999777799977/numpy-vs-cython-speed
# pythran export multiple_sum(float[][])
# setup: import numpy as np ; r = np.random.rand(100,100)
# run: multiple_sum(r)
import numpy as np


def multiple_sum(array):

    rows = array.shape[0]
    cols = array.shape[1]

    out = np.zeros((rows, cols))

    for row in range(0, rows):
        out[row, :] = np.sum(array - array[row, :], 0)

    return out
