I agree the imaginary parts should be zero. I do not know why they are not zero. But this is what I found, too small to put in comment. First, Matlab does give zero for the exact same input: format long g mat = [2, 2.161209223472559 + 1.682941969615793*1j; 2.161209223472559 - 1.682941969615793*1j, 2] inv(mat) -0.570919803469126 + 0i 0.616938572560308 + 0.480412449271497i 0.616938572560308 - 0.480412449271497i -0.570919803469126+0i You can get same output in Mathematica by doing the direct computation itself without calling `Inverse` foo[x11_, x12_, x21_, x22_] := Module[{}, {{x22, -x12}, {-x21, x11}}/(x11*x22 - x21*x12)] foo[2, 2.161209223472559 + 1.682941969615793 I, 2.161209223472559 - 1.682941969615793 I, 2] ![Mathematica graphics](https://i.sstatic.net/hChAn.png) It is an exact zero for the complex part: ![Mathematica graphics](https://i.sstatic.net/gSbSl.png) And can see it match the Matlab output. Even compiled version did not resolve the issue (even though told it to run in hardware floating point) cf = Compile[{{x11, _Complex},{x12, _Complex},{x21, _Complex}, {x22,_Complex}}, Inverse[{{x22, -x12}, {-x21, x11}}], RuntimeOptions -> "Speed" ]; cf[2, 2.161209223472559^1 + 1.682941969615793^1 I, 2.161209223472559^1 - 1.682941969615793^1 I, 2] ![Mathematica graphics](https://i.sstatic.net/awkM2.png) If we do break the inverse to 2 parts, and do one by 'hand' and then use `Det` only, then now the accuracy improves a little, and now it is of order `10^-17` foo1[x11_, x12_, x21_, x22_] := Module[{}, {{x22, -x12}, {-x21, x11}}/Det[{{x11, x12}, {x21, x22}}]] foo1[2, 2.161209223472559 + 1.682941969615793 I, 2.161209223472559 - 1.682941969615793 I, 2] ![Mathematica graphics](https://i.sstatic.net/jEWav.png) Here is Maple 2015 result also: mat:=<<2|2.161209223472559 + 1.682941969615793*I>, <2.161209223472559 - 1.682941969615793*I|2>>; LinearAlgebra[MatrixInverse](mat); ![Mathematica graphics](https://i.sstatic.net/2DF8I.png)