This isn't a real problem, but why compare dtype and broadcastable separatly isntead of comparing the type directly?