Форум программистов, компьютерный форум CyberForum.ru

Вещественное поле - C++

Восстановить пароль Регистрация
 
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
28.08.2011, 15:36     Вещественное поле #1
Требуется создать вещественное поле беззнаковых чисел. Собственно это аналог задачи умножение, сложение, возведение в степень по модулю. Работать должно так же как и обычный гunsigned int. Например когда мы пишем
C++
1
while (i=1; i>0; i++) cout << i << endl;
Последнее число будет 2^31-1, тут тоже следует сделать так, чтобы последнее число было заданным ограничением поля. Как это написать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2011, 15:45     Вещественное поле #2
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Требуется создать вещественное поле беззнаковых чисел....
Строго алгебраически, множество беззнаковых чисел не образует поле... Так что вам надо?
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
29.08.2011, 11:18  [ТС]     Вещественное поле #3
Создать новый тип. Скажем есть [0,1], поле E2 для дискретной математики. Есть поле Ek, так ваот мне надо создать Ek, чтобы k я выбирал сам.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.08.2011, 11:25     Вещественное поле #4
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Создать новый тип. Скажем есть [0,1], поле E2 для дискретной математики. Есть поле Ek, так ваот мне надо создать Ek, чтобы k я выбирал сам.
Сейчас вроде понял. Вы хотите работать в конечном поле классов вычетов по модулю числа k. Сразу замечу, что Ek (в ваших обозначениях) будет полем тогда и только тогда, когда k простое число. Ну так вам нужно прописать операции:
a+b(mod k),
a* b (mod k) и т.д., при этом
a+b (mod k)= (a+b)%k и т.д.
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
29.08.2011, 11:32  [ТС]     Вещественное поле #5
Собственно эти функции в отдельности у меня есть. Я вот если хочу возвести число 2^34 в степерь 2^35, ну Ek у меня чуть больше 2^35. Дело в том что обычное возведение по модулю потребует 2^34 помножить на 2^34, а в Long long это переполнение. Даже близкие к 2^63 числа, тип Long long, 2^62 возвести по модулю 2^63-15, переполнение же возникнет.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.08.2011, 11:40     Вещественное поле #6
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Собственно эти функции в отдельности у меня есть. Я вот если хочу возвести число 2^34 в степерь 2^35, ну Ek у меня чуть больше 2^35. Дело в том что обычное возведение по модулю потребует 2^34 помножить на 2^34, а в Long long это переполнение. Даже близкие к 2^63 числа, тип Long long, 2^62 возвести по модулю 2^63-15, переполнение же возникнет.
Давайте еще раз уясним, что если k=2^35, то это не поле, а кольцо вычетов. В этом случае вам поможет длинная арифметика. Вот если бы у вас k было меньше чем 2^32, то тип long long вам бы подошел.
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
29.08.2011, 11:44  [ТС]     Вещественное поле #7
Цитата Сообщение от Thinker Посмотреть сообщение
Давайте еще раз уясним, что если k=2^35, то это не поле, а кольцо вычетов. В этом случае вам поможет длинная арифметика. Вот если бы у вас k было меньше чем 2^32, то тип long long вам бы подошел.
k чуть больше 2^35, простое число.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2011, 11:48     Вещественное поле
Еще ссылки по теме:

Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле? C++
Дано вещественное x. Вычислить z =f( x ) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.08.2011, 11:48     Вещественное поле #8
Цитата Сообщение от AvengerAlive Посмотреть сообщение
k чуть больше 2^35, простое число.
А, тогда все хорошо Но все же нужна длинная арифметика в этом случае.
Yandex
Объявления
29.08.2011, 11:48     Вещественное поле
Ответ Создать тему
Опции темы

Текущее время: 16:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru