純粋に数値的なシステムで計算する場合,タスクに対する数の表現が不十分であるため,失敗することがよくあります.例えば,IEEE浮動小数点のオーバーフローあるいはアンダーフローが起きたときや,浮動小数点計算に複素数が現れたとき等です.
Mathematica は型の動的切替え機能を使って,ユーザの介入なしでこれらの問題を検出し,数のシステムを切り替えます.従って,Mathematica 以外のシステムや数値計算のみのシステムでは失敗するような場合にも,Mathematica は正確な結果が返せることがよくあるのです.
型の動的切替え機能の例は,微分方程式の数値ソルバNDSolveを使っているときに見られます.当初は実数解だったものが計算中に複素数になると,自動的にMathematica のjust-in-timeコンパイラが起動され,最適化されたバイトコードが再コンパイルされます.
この微分方程式の解は,t=1で複素数になっています.Mathematica を使わなかったら,問題を解く前にこのことを予想していなければなりません.