mod function return wrong answer?

13 Ansichten (letzte 30 Tage)
Hiroaki Yamamoto
Hiroaki Yamamoto am 4 Jul. 2020
Kommentiert: madhan ravi am 5 Jul. 2020
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 Kommentare
madhan ravi
madhan ravi am 5 Jul. 2020
Bearbeitet: madhan ravi am 5 Jul. 2020
Sindar I suggest moving your comment as an answer
Hiroaki Yamamoto
Hiroaki Yamamoto am 5 Jul. 2020
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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

madhan ravi
madhan ravi am 5 Jul. 2020
>> mod( -eps, 1 ) < 1
ans =
logical
1
  4 Kommentare
Hiroaki Yamamoto
Hiroaki Yamamoto am 5 Jul. 2020
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 am 5 Jul. 2020
Practically speaking it depends on what m is.

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by