Помогите с программой, которая решает математический пример

Программа принимает значения m и n и выводит результат G. Так же она проверяет на корректность ввода по ОДЗ и введённые значения умножает на Pi для удобства.

Пример, по которому писалась программа

Программа, которую я написал, не выводит верный результат. Проверял по PhotoMath. При m = 2Pi и n = Pi PhotoMath выводит "не определён", а программа "0.000000"

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
    double m, n, G, pi = 3.1415926;
    scanf("%lf %lf", &m, &n);
    m = m*pi;
    n = n*pi;
    if ((tan(m/n) > 0) || (n != 0) || ( ((m/n)-(pi/2))-(int)((m/n)-(pi/2))=0 ))
    {
        G = (sqrt(fabs(m-n)) - sin(m) * cos (n)) / (log(tan(m/n)) + exp(pow(m, 2)));
        printf("%lf", &G);
    } else
    {
        printf("Переменные m и/или n выходят за пределы ООФ");
    }
}

Ответы (1 шт):

Автор решения: Harry

Я бы делал так:

int main()
{
    double m, n, pi = 3.1415926;
    scanf("%lf %lf", &m, &n);
    m = m*pi;
    n = n*pi;
    if (!(n == 0 || tan(m/n) <= 0))
    {
        double z = log(tan(m/n)) + exp(m*m);
        if (z != 0)
        {
            printf("%lf\n", (sqrt(fabs(m-n))-sin(m)*cos(n))/z);
            return 0;
        }
    }
    printf("Переменные m и/или n выходят за пределы ООФ\n");
}
→ Ссылка