|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
(Внимание, "удвоенной" в теме поста означает "удвоенной относительно Double"! ) Хочется такие процедуры: Код: vbnet 1. 2. 3.
которые реализовывали бы арифметические действия: Код: vbnet 1. 2. 3.
-- с этой самой "удвоенной относительно Double" точностью (все написанные выше и ниже переменные сами по себе -- типа Double). Понятно, что имеются в виду не произвольные пары (p1, p2), а соотносящиеся друг с другом как "основная часть числа" и его "хвост" (не помещающийся в представление Double). То есть эти самые процедуры Сложить(), Умножить() и Поделить() должны таким образом возвращаемые значения формировать А мы на входе в код, работающий с этими "процедурами удвоенной точности", будем делать: Код: vbnet 1.
-- и на выходе из этого кода делать обратное: Код: vbnet 1. 2.
здесь x -- исходное данное, а res -- результат расчёта. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 12:58 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Давным-давно, ещё во времена 4-й версии, использовал библиотеку работы со сверхдлинными числами. Вообще без ограничения на размер (реально - конечно, ограничение было, что-то типа 100к цифр). Причём именно работы с вещественными, правда, набор операций был достаточно ограничен. Сейчас, конечно, концов уже не найду. Опять же давно где-то видел статью, в которой описывался класс для работы со сверхдлинными числами вообще тупо в текстовом представлении - там были только арифметические операции, но зато всё было реализовано на VB (или VBA? не помню). Так что, наверное, можно поискать, и если повезёт - адаптировать под нынешнюю версию. Написать же собственный класс для работы с числами в 70-80 значащих цифр и только арифметическими операциями вообще не должно представлять проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 17:01 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Akina, Если я правильно понял, автор топика хочет "удвоенной относительно Double". Это quadruple precision формат с плавающей точкой, занимающий в 2 раза больше чем Double, 128 бит или 16 байт в памяти. Появился недавно в новой редакции стандарта IEEE 754. Такой тип данных реализован в некоторых компиляторах C++ и Fortran. Но из-за того, что платформа x86-64 не имеет аппаратной поддержки вычислений чисел с плавающей запятой четверной точности все вычисления с таким форматом проходят очень медленно. Для VB таких библиотек нет. Программисту такой формат данных не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 17:25 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Почему нет, мне тоже попадалась когда-то ссылка на либу, которая может выполнять вычисления для чисел любой точности, все числа представлялись в виде строковых представлений, работает понятное дело медленнее, чем "родной" формат, но скорость не всегда важна. ТС, как понимаю, просто не хочет потерять точность при выполнении некоторых операций, а результат вернется к обычному double ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 17:31 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Есть либа для GCC называется libquadmath , там есть возможность конвертировать string во _float128 и обратно. Может ее можно прикрутить к VB, передавая и принимая числа четверной точности через строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 17:45 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Shocker.Pro просто не хочет потерять точность при выполнении некоторых операций, а результат вернется к обычному double ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 17:57 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Eolt передавая и принимая числа четверной точности через строки. На самом деле, мне даже не важно, как именно это число четверной точности будет "размазано" по этим двум Double, если будет определена операция порождения этой пары (которая может быть и не " Let x1 = x: Let x2 = 0# ") и операция возвращения обратно в Double-значение (которая может быть и не " Let res = res1 (а res2 просто отбрасывать) ") ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 18:29 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
В чем смысл пожелалки - величить максимально представимую степень или только число точных десятичных знаков знаков в мантиссе? Если только второе, то, может быть, вы просто не знаете , что для VB/VBA стандартно доступен числовой десятичный тип с точностью представления в 28 десятичных знаков? В таком случае откройте для себя cdec(...) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 20:48 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Eolt Такой тип данных реализован в некоторых компиляторах C++ и Fortran. Но из-за того, что платформа x86-64 не имеет аппаратной поддержки вычислений чисел с плавающей запятой четверной точности все вычисления с таким форматом проходят очень медленно. Иван FXS На самом деле, мне даже не важно, как именно это число четверной точности будет "размазано" по этим двум Double Гораздо проще реализовывать, если хранить два Long и одно Power. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 20:48 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
booby В таком случае откройте для себя cdec ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 21:11 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS booby В таком случае откройте для себя cdec чего-чего? Ваше бы упорство, да в мирных целях. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 21:22 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
booby, ну, распишите (или просто подумайте), как вы будете через Decimal вычислять выражение (1.2E34 - 5.6E7) * 8.9E-123 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 21:27 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS booby, ну, распишите (или просто подумайте), как вы будете через Decimal вычислять выражение (1.2E34 - 5.6E7) * 8.9E-123 я не буду. Ладно, забудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 21:32 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
booby Ладно, забудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 21:36 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Akina Гораздо проще реализовывать, если хранить два Long и одно Power ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2021, 08:22 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
просто положу это здесь (по ассоциации): хороший способ оценить точность решения системы линейных уравнений -- решить её повторно, трактуя диагональ (матрицы коэффициентов) не стандартным образом -- как проходящую "с северо-запада на юго-восток", -- а как проходящую "с юго-запада на северо-восток". И сравнить получившиеся решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2021, 09:02 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS то есть числитель и знаменатель (и дополнительно степень десятичного масштабирующего множителя)? А что, хорошая идея -- запросто можно не два, а три числа передавать! Но, главное, мы не повышаем точность своих вычислений, поскольку она определяется разрядностью хранения конкретно числителя (или знаменателя -- довольно естественно думать, что разрядности будут использованы одинаковые). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2021, 10:24 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Хотелось бы найти такую библиотеку. Я вот искал и не нашел. А когда спрашивал тут про это самое.. "строковый калькулятор" мне никто ни хрена не сказал. Я пробовал сам написать деление. Реально получается, что там не только деление, но и сложение конечно. Это было давно и результат моего опыта был такой: кажется, что все работает, но потом на каком-то числе, когда он должен был выдать результат типа 30-50k знаков после запятой - оказалось что-то типа... цифры верные, опять верные... потом хлоп.. странный кусок типа 0000000, а потом бац - дальше опять правильно. Т.к. я тогда так и не разобрался в чем была ошибка - тупо на это забил. А вообще я знаю только один сайт с помощью которого можно хотя бы сравнить свой результат с правильным: https://www.wolframalpha.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 01:39 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Akina, Если это так просто, почему в сети по сей день нет калькулятора, который бы давал 100k значимых цифр после запятой? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 01:42 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS, Если тебе действительно важна точность, используй любой доступный bignumber, преобразовывай его в double после использования и не делай никому голову. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 10:28 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
crutchmaster, 1) вы видите, что тема размещена в разделе Visual Basic? 2) Вы знаете Visual Basic? 3) Назовите конкретный bignumber, который в Visual Basic решает сформулированную в посте задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 03:49 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS Вы знаете Visual Basic? Поверхностно. Иван FXS Назовите конкретный bignumber, который в Visual Basic решает сформулированную в посте задачу У вба нет репозитория с библиотеками, как у всех нормальных яп? Bigdecimal - это одно из первых, что пишут, потому что без него серьёзные фин. расчёты делать нельзя никак. За десятилетия его существования должно что-то быть по любому. Мне беглый гуглёж показывает всякий шлак, возможно я не знаю как гуглить. Поищите на официальных ресурсах, если вы в теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 13:08 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS booby, ну, распишите (или просто подумайте), как вы будете через Decimal вычислять выражение (1.2E34 - 5.6E7) * 8.9E-123 Хм, а разве при такой разнице в числах на двадцать-сто порядков, получится ли приемлемую точность на классическом double/двойном double? Мантисса ведь нерезиновая. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 17:44 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
ldfanate,"разница сто порядков" -- там умножение, так что проблем не будет. А вот выражение в скобках -- да, там нужна соответствующая мантисса... так для того пример и придуман. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 01:24 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
Иван FXS, библиотек арифметики с произвольной точностью известно доаольно много: List of arbitrary-precision arithmetic software , одна из самых известных - GNU MPFR . Демка для VB официального примера работы с ней здесь . Библиотека компилировалась в MSVC 2019, поэтому потребуеЦЦа Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 , для Win32 скачайте и установите (если ещё не) vc_redist.x86.exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2021, 17:50 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
автортам умножение, так что проблем не будет. хм, почемуто думал, что при фиксированной разрядности мантиссы такая дикая разница в порядках величин и при умножении даст существенную потерю точности. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2021, 11:52 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
ldfanate автортам умножение, так что проблем не будет. хм, почемуто думал, что при фиксированной разрядности мантиссы такая дикая разница в порядках величин и при умножении даст существенную потерю точности.Это если бы имела место арифметика с представлением вещественного числа в формате с фиксированной позицией разделителя целой и дробной части (fixed-point arithmetic). У арифметики с плавающей позицией разделителя (floating-point arithmetic) такой проблемы нет, так как мантисса используеЦЦа рациональней, и её запись начинаеЦЦа с первого значащего разряда в выбранной системе счисления (не храняЦЦа предшествующие нули). ПримечаниеВ частности, это приводит к такому интересному эффекту, что в двоичной системе счисления первый значащий разряд для числа, не равного 0, всегда 1 2 , и, следовательно, её можно не хранить в явном виде (так называемая "скрытая единица"), а хранить на один двоичный разряд в мантиссе больше. Например, для вещественных чисел с двойной точностью (double) в формате IEEE-754 общая длина представления 64 бита: 1 бит на знак + 11 битов на порядок + 5 3 (явно храниЦЦа 52) бита на мантиссу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2021, 13:28 |
|
Есть ли библиотеки, подключаемые к VB, реализующие арифметику "удвоенной" точности?
|
|||
---|---|---|---|
#18+
автортакой проблемы нет, так как мантисса используеЦЦа рациональней 53 (явно храниЦЦа 52) бита на мантиссу. А разве не произойдёт всёравно потери точности при нормализации в 52-битную мантиссу (2^52 это всеголишь 10^15)? Т.е. уже после того, как математический сопроцессор (8087 :)) ну даже в 80-битной арифметике если оперирует внутри себя? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 09:28 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2154714]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 443ms |
0 / 0 |