Эллиптическая кривая- сложение двух точек C#

184
17 апреля 2022, 18:30
using System;
namespace lab3
{
    class Program
    {
        static void Main(string[] args)
        {
            double x1 = 58;
            double y1 = 612;
            double x2 = 67;
            double y2 = 84;
            double p = 751;
            //y^2 = x^3-x+1(mod751)
            Console.WriteLine($"P({x1},{y1})");
            Console.WriteLine($"Q({x2},{y2})");
            Console.WriteLine($"p={p}");
            double l = Math.Pow(((y2-y1)/(x2-x1)),p);
            Console.WriteLine(l);
            double x3= Math.Pow((l*l - x1 - x2),p);
            Console.WriteLine(x3);
            double y3 = Math.Pow((l*(x1-x3)-y1),p);
            Console.WriteLine(y3);
            Console.ReadKey();
        }
    }
}

Помогите с вопросом почему консоль выводит ? где ошибка?

Answer 1

Потому что не хватает точности, в .NET значение double может быть равно от -1.7976931348623157E+308 до 1.7976931348623157E+308, тогда как в вашей программе происходит расчет числа примерно равного -1.1E+1328, поэтому оно и округляется в -Infinity.

Если вам нужны настолько большие числа, то для целых чисел, есть BigInteger. В вашем конкретном примере он поможет (если пренебречь точность).

Для вещественных чисел в интернете можно поискать обертки поверх BigInteger, но насколько они хорошие я не знаю.

Также можно посмотреть в сторону оберток для GMP.

READ ALSO
Как сделать активными только определенные дни недели в DatePicker

Как сделать активными только определенные дни недели в DatePicker

Я получаю порядковые номера определенных дней недели из базы данных и эти дни должны оставаться активными в DatePicker, а все остальные - нетНо...

239
Как увеличить offset для elasticsearch?

Как увеличить offset для elasticsearch?

Эластик имеет настройку indexmax-result-window по дефолту равную 10000, поэтому при запросе с offset > 10000, я получаю ошибку

160
Возможно ли отправить в БД тип данных object?

Возможно ли отправить в БД тип данных object?

Всем доброго суток, я новичок в программировании, поэтому прошу строго не судитьВопрос заключается в том, что возможно ли отправить тип данных...

138