### math

#### why has erlang redefined something as basic as a remainder?

All our mathematics books have been teaching us that a remainder is always positive. Wiki tells me that a remainder can be a least positive remainder or a least absolute remainder. It is a pretty basic concept which can be very difficult to unlearn for a lot people(including me). It could be cause of weird bugs when a programmer is working with multiple languages. What is the reason behind erlang redefining such a basic concept? Eshell V6.2 (abort with ^G) 1> -5 rem 3. -2 This result is not consistent with either of Least Positive Remainder or Least Absolute Remainder Concept. http://en.wikipedia.org/wiki/Remainder#Integer_division

It is because integer divisions are rounded towards 0. It happens in many other programming languages, for example see this answer about C. Indeed if you consider the division as being defined before the % operation, then we still expect a = (a / b) * b + (a % b). It then comes naturally that 5 / 3 = 1, so 5 % 3 == 2 -5 / 3 = -1, so 5 % 3 == -2 If we rounded toward -infinity instead of towards 0, then -5/3 would be -2, and % would be the modulus operator. Right now it is just a remainder of the division.

### Related Links

Boolean formula encoding

Getting cells in a 2D grid between two angles

how to find the shortest distance in geomatry route?

how to reduce dimensionality of vector

Direction from a normalized vector

matrix norm that is invariant through a change of basis

Convert Cartesian point to point on rotated plane (pic)

Spot light cone direction rotation and orientation inversion

Adding two params of a predicate that aren't static

undefined reference to `tan' but math.h has been included

Computing which side of a line a point is [closed]

Solving the recurrence relation for number of nodes in an AVL tree?

how to cluster curve with kmeans?

Mathematical formula for inverse distance in a range [closed]

Drawing a star - what is sine and cosine actually in reference to?

Type-level arithmetics in OCaml