pusha
|
enthusiast
|
|
|
|
Рег.: 09.03.2004
|
Сообщений: 204
|
Из: 1520Б
|
Рейтинг: 6
|
|
C++ Builder > увеличение точности вычислений
01.09.2006 00:08
|
|
|
Существуют ли библиотеки, которые можно использовать в С++ Builder'е для увеличения точности операций с плавающей запятой до 30 знаков?
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: pusha]
01.09.2006 00:17
|
|
|
GNU MP?
--- ...Я работаю антинаучным аферистом...
|
|
pusha
|
enthusiast
|
|
|
|
Рег.: 09.03.2004
|
Сообщений: 204
|
Из: 1520Б
|
Рейтинг: 6
|
|
Re: C++ Builder > увеличение точности вычислений
[re: KOHTPA]
01.09.2006 00:31
|
|
|
а есть какой-нибудь простой пример использования? и с виндой это вообще совместимо? (извиняюсь если глупый вопрос )
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: pusha]
01.09.2006 00:44
|
|
|
code:
$ find /lib | grep gmp
/lib/engines/libgmp.so
/lib/libgmp.dll.a
/lib/libgmp.la
/lib/libgmpxx.dll.a
/lib/libgmpxx.la
$ uname -s
CYGWIN_NT-5.1
А вообще, если твой приплюснутый компилятор стандартный, то библиотека должна собраться и им. Возможно, что кто-то занимался сборкой, попробуй погуглять.
--- ...Я работаю антинаучным аферистом...
|
|
Basilio
|
GreenOne
|
|
|
|
Рег.: 14.10.2002
|
Сообщений: 13750
|
Из: Москва
|
Рейтинг: 3476
|
|
Re: C++ Builder > увеличение точности вычислений
[re: pusha]
01.09.2006 11:00
|
|
|
а нафига? Для любой физической задачи использования long double хватает за глаза. точность - 21 знак
Если думается, что задача считается неверно из-за того, что точности не хватает и типа там, где должен быть ноль получаются числа порядка 1Е-15, то нужно отбросить такие крамольные мысли.
Редактировал Basilio (01.09.2006 11:03)
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: Basilio]
01.09.2006 11:04
|
|
|
16 эффективных. Иногда --- 15.
На самом деле, есть физические задачи, когда этого может не хватать.
--- ...Я работаю антинаучным аферистом...
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: KOHTPA]
01.09.2006 11:06
|
|
|
> На самом деле, есть физические задачи, когда этого может не хватать.
...И в этих случаях помогает немного подумать и поменять способ расчета.
--- ...Я работаю антинаучным аферистом...
|
|
Xanderus
|
экстеоретик
|
|
|
|
Рег.: 25.04.2006
|
Сообщений: 1365
|
Из: Уже не в В
|
Рейтинг: 370
|
|
Re: C++ Builder > увеличение точности вычислений
[re: KOHTPA]
01.09.2006 11:18
|
|
|
Но может и не помочь. Пример: Суммирование знакопеременных рядов с членами, на много порядков большими (по модулю) суммы ряда. Если суммировать приходится "в лоб", то без многозначной арифметики не обойтись.
|
|
Basilio
|
GreenOne
|
|
|
|
Рег.: 14.10.2002
|
Сообщений: 13750
|
Из: Москва
|
Рейтинг: 3476
|
|
Re: C++ Builder > увеличение точности вычислений
[re: KOHTPA]
01.09.2006 11:19
|
|
|
это для double. для long double - 10 байт - точность 21 знак.
--- именно что нужно сначала подумать, а уж потом искать длинную арифметику
|
|
Xanderus
|
экстеоретик
|
|
|
|
Рег.: 25.04.2006
|
Сообщений: 1365
|
Из: Уже не в В
|
Рейтинг: 370
|
|
Re: C++ Builder > увеличение точности вычислений
[re: Basilio]
01.09.2006 11:29
|
|
|
А 10-байтовое long double - это вообще борландовское изобретение, непонятно для чего сделанное. Существенно точность все равно не увеличивает. Пользуйте библиотеки работы с большими числами и нормальный компилятор. Builder пригоден (причем ограниченно) только для написания гуев.
|
|
pusha
|
enthusiast
|
|
|
|
Рег.: 09.03.2004
|
Сообщений: 204
|
Из: 1520Б
|
Рейтинг: 6
|
|
Re: C++ Builder > увеличение точности вычислений
[re: Basilio]
01.09.2006 13:01
|
|
|
насчет обдумывания метода вычисления - согласен. Дело в том, что не хочется тратить время на изменение метода, код уже написан и хочется просто модифицировать его для расчета с большей точностью.
возник другой вопрос - есть ли библиотеки в которых реализована работа с комплексными числами (также с большой точностью) ?
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: Xanderus]
01.09.2006 13:08
|
|
|
> А 10-байтовое long double - это вообще борландовское изобретение
Это уже не наглая ложь, а просто гон.
--- ...Я работаю антинаучным аферистом...
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: Basilio]
01.09.2006 13:25
|
|
|
> это для double.
Это для 80-разрядных IEEE 754.
> для long double - 10 байт - точность 21 знак.
21 - 5 = 16.
Почему "5"? Потому что так устроен мир: ошибки имеют свойство накапливаться. Иногда эти 5 порядков превращаются и в 6.
> именно что нужно сначала подумать, а уж потом искать длинную арифметику
Иногда есть о чем подумать, кроме усовершенствования способа расчета.
--- ...Я работаю антинаучным аферистом...
|
|
Basilio
|
GreenOne
|
|
|
|
Рег.: 14.10.2002
|
Сообщений: 13750
|
Из: Москва
|
Рейтинг: 3476
|
|
Re: C++ Builder > увеличение точности вычислений
[re: KOHTPA]
01.09.2006 14:31
|
|
|
Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic
В ответ на:
Format | Min. Subnormal | Min. Normal | Max. Finite | 2^-N | Significant digits |
Single: | 1.4E-45 | 1.2 E-38 | 3.4 E38 | 5.96E-8 | 6-9 |
Double: | 4.9E-324 | 2.2 E-308 | 1.8 E308 | 1.11E-16 | 15-17 |
Extended: | 3.6 E-4951 | 3.4 E-4932 | 1.2E4932 | 5.42 E-20 | 18 - 21 |
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: Basilio]
01.09.2006 15:14
|
|
|
Сказать, что плохо в твоей сводке? Отсутствуют сведения о разрядности мантиссы.
Ну да ладно.
В твоей сводке приведены предельно достижимые погрешности, это для того, чтобы хранить числа. Но даже в самых простых вычислениях теряется до половины последнего знака. Или даже больше. А если есть решение линейной системы, теряется уже два знака, если есть простейшая оптимизация --- три или даже четыре. Бывают, конечно, отклонения, подгонометрия всегда, за исключением малоинтересных случаев, идет с элементом удачи, но отклонения наблюдаются чаще в сторону больших потерь точности.
--- "И опыт, сын ошибок..."
|
|
pusha
|
enthusiast
|
|
|
|
Рег.: 09.03.2004
|
Сообщений: 204
|
Из: 1520Б
|
Рейтинг: 6
|
|
Re: C++ Builder > увеличение точности вычислений
[re: pusha]
05.09.2006 11:35
|
|
|
А все-таки по поводу работы с комплексными числами большой точности: никто не знает примеров библиотек? гуглом удалось найти только платные...
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: pusha]
05.09.2006 11:53
|
|
|
А ты в "опенсорсных" сводках смотрел(а)?
Например, по GAMS?
--- ...Я работаю антинаучным аферистом...
|
|
pusha
|
enthusiast
|
|
|
|
Рег.: 09.03.2004
|
Сообщений: 204
|
Из: 1520Б
|
Рейтинг: 6
|
|
Re: C++ Builder > увеличение точности вычислений
[re: KOHTPA]
05.09.2006 12:21
|
|
|
Спасибо, посмотрю...
Честно говоря:
1) довольно мало времени потратил на поиск (просто пока его не было), из опенсорсов смотрел только Boost - там не нашел (но возможно нужно получше поискать) 2) к программированию не имею отношения -> не разбираюсь в том, где можно поискать.
Поэтому: 1) извиняюсь, что отнимаю чужое время, НО 2) буду благодарен, если кто-нибудь подскажет набор ресурсов где можно поискать, или непосредственно ссылку.
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: C++ Builder > увеличение точности вычислений
[re: pusha]
05.09.2006 12:30
|
|
|
> к программированию не имею отношения -> не разбираюсь в том, где можно поискать.
Есть FAQ "Study".
--- ...Я работаю антинаучным аферистом...
|
|