2019年10月10日木曜日

Juliaの型宣言は、かなり厳密

数値実験をやっていて気がついたけど、Juliaの型宣言はかなり厳密に行われているようだ。

たとえば、xを変数ベクトルとして定義したときに
x[1], 1.0*x[1], x[1]+0.0
などは数学では等価として計算してほしいけど、Juliaでは異なるものとして処理されるようで、最適化ソルバーに入れて結果を見ると違う結果が出てくることがある。

JuMPなど複数のパッケージを使っているので、どのパッケージで異なる処理が入るのかを特定できていないけど、このあたりは気をつけたいところだ。

(理由として推測できるのは、C言語の int 型だと 3/2 が 1 になって、double 型だと 3.0/2.0 が 1.5 になる、みたいなこと、かと思っている。)

0 件のコメント:

コメントを投稿