mod function return wrong answer?

6 ビュー (過去 30 日間)
Hiroaki Yamamoto
Hiroaki Yamamoto 2020 年 7 月 4 日
コメント済み: madhan ravi 2020 年 7 月 5 日
How can I make sure mod(a,b) returns value less than b, without explicitly calling min( mod(a,b), b )?
mod( -eps, 1 ) = 1 when eps ~ 10^-17.
Numerical accuracy is not an issue, but I need mod( a, 1 ) be less than 1.
  3 件のコメント
madhan ravi
madhan ravi 2020 年 7 月 5 日
編集済み: madhan ravi 2020 年 7 月 5 日
Sindar I suggest moving your comment as an answer
Hiroaki Yamamoto
Hiroaki Yamamoto 2020 年 7 月 5 日
I expected mod( a, m ) < m (less than m),
but numerically mod(a, m) <= m (less than or equal to m) is the result when a = -1e-17 and m = 1.
If, internally, 1 - 10^-17 = 1 is calculated and returned, I think 0 is the mathematically correct return value rather than 1.

サインインしてコメントする。

回答 (1 件)

madhan ravi
madhan ravi 2020 年 7 月 5 日
>> mod( -eps, 1 ) < 1
ans =
logical
1
  4 件のコメント
Hiroaki Yamamoto
Hiroaki Yamamoto 2020 年 7 月 5 日
My question is, mathematically which of the following is correct or intended to be implemented.
1) mod(a, m) < m
or
2) mod(a, m) <= m.
Practically, I found mod(a,m) = m can happen and I do explicit check and avoid problems caused by the case mod(a,m) = m.
madhan ravi
madhan ravi 2020 年 7 月 5 日
Practically speaking it depends on what m is.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by