This repository has been archived by the owner on Aug 15, 2019. It is now read-only.
Use a more robust algorithm for uniform random variates #1240
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.
Description
This PR makes a small modification to the
randUniform
utility function, which is used when creating a tensor initialized with uniform random variates and during testing.When
a
andb
are approximately equal, the current algorithm is susceptible to catastrophic cancellation (a truncation of significant digits).This PR modifies the computation of the random variate by replacing the subtraction of
a
andb
with two multiplications, thus scaling the two input values.The rearrangement of terms is found elsewhere, such as GSL, etc.
While the PR does add an additional operation (a multiplication), the effect on performance should be negligible on modern hardware and when run in JavaScript (as compared to, e.g., C or Assembly).
For repository owners only:
Please remember to apply all applicable tags to your pull request.
Tags: FEATURE, BREAKING, BUG, PERF, DEV, DOC, SECURITY
For more info see: https://github.com/tensorflow/tfjs/blob/master/DEVELOPMENT.md
This change is