import numpy as np
# Test Case 2: A(2,3,4) contract axes [1,2] with B(3,4,5) axes [0,1] → (2,5)
A = np.array(list(range(1, 25)), dtype=np.float32).reshape(2, 3, 4, order='F')
B = np.array(list(range(1, 61)), dtype=np.float32).reshape(3, 4, 5, order='F')
print("\nTest 2:")
print("A shape:", A.shape)
print("B shape:", B.shape)
result2 = np.tensordot(A, B, axes=([1, 2], [0, 1]))
print("\nResult shape:", result2.shape)
print("Result:")
print(result2)
print("\nResult flattened (column-major):")
print(result2.flatten(order='F'))
aW1wb3J0IG51bXB5IGFzIG5wCgojIFRlc3QgQ2FzZSAyOiBBKDIsMyw0KSBjb250cmFjdCBheGVzIFsxLDJdIHdpdGggQigzLDQsNSkgYXhlcyBbMCwxXSDihpIgKDIsNSkKQSA9IG5wLmFycmF5KGxpc3QocmFuZ2UoMSwgMjUpKSwgZHR5cGU9bnAuZmxvYXQzMikucmVzaGFwZSgyLCAzLCA0LCBvcmRlcj0nRicpCkIgPSBucC5hcnJheShsaXN0KHJhbmdlKDEsIDYxKSksIGR0eXBlPW5wLmZsb2F0MzIpLnJlc2hhcGUoMywgNCwgNSwgb3JkZXI9J0YnKQoKcHJpbnQoIlxuVGVzdCAyOiIpCnByaW50KCJBIHNoYXBlOiIsIEEuc2hhcGUpCnByaW50KCJCIHNoYXBlOiIsIEIuc2hhcGUpCgpyZXN1bHQyID0gbnAudGVuc29yZG90KEEsIEIsIGF4ZXM9KFsxLCAyXSwgWzAsIDFdKSkKCnByaW50KCJcblJlc3VsdCBzaGFwZToiLCByZXN1bHQyLnNoYXBlKQpwcmludCgiUmVzdWx0OiIpCnByaW50KHJlc3VsdDIpCnByaW50KCJcblJlc3VsdCBmbGF0dGVuZWQgKGNvbHVtbi1tYWpvcik6IikKcHJpbnQocmVzdWx0Mi5mbGF0dGVuKG9yZGVyPSdGJykpCg==
Test 2:
('A shape:', (2, 3, 4))
('B shape:', (3, 4, 5))
('\nResult shape:', (2, 5))
Result:
[[1222. 2950. 4678. 6406. 8134.]
[1300. 3172. 5044. 6916. 8788.]]
Result flattened (column-major):
[1222. 1300. 2950. 3172. 4678. 5044. 6406. 6916. 8134. 8788.]