mod function return wrong answer?
이전 댓글 표시
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
Sindar
2020년 7월 5일
What value would you like it to take?
mod(a,m) is expressed as:
b = a - m.*floor(a./m);
so, you have b = -eps - (1)*floor(-eps) = -eps - (-1) = 1
rem(-eps,1) will return -eps
madhan ravi
2020년 7월 5일
편집: madhan ravi
2020년 7월 5일
Sindar I suggest moving your comment as an answer
Hiroaki Yamamoto
2020년 7월 5일
답변 (1개)
madhan ravi
2020년 7월 5일
>> mod( -eps, 1 ) < 1
ans =
logical
1
댓글 수: 4
Hiroaki Yamamoto
2020년 7월 5일
madhan ravi
2020년 7월 5일
편집: madhan ravi
2020년 7월 5일
>> sprintf('%.32f', mod(-1e-17, 1))
ans =
'1.00000000000000000000000000000000'
>> sprintf('%.32f', mod(-eps, 1))
ans =
'0.99999999999999977795539507496869'
Hiroaki Yamamoto
2020년 7월 5일
madhan ravi
2020년 7월 5일
Practically speaking it depends on what m is.
카테고리
도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!