裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

modulus は「絶対値」じゃない --- その後

2021年09月10日 | ブログラミング

modulus は「絶対値」じゃない
https://blog.goo.ne.jp/r-de-r/e/a6ddf31b879b083d6d62923310aec2ac

であるが,

要約すると

> 30284005485024840 %% 7
[1] 4

> 30284005485024840 %% 6
[1] 0
 警告メッセージ:
 絶対値で精度が完全に失われた可能性があります  

ということだったが,最近の R  では様相が違うようである。

事情により最新とは言えない R version 4.0.5 であるが,

> 30284005485024840 %% 7
[1] 3

> 30284005485024840 %% 6
[1] 0

最初の答えは 4 ではなく 3 であるし,

二番目の答えは 0 であるが,おかしなエラーメッセージは表示されない。

R 自身の多精度演算ライブラリの gmp でも確かめたが,

> library(gmp)

> as.bigz(30284005485024840) %% 7
Big Integer ('bigz') :
[1] 3

> as.bigz(30284005485024840) %% 6
Big Integer ('bigz') :
[1] 0

なので,今の状態が正しいようだ。

整数演算が自動的に多倍長で行われる Python でも

30284005485024840 % 7 # 3
30284005485024840 % 6 # 0

Julia でも

BigInt(30284005485024840) % 7 # 3
BigInt(30284005485024840) % 6 # 0

R の以前のざまは,何だったのか。

ということで,「 絶対値で精度が完全に失われた可能性があります 」という珍訳メッセージもお役御免と言うことだろうか。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 家紋シリーズ 片喰(2) 丸に... | トップ | Julia で Python プログラム... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事