Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28732 > unrolled thread

Dowolna precyzja - Boost?

Started byBorneq <borneq@antyspam.hidden.pl>
First post2016-09-15 10:15 +0200
Last post2016-10-02 02:12 +0200
Articles 13 — 4 participants

Back to article view | Back to pl.comp.programming


Contents

  Dowolna precyzja - Boost? Borneq <borneq@antyspam.hidden.pl> - 2016-09-15 10:15 +0200
    Re: Dowolna precyzja - Boost? bartekltg <bartekltg@gmail.com> - 2016-09-15 11:08 +0200
      Re: Dowolna precyzja - Boost? Borneq <borneq@antyspam.hidden.pl> - 2016-09-15 11:47 +0200
      Re: Dowolna precyzja - Boost? Borneq <borneq@antyspam.hidden.pl> - 2016-09-29 00:06 +0200
        Re: Dowolna precyzja - Boost? bartekltg <bartekltg@gmail.com> - 2016-09-29 10:46 +0200
          Re: Dowolna precyzja - Boost? Borneq <borneq@antyspam.hidden.pl> - 2016-09-29 13:54 +0200
            Re: Dowolna precyzja - Boost? Piotrne <piotr12ne@poczta.onet.pl> - 2016-09-30 21:16 +0200
              Re: Dowolna precyzja - Boost? Borneq <borneq@antyspam.hidden.pl> - 2016-09-30 23:49 +0200
              Re: Dowolna precyzja - Boost? bartekltg <bartekltg@gmail.com> - 2016-09-30 23:56 +0200
                Re: Dowolna precyzja - Boost? Borneq <borneq@antyspam.hidden.pl> - 2016-10-01 00:49 +0200
                  Re: Dowolna precyzja - Boost? bartekltg <bartekltg@gmail.com> - 2016-10-01 01:44 +0200
                    Re: Dowolna precyzja - Boost? "M.M." <mmarszik@gmail.com> - 2016-10-01 15:30 -0700
                      Re: Dowolna precyzja - Boost? bartekltg <bartekltg@gmail.com> - 2016-10-02 02:12 +0200

#28732 — Dowolna precyzja - Boost?

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-09-15 10:15 +0200
SubjectDowolna precyzja - Boost?
Message-ID<nrdlab$mn9$1@node1.news.atman.pl>
Wiem, już jak użyć float 128 bit, ale jak użyć dowolnej precyzji. W 
Boost katalog multiprecision zawiera:
katalogi:
concepts\
cpp_bin_float\
cpp_int\
detail\
traits\


pliki:
cpp_bin_float.hpp
cpp_dec_float.hpp
cpp_int.hpp
debug_adaptor.hpp
float128.hpp
gmp.hpp
integer.hpp
logged_adaptor.hpp
miller_rabin.hpp
mpfi.hpp
mpfr.hpp
number.hpp
random.hpp
rational_adaptor.hpp
tommath.hpp

Czy użyć gmp.hpp inne ?
Help jest 
http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/
są tam: cpp_bin_float, gmp_float,mpfr_float - czym się różnią, które 
lepsze, szybsze? potrzebują bibliotek tak jak float128 potrzebował quadmath?

[toc] | [next] | [standalone]


#28733

Frombartekltg <bartekltg@gmail.com>
Date2016-09-15 11:08 +0200
Message-ID<nrdoen$plr$2@node1.news.atman.pl>
In reply to#28732
On 15.09.2016 10:15, Borneq wrote:
> Wiem, już jak użyć float 128 bit, ale jak użyć dowolnej precyzji. W
> Boost katalog multiprecision zawiera:
> katalogi:
> concepts\
> cpp_bin_float\
> cpp_int\
> detail\
> traits\
>
>
> pliki:
> cpp_bin_float.hpp
> cpp_dec_float.hpp
> cpp_int.hpp
> debug_adaptor.hpp
> float128.hpp
> gmp.hpp
> integer.hpp
> logged_adaptor.hpp
> miller_rabin.hpp
> mpfi.hpp
> mpfr.hpp
> number.hpp
> random.hpp
> rational_adaptor.hpp
> tommath.hpp
>
> Czy użyć gmp.hpp inne ?
> Help jest
> http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/
>
> są tam: cpp_bin_float, gmp_float,mpfr_float - czym się różnią, które
> lepsze, szybsze? potrzebują bibliotek tak jak float128 potrzebował
> quadmath?


A nie łątwiej skorzystać z dokumentacji?
http://www.boost.org/doc/libs/1_61_0/libs/multiprecision/doc/html/boost_multiprecision/tut.html

pzdr
bartekltg

[toc] | [prev] | [next] | [standalone]


#28737

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-09-15 11:47 +0200
Message-ID<nrdqnk$nuq$2@node2.news.atman.pl>
In reply to#28733
W dniu 15.09.2016 o 11:08, bartekltg pisze:
> A nie łątwiej skorzystać z dokumentacji?
> http://www.boost.org/doc/libs/1_61_0/libs/multiprecision/doc/html/boost_multiprecision/tut.html

Rzeczywiście, jakoś nie natrafiłem na to.

[toc] | [prev] | [next] | [standalone]


#28917

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-09-29 00:06 +0200
Message-ID<nshetc$lk2$1@node2.news.atman.pl>
In reply to#28733
W dniu 15.09.2016 o 11:08, bartekltg pisze:
> http://www.boost.org/doc/libs/1_61_0/libs/multiprecision/doc/html/boost_multiprecision/tut.html

Czy cpp_int jest dużo wolniejsze od gmp_int?
gmp_int potrzebuje GMP a to typowa biblioteka Linuxowa, trudno ją użyć z 
Windows i Visualem

[toc] | [prev] | [next] | [standalone]


#28918

Frombartekltg <bartekltg@gmail.com>
Date2016-09-29 10:46 +0200
Message-ID<nsikd9$lb0$1@node1.news.atman.pl>
In reply to#28917
On 29.09.2016 00:06, Borneq wrote:
> W dniu 15.09.2016 o 11:08, bartekltg pisze:
>> http://www.boost.org/doc/libs/1_61_0/libs/multiprecision/doc/html/boost_multiprecision/tut.html
>>
>
> Czy cpp_int jest dużo wolniejsze od gmp_int?

Piszą o tym w linku, który cytujesz:>

> gmp_int potrzebuje GMP a to typowa biblioteka Linuxowa, trudno ją użyć z
> Windows i Visualem

A o tym też piszą na stronie o gmp_int:>

MPRI jest forkiem GMP i z punktu widzenia boost jest wymienny.
A dziala pod VS.

pzdr
bartekltg


[toc] | [prev] | [next] | [standalone]


#28920

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-09-29 13:54 +0200
Message-ID<nsivdi$2ku$1@node2.news.atman.pl>
In reply to#28918
W dniu 29.09.2016 o 10:46, bartekltg pisze:
>> Czy cpp_int jest dużo wolniejsze od gmp_int?
>
> Piszą o tym w linku, który cytujesz:>

Trochę niejasno, piszą że jest nieco wolniejszy, ale w testowych 
operacjach typu dodawanie czy mnożenie nierzadko cpp_int było szybsze, 
tylko z określeniem "fixed".

> MPRI jest forkiem GMP i z punktu widzenia boost jest wymienny.
> A dziala pod VS.

dzięki, tego mi było trzeba, spróbuje zainstalować pod VStudio

[toc] | [prev] | [next] | [standalone]


#28955

FromPiotrne <piotr12ne@poczta.onet.pl>
Date2016-09-30 21:16 +0200
Message-ID<nsmdlk$cgr$1@node2.news.atman.pl>
In reply to#28920
W dniu 2016-09-29 o 13:54, Borneq pisze:

>> MPRI jest forkiem GMP i z punktu widzenia boost jest wymienny.
>> A dziala pod VS.
> 
> dzięki, tego mi było trzeba, spróbuje zainstalować pod VStudio

Są też mniejsze projekty, np. taki:

Arbitrary precision package: Arbitrary precision for integers,
floating points, complex numbers etc. (...) A collections of 4
C++ header files. One for arbitrary integer precision, one for
arbitrary floating point precision, a portable complex
template<class T> and finally a portable interval arithmetic
template<class T>. All standard C++ operators are supported
plus all trigonometric and logarithm functions (...)
we have been working with number that exceed 10-100 million
digits without any issues (...)

http://www.hvks.com/Numerical/arbitrary_precision.html

Całość to jeden właściwy plik .cpp i cztery nagłówkowe.

Działa z VisualStudio, ale ma jakieś problemy pod g++.
Problemy podczas wykonania - indeks łańcucha poza zakresem itp.
Czyli być może zawiera błędy.

P.

[toc] | [prev] | [next] | [standalone]


#28973

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-09-30 23:49 +0200
Message-ID<nsmml9$q6s$1@node1.news.atman.pl>
In reply to#28955
W dniu 30.09.2016 o 21:16, Piotrne pisze:
>
> http://www.hvks.com/Numerical/arbitrary_precision.html

Ciekawe:
"It support all relevant trigonometric, logarithms and exponential 
functions like exp(), log(), sin(), cos() etc. which GMP does not"
;-)

[toc] | [prev] | [next] | [standalone]


#28975

Frombartekltg <bartekltg@gmail.com>
Date2016-09-30 23:56 +0200
Message-ID<nsmn1k$qi0$1@node1.news.atman.pl>
In reply to#28955
On 30.09.2016 21:16, Piotrne wrote:
> W dniu 2016-09-29 o 13:54, Borneq pisze:
>
>>> MPRI jest forkiem GMP i z punktu widzenia boost jest wymienny.
>>> A dziala pod VS.
>>
>> dzięki, tego mi było trzeba, spróbuje zainstalować pod VStudio
>
> Są też mniejsze projekty, np. taki:
>
> Arbitrary precision package: Arbitrary precision for integers,
> floating points, complex numbers etc. (...) A collections of 4
> C++ header files. One for arbitrary integer precision, one for
> arbitrary floating point precision, a portable complex
> template<class T> and finally a portable interval arithmetic
> template<class T>. All standard C++ operators are supported
> plus all trigonometric and logarithm functions (...)
> we have been working with number that exceed 10-100 million
> digits without any issues (...)
>
> http://www.hvks.com/Numerical/arbitrary_precision.html
>
> Całość to jeden właściwy plik .cpp i cztery nagłówkowe.
>
> Działa z VisualStudio, ale ma jakieś problemy pod g++.
> Problemy podczas wykonania - indeks łańcucha poza zakresem itp.
> Czyli być może zawiera błędy.

A znasz może jakaś bibliotekę, która udostępnia szerokie
liczby zmiennoprzecinkowe, zle zafiksowanej długości i zwarte?

GMP trzyma inta z długośćią liczby (co w tym zastosowaniu
nie jest potrzebne, bo to argument szablonu) i wskaźnik
na dane z liczbami. To spory narzut pamięciowy jeśli
potrzebuję jedynie poczwórnej...szesznastokrotnej precyzji,
oraz rozwala spójność pamieci przy operacjach macierzowych.

Nosze się od jakiegoś czasui by coś takeigo napsiać
(przy okazji mieć kontrolę nad mnozeniem liczb
różnej precyzji), pewnie wyjmując nieco bebechów z GMP,
ale być mozę jest gotowiec.

O double_double i quad_doble wiem.
CO ciekawe, nie są wcale szybsze nić podobnej precyzji MPFR.

pzdr
bartekltg




[toc] | [prev] | [next] | [standalone]


#28980

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-10-01 00:49 +0200
Message-ID<nsmq64$tu5$1@node1.news.atman.pl>
In reply to#28975
W dniu 30.09.2016 o 23:56, bartekltg pisze:
> na dane z liczbami. To spory narzut pamięciowy jeśli
> potrzebuję jedynie poczwórnej...szesznastokrotnej precyzji,
> oraz rozwala spójność pamieci przy operacjach macierzowych.

Poczwórnej - czy to nie to co mi podawałeś gdy pytałem się o 128 bitów?
http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html
Ale szesnaście razy 32 bity to już narzut na długość i wskaźnik nie jest 
tak duży, chyba że rozwala spójność pamięci.

[toc] | [prev] | [next] | [standalone]


#28981

Frombartekltg <bartekltg@gmail.com>
Date2016-10-01 01:44 +0200
Message-ID<nsmtda$sqh$1@node2.news.atman.pl>
In reply to#28980
On 01.10.2016 00:49, Borneq wrote:
> W dniu 30.09.2016 o 23:56, bartekltg pisze:
>> na dane z liczbami. To spory narzut pamięciowy jeśli
>> potrzebuję jedynie poczwórnej...szesznastokrotnej precyzji,
>> oraz rozwala spójność pamieci przy operacjach macierzowych.
>
> Poczwórnej - czy to nie to co mi podawałeś gdy pytałem się o 128 bitów?
> http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html

To jest wrapper na bibliotekę quadmath, albo intelowy, albo włąśnie 
double double.


> Ale szesnaście razy 32 bity to już narzut na długość i wskaźnik nie jest
> tak duży, chyba że rozwala spójność pamięci.

GMP ma Wskaźnik i dwa inty na długość:/

NArzut czasowy niewielki, ale spojność pamięći jest dla mnie dość
istotna.

pzdr
bartekltg




[toc] | [prev] | [next] | [standalone]


#29015

From"M.M." <mmarszik@gmail.com>
Date2016-10-01 15:30 -0700
Message-ID<3cfca169-ce10-4992-9e26-fbe2d20fc40f@googlegroups.com>
In reply to#28981
On Saturday, October 1, 2016 at 1:44:43 AM UTC+2, bartekltg wrote:
> On 01.10.2016 00:49, Borneq wrote:
> > W dniu 30.09.2016 o 23:56, bartekltg pisze:
> >> na dane z liczbami. To spory narzut pamięciowy jeśli
> >> potrzebuję jedynie poczwórnej...szesznastokrotnej precyzji,
> >> oraz rozwala spójność pamieci przy operacjach macierzowych.
> >
> > Poczwórnej - czy to nie to co mi podawałeś gdy pytałem się o 128 bitów?
> > http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html
> 
> To jest wrapper na bibliotekę quadmath, albo intelowy, albo włąśnie 
> double double.
> 
> 
> > Ale szesnaście razy 32 bity to już narzut na długość i wskaźnik nie jest
> > tak duży, chyba że rozwala spójność pamięci.
> 
> GMP ma Wskaźnik i dwa inty na długość:/
> 
> NArzut czasowy niewielki, ale spojność pamięći jest dla mnie dość
> istotna.

Jeśli są allokowane dane w takiej kolejności w jakiej będzie 
je przeglądał algorytm, to wbrew pozorom jakaś sensowna spójność 
pamięci będzie zachowana. Oczywiście wydajność nie będzie taka 
jak w C++ na wyspecjalizowanym szablonie dla określonej precyzji,
ale tragedii też nie powinno być.

Pozdrawiam

[toc] | [prev] | [next] | [standalone]


#29016

Frombartekltg <bartekltg@gmail.com>
Date2016-10-02 02:12 +0200
Message-ID<nspje6$e8u$1@node2.news.atman.pl>
In reply to#29015
On 02.10.2016 00:30, M.M. wrote:
> On Saturday, October 1, 2016 at 1:44:43 AM UTC+2, bartekltg wrote:
>> On 01.10.2016 00:49, Borneq wrote:
>>> W dniu 30.09.2016 o 23:56, bartekltg pisze:
>>>> na dane z liczbami. To spory narzut pamięciowy jeśli
>>>> potrzebuję jedynie poczwórnej...szesznastokrotnej precyzji,
>>>> oraz rozwala spójność pamieci przy operacjach macierzowych.
>>>
>>> Poczwórnej - czy to nie to co mi podawałeś gdy pytałem się o 128 bitów?
>>> http://www.boost.org/doc/libs/1_57_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html
>>
>> To jest wrapper na bibliotekę quadmath, albo intelowy, albo włąśnie
>> double double.
>>
>>
>>> Ale szesnaście razy 32 bity to już narzut na długość i wskaźnik nie jest
>>> tak duży, chyba że rozwala spójność pamięci.
>>
>> GMP ma Wskaźnik i dwa inty na długość:/
>>
>> NArzut czasowy niewielki, ale spojność pamięći jest dla mnie dość
>> istotna.
>
> Jeśli są allokowane dane w takiej kolejności w jakiej będzie
> je przeglądał algorytm, to wbrew pozorom jakaś sensowna spójność
> pamięci będzie zachowana.

A teraz robię na tych macierzach rozkłądy LLT albo LUP jakiś
gotowcem, a on przestawia liczby, moze im robi swap.

 > Oczywiście wydajność nie będzie taka
 > jak w C++ na wyspecjalizowanym szablonie dla określonej precyzji,
 > ale tragedii też nie powinno być.

Czasy obliczeń liczy się w godzinach lub dniach, miłoby było
coś wykroić ;-)

pzdr
bartekltg

[toc] | [prev] | [standalone]


Back to top | Article view | pl.comp.programming


csiph-web