数値計算と行列式

cpplapackに行列式を直接計算する関数が見当たらなかったのだけど、僕の頭がぼけていたのだろうか。以下、ある意味当たり前のこと。結局は誤差と計算量。
cpplapackには固有値問題を解く関数はそろっている。行列式の計算には固有値を全部かければ良い。数値計算の本を何冊か読むと、やはり固有値問題を解く方法については充実しているけど行列式という言葉はあまり出てこない。一つ気になったのは「要素が全部実数の行列の行列式は実数。一方、固有値複素数固有値を全部かければ実数になるはずだけど、精度と誤差がつきまとう数値計算でcomplex doubleを用いて複素数固有値を全部掛けた時に果たして実数になるのだろうか?」という一点。絶対に虚部がnon-zeroになると思う。固有値の絶対値を全部かければ良いだろうけど、置換の和から計算したものよりも誤差が大きくなったりしないかな。あと、行列式をLU分解してから積を取って求めるのと、置換の和から求めるのってやっぱ前者の方が計算量は少ないのかね。対角化にかかる計算量を調べれば分かるだろうけど、やる気がしない。