Programowanie w systemie UNIX/MPC: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m lit
int.
Linia 1:
Gnu Mpc<ref>[http://multiprecision.org/ GNU Mpc ]</ref> jest to biblioteka [[C]] służąca do operacji arytmetycznych na liczbach zespolonych z dowolną precyzją ( ang. arbitrarily high precision ) i właściwym zaokrąglaniem wyniku.
 
==Zależności / wymagania ==
* wersja języka C : C99
* [[Programowanie_w_systemie_UNIX/GMP|gmp]] ≥ 4.3.2,
* biblioteka [[Programowanie_w_systemie_UNIX/MPFR|MPFR]], wersja mpfr ≥ 2.4.2
Linia 17:
 
 
lub :
 
./configure --prefix=/usr/local/mpc-0.9 --with-gmp=/usr/local/gmp-5.0.2 --with-mpfr=/usr/local/mpfr-3.0.1
Linia 24:
 
 
Wynik :
 
<pre>
Linia 43:
 
===Synnaptic===
Za pomocą Menadżera Pakietów Synaptic : libmpc ( pakiet biblioteki i dev )
 
 
===git===
Z użyciem anonimowego dostępu do git :<ref>[http://gforge.inria.fr/scm/?group_id=131 Source Code Repository for MPC (Multiple Precision Complex)]</ref>
 
git clone https://gforge.inria.fr/git/mpc/mpc.git
Linia 61:
make check
 
wynik :
 
<pre>
Linia 150:
==Zaokrąglenie==
 
Sposoby zaokrąglanie ( anang. rounding Modes ) liczb zespolonych typu mpc_t mają formę :<ref>[http://www.multiprecision.org/index.php?prog=mpc&page=html#GNU-MPC-Basics MPC doc : 4.4 Rounding Modes]</ref>
MPC_RNDxy
 
Litery x i y oznaczają sposób dla części rzeczywistej ( litera x) i urojonej ( litera y)
Są następujące metody :
 
* N oznacza do najbliższej liczby (to nearest)
Linia 162:
 
 
zmienna określająca jet typu :
 
mpc_rnd_t
 
==Format liczb==
* liczba zmiennoprzecinkowa ( brakująca część urojona jest ustawiona na +0 )
* para liczb zmiennoprzecinkowych :
** oddzielonych spacją
** otoczona nawiasami
Linia 174:
 
 
Przedrostki określające podstawę formatu liczb :
 
* '0x0b' dla liczb heksadecymalnychdwójkowych ( ang. hexadecimalbinary numbers)
Przedrostki określające podstawę formatu liczb :
* '0b0x' dla liczb dwójkowychheksadecymalnych ( ang. binaryhexadecimal numbers)
* '0x' dla liczb heksadecymalnych ( ang. hexadecimal numbers)
* bez przedrostka dla liczb dziesiętnych
 
Linia 184 ⟶ 183:
The real and imaginary part may then be written in different bases. For instance, "(1.024e+3 +2.05e+3)" and "(0b1p+10 +0x802)" are valid strings for base=0 and represent the same value."
 
Przykłady poprawnych liczb dziesiętnych ( ang. base = 10 ) :
 
3.1415926
Linia 193 ⟶ 192:
 
 
binarnych :
0b101
Linia 202 ⟶ 201:
===mpc_t===
 
Definicja :
 
typedef struct {
Linia 210 ⟶ 209:
typedef __mpc_struct mpc_t[1];
 
Każda część ( rzeczywista i urojona ) ma swoją precyzję <ref>[https://www.gnu.org/ghm/2011/paris/slides/andreas-enge-mpc.pdf Introduction to the GNU MPC library (Andreas Enge)]</ref>
 
 
Dostęp do części :
mpc_realref (z)
mpc_imagref (z)
Linia 225 ⟶ 224:
mpc_abs: sqrt(x^2 + y^2)
 
===Zwracana wartość : inex===
 
inex = inexact value
 
"Most MPC functions have a return value of type int, which is used to indicate the position of the rounded real and imaginary parts with respect to the exact (infinite precision) values. If this integer is k, the macros MPC_INEX_RE(k) and MPC_INEX_IM(k) give 0 if the corresponding rounded value is exact, a negative value if the rounded value is less than the exact one, and a positive value if it is greater than the exact one. Similarly, functions computing a result of type mpfr_t return an integer that is 0, positive or negative depending on whether the rounded value is the same, larger or smaller then the exact result"
Linia 233 ⟶ 232:
==Jak używać w c ?==
 
Etapy użycia :<ref>[https://www.gnu.org/ghm/2011/paris/slides/andreas-enge-mpc.pdf The MPC library - a quick introduction by Andreas Enge]</ref>
* deklaracja zmiennej
* inicjalizacja
* przypisanie ( ang. Assignment)
* obliczenia ( ang. computing)
* zwolnienie pamięci (ang. freeing)
 
Linia 254 ⟶ 253:
 
 
Najprostszy przykład :<ref>[http://stackoverflow.com/questions/7020772/how-i-compile-mpc-code Stackoverflow : How I compile MPC code?]</ref>
 
<source lang=c>
Linia 271 ⟶ 270:
</source>
 
Kompilacja :
 
gcc ... -lmpc -lmpfr -lgmp ...
Linia 314 ⟶ 313:
===asin(2i)===
 
Funkcja asin oblicza arcsine z liczby całkowitej :
 
<source lang = c>
Linia 361 ⟶ 360:
</source>
 
Wynik :