ts-data-forge
    Preparing search index...
    PositiveSafeInt: {
        add: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt;
        clamp: (x: number) => PositiveSafeInt;
        div: (
            x: WithSmallInt,
            y: ToNonZeroIntWithSmallInt<PositiveSafeInt>,
        ) => PositiveSafeInt;
        is: (a: number) => a is PositiveSafeInt;
        max: (
            ...values: readonly WithSmallInt<PositiveSafeInt, 40>[],
        ) => PositiveSafeInt;
        MAX_VALUE: SafeUint;
        min: (
            ...values: readonly WithSmallInt<PositiveSafeInt, 40>[],
        ) => PositiveSafeInt;
        MIN_VALUE: 1;
        mul: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt;
        pow: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt;
        random: (
            min?: WithSmallInt<PositiveSafeInt, 40>,
            max?: WithSmallInt<PositiveSafeInt, 40>,
        ) => PositiveSafeInt;
        sub: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt;
    } = ...

    Namespace providing type-safe arithmetic operations for positive safe integers.

    All operations automatically clamp results to the positive safe integer range [1, MAX_SAFE_INTEGER]. This ensures that all arithmetic maintains both the positive constraint and IEEE 754 precision guarantees, preventing precision loss and ensuring results are always positive.

    Type Declaration

    • add: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt

      Adds two PositiveSafeInt values.

      const sum = PositiveSafeInt.add(
      asPositiveSafeInt(1000),
      asPositiveSafeInt(2048),
      );

      assert(sum === 3048);
      assert.ok(PositiveSafeInt.is(sum));
    • clamp: (x: number) => PositiveSafeInt

      Clamps a number to the positive safe integer range.

      const belowRange = PositiveSafeInt.clamp(0);
      const withinRange = PositiveSafeInt.clamp(123);
      const aboveRange = PositiveSafeInt.clamp(Number.MAX_SAFE_INTEGER + 10);

      assert(belowRange === 1);
      assert(withinRange === 123);
      assert(aboveRange === Number.MAX_SAFE_INTEGER);
    • div: (
          x: WithSmallInt,
          y: ToNonZeroIntWithSmallInt<PositiveSafeInt>,
      ) => PositiveSafeInt

      Divides one PositiveSafeInt by another using floor division.

      const quotient = PositiveSafeInt.div(
      asPositiveSafeInt(25),
      asPositiveSafeInt(4),
      );
      const clamped = PositiveSafeInt.div(
      asPositiveSafeInt(5),
      asPositiveSafeInt(50),
      );

      assert(quotient === 6);
      assert(clamped === 1);
    • is: (a: number) => a is PositiveSafeInt

      Type guard to check if a value is a PositiveSafeInt.

      assert.ok(isPositiveSafeInt(1));
      assert.ok(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));
      assert.notOk(isPositiveSafeInt(0));
      assert.ok(PositiveSafeInt.is(42));

      isPositiveSafeInt for usage examples

    • Readonlymax: (...values: readonly WithSmallInt<PositiveSafeInt, 40>[]) => PositiveSafeInt

      Returns the larger of two PositiveSafeInt values.

      const largest = PositiveSafeInt.max(
      asPositiveSafeInt(10),
      asPositiveSafeInt(5),
      );

      assert(largest === 10);
    • ReadonlyMAX_VALUE: SafeUint

      The maximum safe integer value (2^53 - 1).

    • Readonlymin: (...values: readonly WithSmallInt<PositiveSafeInt, 40>[]) => PositiveSafeInt

      Returns the smaller of two PositiveSafeInt values.

      const smallest = PositiveSafeInt.min(
      asPositiveSafeInt(10),
      asPositiveSafeInt(5),
      );

      assert(smallest === 5);
    • ReadonlyMIN_VALUE: 1

      The minimum value for a positive safe integer.

    • mul: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt

      Multiplies two PositiveSafeInt values.

      const product = PositiveSafeInt.mul(
      asPositiveSafeInt(50),
      asPositiveSafeInt(20),
      );

      assert(product === 1000);
      assert.ok(PositiveSafeInt.is(product));
    • pow: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt

      Raises a PositiveSafeInt to the power of another PositiveSafeInt.

      const base = asPositiveSafeInt(3);
      const exponent = asPositiveSafeInt(3);
      const power = PositiveSafeInt.pow(base, exponent);

      assert(power === 27);
    • random: (
          min?: WithSmallInt<PositiveSafeInt, 40>,
          max?: WithSmallInt<PositiveSafeInt, 40>,
      ) => PositiveSafeInt

      Generates a random PositiveSafeInt value within the valid range.

      const min = asPositiveSafeInt(1);
      const max = asPositiveSafeInt(6);
      const randomValue = PositiveSafeInt.random(min, max);

      assert.ok(PositiveSafeInt.is(randomValue));
      assert.ok(randomValue >= 1 && randomValue <= 6);
    • sub: (x: WithSmallInt, y: WithSmallInt) => PositiveSafeInt

      Subtracts one PositiveSafeInt from another.

      const difference = PositiveSafeInt.sub(
      asPositiveSafeInt(10),
      asPositiveSafeInt(20),
      );

      assert(difference === 1);
      assert.ok(PositiveSafeInt.is(difference));