From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Kevin Grittner <kgrittn(at)ymail(dot)com> |
Cc: | Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>, Stephen Frost <sfrost(at)snowman(dot)net>, Robert Haas <robertmhaas(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, PostgreSQL Developers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: add modulo (%) operator to pgbench |
Date: | 2014-09-24 17:53:42 |
Message-ID: | 20268.1411581222@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Kevin Grittner <kgrittn(at)ymail(dot)com> writes:
> Assuming that all values are integers, for:
> x = a / b;
> y = a % b;
> If b is zero either statement must generate an error.
> If a and b have the same sign, x must be positive; else x must be negative.
> It must hold that abs(x) is equal to abs(a) / abs(b).
> It must hold that ((x * b) + y) is equal to a.
Not sure about the third of those statements, but the last one is
definitely a requirement.
I think the only defensible choice, really, is that % should be defined
so that a = ((a / b) * b) + (a % b). It is perfectly reasonable to
provide other division/modulus semantics as functions, preferably in
matching pairs that also satisfy this axiom. But the two operators need
to agree, or you'll have surprised users.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2014-09-24 18:19:06 | Re: better atomics - v0.6 |
Previous Message | Kevin Grittner | 2014-09-24 17:25:52 | Re: add modulo (%) operator to pgbench |