Q:

macro equation giving bogus value?

When I run my code, for Y I am consistently getting the value -2147483648, regardless of what value y was fed into my equation.
Here is my code.
#define   MAX                          1000
#define EQ(y)           ((2*(pow(y, 4)))+1)

int check(int value);

int main()
{
    int i, y, x;
    for(y = 1; y < MAX; y++)
    {
        i = EQ(y);
        if(check(i))
            printf("combination found: x = %d, y = %d", sqrt(i), y);
    }
}

int check(int value)
{
    int x = sqrt(value);
    if ((x*x) == value)
        return 1;
    else
    {
        return 0;
    }
}

After reviewing my code, I realized my problem was with my "int x = sqrt(value)". Aside from the problem with the "value" variable being an int, of course, a bogus value was still being returned due to the fact that the purpose of check is to evaluate whether or not (2*(pow(y, 4)))+1) returned a perfect whole square for any given value of y, and this was not possible due to variable x in check(double value) being datatype integer.
UPDATE: I rewrote my code as follows. I still don't get any correct returns 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

/* 
 * the solution I implemented basically involved dropping x from the equation, solving for y,  checking to see if it has a 
 * perfect square root. if it does, then x = the squareroot of y in the function EQ. 
 * original problem: for equation x^2 - 2y^4 + 1 = 0, find all possible solutions up to      arbitrary maximum
*/

#define   MAX                        100000
#define EQ(g)           (((pow(g, 4.0)))+1)

int check(double value);

int main()
{
    int y, x;
    double i;
    for(y = 1; y < MAX; y++)
    {
        i = EQ(y);
        if(x = check(i) > 0)
            printf("combination found: x = %d, y = %d\n", y, x);
    }
}

int check(double value)
{
    double x = sqrt(value);
    int n = (int) x;
    printf("%d\n%f\n%f\n", n*n, value, x);
    if (n*n == value)
        return n*n;
    else
        return 0;
}

Read the comments are the top of my code, and the purpose for this selection should be pretty obvious.

A:

In reference to your updated question, this line:
if(x = check(i) > 0)

needs to be parenthesized:
if((x = check(i)) > 0)

