# SafeMath

This is an utility class with a set of static methods to perform mathematical operations without overflow.

# add

  • static add(x: u64, y: u64): u64
    

    Returns the result of adding one u64 number to another

    Throws if:

    • If the result overflows the u64 type

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.add(<u64>4398046836870, <u64>4398046836871);
    // Result: 8796093673741
    
    const b = SafeMath.add(<u64>18446744073709551615, <u64>1);
    // Error: SafeMath Add Overflow
    

# sub

  • static sub(x: u64, y: u64): u64
    

    Returns the result of substracting y from x

    Throws if:

    • If the result is less than zero

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.sub(<u64>4398046836871, <u64>4398046836870);
    // Result: 1
    
    const b = SafeMath.add(<u64>4398046836870, <u64>4398046836871);
    // Error: SafeMath Sub Overflow
    

# mul

  • static mul(x: u64, y: u64): u128
    

    Returns the result of multiplication x by y

    Throws if:

    • If the division of the result to y is not equal to x

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.mul(<u64>18446744073709551615, <u64>18446744073709551615);
    // result is 40282366920938463463374607431768211455
    

# div

  • static div(x: u64, y: u64): u64
    

    Returns the result of division x to y

    Throws if:

    • If y is equal to zero

    Example:

    import { SafeMath } from 'proton-tsc'
    
    const a = SafeMath.div(<u64>4398046836870, <u64>4);
    // result: 1099511709217
    
    const a = SafeMath.div(<u64>4398046836870, <u64>0);
    // error: SafeMath Div Overflow