Skip to content

Tags: stillwater-sc/mtl5

Tags

v5.2.1

Toggle v5.2.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(operation): add scaled project_onto / embed_into for quantization (

#58)

* feat(operation): add scaled project_onto / embed_into for quantization

Add overloads that accept a scale parameter for dynamic range mapping:

  dst(i) = static_cast<Target>(scale * src(i))

Essential for quantization workflows where source and target types have
fundamentally different dynamic ranges (e.g., float [-1,1] -> int8
[-127,127] requires scale=127, and the inverse for dequantization).

Supports dense_vector and dense2D for both project_onto and embed_into.
Existing unscaled overloads unchanged (backward compatible).

Resolves #57

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(operation): address CodeRabbit review on scaled projection

- Constrain ScaleType to Scalar concept (was bare typename)
- Add saturating_cast<Target> for integer targets to prevent signed
  overflow UB -- clamps to [numeric_limits::min, max] before cast
- Floating-point targets pass through without clamping
- Add saturation test: values outside int8 range clamp to -128/127

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(operation): fix NaN handling and remove unused include

- Handle NaN in saturating_cast: NaN -> 0 for integer targets (avoids
  UB from float-to-int cast of NaN)
- Separate integer-from-float and integer-from-integer paths
- Remove unused <algorithm> include, add <cmath> for std::isnan

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v5.2.0

Toggle v5.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(ci): remove duplicate CI from release workflow (#15)

The tag push already triggers ci.yml independently (via on.push.tags).
The release workflow was calling ci.yml as a reusable workflow, running
the full 8-platform matrix a second time.

Now release.yml only creates the GitHub Release (version extraction,
changelog generation, gh-release). CI runs once via its own trigger.

Also removes the now-unnecessary workflow_call trigger from ci.yml.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v5.1.0

Toggle v5.1.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
modernization of MTL4 to concepts and C++20