Получение функции с использованием GMP

У меня есть точка (х, у), и я хочу добавить еще одну точку. я пишу только формула, но я хочу получить функцию:

    struct point {
mpz_t x;
mpz_t y;
};

point my_func(mpz_t x, mpz_t y) {
/..../
//lambda
mpz_sub(a, Y, y);
mpz_sub(b, X, x);
mpz_invert(c, b, P);
mpz_mul(b, a, c);
mpz_mod(f, b, P);

//point x
mpz_mul(a, f, f);
mpz_sub(b, a, x);
mpz_sub(c, b, X);
mpz_mod(d, c, P);

//point y
mpz_sub(a, x, d);
mpz_mul(b, f, a);
mpz_sub(c, b, y);
mpz_mod(e, c, P);

return (x, y);
}

Мне кажется, что это не должно быть сложно, но я ехал весь день.
точка gp = {x, y};
ошибка: массив должен быть инициализирован инициализатором в скобках

Я хочу только иметь точку (х, у), чтобы получить следующую точку на выходе. это не должно быть структура, я пробовал пару и кортеж, это все равно не помогает.

0

Решение

действительно, зачем что-то беспокоить, если мне нужно просто изменить значения х и у
функция void по ссылке решила проблему, благодарна за полезные советы
эта функция работает и нужна оперативная память 600кб

void add(mpz_t& x, mpz_t& y, mpz_t& X, mpz_t& Y,  mpz_t& P) {
mpz_t a, b, c, d, f;
mpz_inits(a, b, c, d, f, 0);
//lambda
mpz_sub(a, Y, y);
mpz_sub(b, X, x);
mpz_invert(c, b, P);
mpz_mul(b, a, c);
mpz_mod(f, b, P);
//point x
mpz_mul(a, f, f);
mpz_sub(b, a, x);
mpz_sub(c, b, X);
mpz_mod(d, c, P);
//point y
mpz_sub(a, x, d);
mpz_mul(b, f, a);
mpz_sub(c, b, y);
mpz_mod(f, c, P);
//set x, y
mpz_set(x, d);
mpz_set(y, f);

mpz_clears(a, b, c, d, f, nullptr);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]