Repository navigation
Fix off-by-one calculation of number of points - #42
Merged
Merged
Conversation
When changing a linear scan positioner step size (PnSI), the number of points (NPTS) is sometimes incorrectly calculated as one less than it should be. For example, with positioner 1 configured as SCAN MODE: LINEAR START: 0.0 CENTER: -0.7 END: -1.4 STEP: -0.05 WIDTH: -1.4 ABS/REL: RELATIVE , NPTS is calculated as 28, but that's wrong; it should be 29. This miscalculation occurs when assigning the result of the calculated NPTS double expression to the NPTS variable of type epicsInt32. In the above example, the calculated NPTS double expression evaluates to 28.9999999999999964 , but when assigned to the NPTS variable of type epicsInt32, the value becomes 28 which is of course wrong. Fix this and similar NPTS variable assignments by rounding the result of the double expression before assigning to the NPTS variable of type epicsInt32.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When changing a linear scan positioner step size (PnSI), the number of points (NPTS) is sometimes incorrectly calculated as one less than it should be. Fix this and similar NPTS variable assignments by rounding the result of the
doubleexpression before assigning to the NPTS variable of typeepicsInt32. See also the Same sscan record step size for all positioners not possible? EPICS Tech-Talk mailing list thread.