def METHOD_NAME(implementation, dtype, storage):
    sdfg = make_sdfg(implementation, dtype, storage)
    solve_sdfg = sdfg.compile()
    np_dtype = getattr(np, dtype.to_string())
    # this is what we are trying to do, using getrf (LU factorize the matrix a) and getrs (solve the system for b as rhs)
    a1 = np.array([[1, 2], [3, 5]], dtype=np_dtype)
    b1 = np.array([1, 2], dtype=np_dtype)
    x = np.linalg.solve(a1, b1)
    # verify if it works in numpy :)
    if not np.allclose(np.dot(a1, x), b1):
        raise ValueError("NumPy solve returned wrong result")
    lapack_status1 = np.array([-1], dtype=np.int32)
    lapack_status2 = np.array([-1], dtype=np.int32)
    a2 = np.copy(a1)  # a input will be overwritten by its lu factorization (by getrf)
    b2 = np.copy(b1)  # rhs input will be overwritten by the solution (by getrs)
    solve_sdfg(A=a2,
               B=b2,
               result_getrf=lapack_status1,
               result_getrs=lapack_status2,
               pivots=np.ndarray([0, 0], dtype=np.int32),
               n=2)
    if np.allclose(np.dot(a1, b2), b1):
        print("Test ran successfully for {}.".format(implementation))
    else:
        print(b2)
        print(np.dot(a1, b2) - b1)
        raise ValueError("Validation error!")