The “Gazinta” Function

Division is the last of the four basic arithmetic operations taught. Addition is easiest, followed by subtraction. Multiplication is merely aggressive addition. Division is a weird un-multiplication combined with subtraction thing, which is probably why educators save the concept for last.

In programming, as in all computerdom, division is handled by the / operator. It’s one of the common symbols used to express division, as illustrated in Figure 1.

Figure 1. Way to express division.

The symbol on the far right in Figure 1 isn’t used in higher mathematics, or even in some countries. It’s the long division construction, popular in American grammar schools, and it’s what I call the gazinta. Also, it reads backwards from the other functions.

For example, the first three expressions in Figure 1 say the same thing: 5 divided by 4. The fourth says, “4 goes into 5,” which is still “5 divided by 4,” but the way I remember it is to say “goes into” or “gazinta.”

The first three forms shown in Figure 1 express ratios, which is really what division is all about. The fourth form — the gazinta — produces a result and a remainder. So the ratio of 5/4 is 1.25, but the gazinta is 1 with 1 remainder.

The C language features a gazinta function, disappointingly called div() and not gazinta(). The function is defined in the stdlib.h header.

The div() function requires two arguments, a numerator and a denominator. The numerator is the number on top the fraction (or ratio). The denominator is on the bottom. So in 5/4, the value 5 is the numerator and 4 is the denominator. For a gazinta, the denominator appears first, then the numerator is inside the ⟌ thing.

At this point, you’re probably wondering why bother with a div() function, and why place it in stdlib.h and not the math.h header? That’s because the div() function doesn’t just divide the numbers. Instead it returns a div_t structure (also defined in stdlib.h). The div_t structure contains two int elements: quot and rem for quotient and remainder, respectively.

So just like the gazinta, the div() function divides two values, returning the quotient and remainder. Here’s sample code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    div_t result;
    int n,d;

    printf("Enter the numerator: ");
    scanf("%d",&n);
    printf("Enter the denominator: ");
    scanf("%d",&d);

    result = div(n,d);
    printf("%d divided by %d equals %d with %d remaining.\n",
            n,
            d,
            result.quot,
            result.rem);

    return(0);
}

A div_t structure result is created at Line 6. The numerator and denominator values are obtained in Lines 9 through 12. The div() function is called at Line 14, and the results displayed in a printf() statement that spans Lines 15 through 19.

Here’s a sample run:

Enter the numerator: 5
Enter the denominator: 4
5 divided by 4 equals 1 with 1 remaining.

This type of code doesn’t deal with real numbers (float values) because, just like long division, all values are integers. It’s also different from the modulus operator (%) because two values are generated, not just the remainder.

2 thoughts on “The “Gazinta” Function

  1. Thanks for this post – for some reason I was completely unaware of the div function. I am sure that on a few occasions I have written two lines of code to do what div does in one operation.

    BTW, there are also ldiv and lldiv versions, returning ldiv_t and lldiv_t respectively.

    When I was at school (England, 1970s) we used what you call gazinta notation. I’m not sure how they teach arithmetic here these days.

    “disappointingly called div() and not gazinta()” – macro? 🙂

  2. I didn’t think up “gazinta.” It comes from a movie or a cartoon where some character used the term to describe long division.

    Regarding the function, occasionally I plow through the libraries to see what’s available. After using C for so long, it surprises me how many functions are available that I’ve never used or didn’t hear of or – worse – wrote my own function that does the same thing!

Leave a Reply