Вы можете просто использовать основной метод исключения Гаусса.Подсчет количества ненулевых строк даст вам ранг.Но этот метод не является действительно численно устойчивым.Как говорится в статье в Википедии, есть несколько других алгоритмов, таких как разложение по сингулярным значениям (SVD) или разложение QR с поворотом.Для обоих вы легко сможете найти базовые реализации.
Но работая с точными числами, необходимыми для этого, вы всегда должны думать о числовых неточностях IEEE-представления чисел в компьютере.Подробнее об этом читайте на: http://en.wikipedia.org/wiki/IEEE_754