Skip to content

Instantly share code, notes, and snippets.

@zeroeth
Created October 1, 2014 14:36
Show Gist options
  • Select an option

  • Save zeroeth/8749721982770efbe78b to your computer and use it in GitHub Desktop.

Select an option

Save zeroeth/8749721982770efbe78b to your computer and use it in GitHub Desktop.
C modulus operator for negative numbers
#include <stdio.h>
#include <assert.h>
int modulo(int dividend, int divisor)
{
int remainder = dividend % divisor;
if(remainder < 0) {
return remainder + divisor;
}
return remainder;
}
void test_non_symmetric_cycle()
{
printf("test: \"numbers are non symmetric about 0\"\n");
assert( modulo( 10, 3) == 1 );
assert( modulo( 7, 3) == 1 );
assert( modulo( 4, 3) == 1 );
assert( modulo( 3, 3) == 0 );
assert( modulo( 2, 3) == 2 );
assert( modulo( 1, 3) == 1 );
assert( modulo( 0, 3) == 0 );
assert( modulo( -1, 3) == 2 );
assert( modulo( -2, 3) == 1 );
assert( modulo( -3, 3) == 0 );
assert( modulo( -4, 3) == 2 );
assert( modulo( -7, 3) == 2 );
assert( modulo(-10, 3) == 2 );
}
int main(int argc, char **argv)
{
test_non_symmetric_cycle ( );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment