Skip to content

Fix tl.rand range assertion: [0, 1) not [0, 1]#9966

Merged
Jokeren merged 1 commit into
triton-lang:mainfrom
wes-turner:fix-rand-test-assertion
Apr 8, 2026
Merged

Fix tl.rand range assertion: [0, 1) not [0, 1]#9966
Jokeren merged 1 commit into
triton-lang:mainfrom
wes-turner:fix-rand-test-assertion

Conversation

@wes-turner
Copy link
Copy Markdown
Contributor

tl.rand returns values in the half-open interval [0, 1), not the closed interval [0, 1]. The test assertion used x <= 1, which would have accepted 1.0 as a valid output.

Philox-based float generation masks the upper mantissa bits and sets the exponent to produce values strictly less than 1.0. A value of exactly 1.0 indicates a bug (e.g. broken seed delivery returning all-ones from the uint-to-float conversion).

New contributor declaration

  • I am not making a trivial change, such as fixing a typo in a comment.

  • I have written a PR description following these
    rules.

  • I have run pre-commit run --from-ref origin/main --to-ref HEAD.

  • Select one of the following.

    • I have added tests.
      • /test for lit tests
      • /unittest for C++ tests
      • /python/test for end-to-end tests
    • This PR does not need a test because it's fixing a test.
  • Select one of the following.

    • I have not added any lit tests.
    • The lit tests I have added follow these best practices,
      including the "tests should be minimal" section. (Usually running Python code
      and using the instructions it generates is not minimal.)

tl.rand returns values in the half-open interval [0, 1), not the closed
interval [0, 1]. The test assertion used x <= 1, which would have accepted 1.0
as a valid output.

Philox-based float generation masks the upper mantissa bits and sets the
exponent to produce values strictly less than 1.0. A value of exactly 1.0
indicates a bug (e.g. broken seed delivery returning all-ones from the
uint-to-float conversion).
@wes-turner wes-turner requested a review from ptillet as a code owner April 8, 2026 17:57
@Jokeren Jokeren merged commit b64f4cf into triton-lang:main Apr 8, 2026
9 checks passed
plognjen pushed a commit to plognjen/triton that referenced this pull request Apr 14, 2026
tl.rand returns values in the half-open interval [0, 1), not the closed
interval [0, 1]. The test assertion used x <= 1, which would have
accepted 1.0 as a valid output.

Philox-based float generation masks the upper mantissa bits and sets the
exponent to produce values strictly less than 1.0. A value of exactly
1.0 indicates a bug (e.g. broken seed delivery returning all-ones from
the uint-to-float conversion).

<!---
The core Triton is a small number of people, and we receive many PRs
(thank
you!).  To help us review your code more quickly, **if you are a new
contributor (less than 3 PRs merged) we ask that you complete the
following
tasks and include the filled-out checklist in your PR description.**

Complete the following tasks before sending your PR, and replace `[ ]`
with
`[x]` to indicate you have done them.
-->

# New contributor declaration
- [x] I am not making a trivial change, such as fixing a typo in a
comment.

- [x] I have written a PR description following these
  [rules](https://cbea.ms/git-commit/#why-not-how).

- [x] I have run `pre-commit run --from-ref origin/main --to-ref HEAD`.

- Select one of the following.
  - [ ] I have added tests.
    - `/test` for `lit` tests
    - `/unittest` for C++ tests
    - `/python/test` for end-to-end tests
  - [x] This PR does not need a test because it's fixing a test.

- Select one of the following.
  - [x] I have not added any `lit` tests.
- [ ] The `lit` tests I have added follow these [best
practices](https://mlir.llvm.org/getting_started/TestingGuide/#filecheck-best-practices),
including the "tests should be minimal" section. (Usually running Python
code
    and using the instructions it generates is not minimal.)

Co-authored-by: Wes Turner <westurner@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants