
#if  ( USE_SIGNED_MOD_T )
// VERSIONS FOR *SIGNED* MODTYPE:

inline smod_t
add_mod_mod(const smod_t a, const smod_t b)
{
    umod_t x = (umod_t)a+(umod_t)b;

    if( x>=(umod_t)MODULUS )  x -= MODULUS;

#if  ( MOD_PARANOIA )
    assert( (smod_t)x>=0 );
    assert( (mod_t)x<MODULUS );
#endif

    return (smod_t)x;
}
// ============ end ADD_MOD_MOD ===========


inline smod_t
sub_mod_mod(const smod_t a, const smod_t b)
{
    a -= b;

    if( a<0 )  a += MODULUS;

#if  ( MOD_PARANOIA )
    assert( a>=0 );
    assert( (mod_t)a<MODULUS );
#endif

    return a;
}
// ============ end SUB_MOD_MOD ===========

#else // USE_SIGNED_MOD_T

