by Igor Kulakovskiy (matrix inverse)