fp

Pakiet zawiera szereg makroinstrukcji umożliwiających prowadzenie obliczeń zmiennoprzecinkowych \hline
PolecenieOpis
\FPmessagestrue włącza komunikaty (domyślnie)
\FPmessagesfalse wyłącza komunikaty
\FPdebugtrue włącza śledzenie
\FPdebugfalse wyłącza śledzenie
\FPset#1#2 podstawienie #1 := #2 np. \FPset{wynik}{10.2}
\FPprint#1 podaj wynik \FPset{wynik}{10.2} (np. \FPprint{wynik} daje nam 10.2)
\FPadd#1#2#3 dodawanie #1 := #2 + #3 \FPadd{\suma}{składnik}{składnik} (np. \FPset{wynik}{10.2} \FPadd{\suma}{\wynik}{10.2} \FPprint{suma} daje nam: 20.400000000000000000
FPdiv#1#2#3 dzielenie #1 := #2 / #3 \FPdiv{\iloraz}{dzielna}{dzielnik} (np. \FPset{wynik}{10.2} \FPdiv{\iloraz}{\wynik}{5.1} \FPprint{iloraz} daje nam: 2.000000000000000000)
\FPmul#1#2#3 mnożenie #1 := #2 * #3 \FPmul{\iloczyn}{mnożna}{mnożnik} (np. \FPset{wynik}{10.2} \FPmul{\iloczyn}{\wynik}{10.2} \FPprint{iloczyn} daje nam: 104.040000000000000000)
\FPsub#1#2#3 odejmowanie #1 := #2 - #3 \FPsub{\różnica}{odjemna}{odjemnik\} (np. \FPset{wynik}{10.2} \FPsub{\różnica}{\wynik}{1.2} \FPprint{róznica} daje nam: 9.000000000000000000)
\FPabs#1#2 wartość absolutna #1 := abs(#2)
\FPneg#1#2 zmiana znaku #1 := -#2
\FPsgn#1#2 znak wyrażenia #1 := sgn(#2)
\FPmin#1#2#3 minimum #1 = min(#2,#3)
\FPmax#1#2#3 maksimum #1 = max(#2,#3)
\FPe wartość stałej Eulera: 2.718281828459045235
\FPpi wartość liczby Pi := 3.141592653589793238
\FPexp#1#2 potęga liczby e #1 := e\^(#2)
\FPln#1#2 logarytm naturalny #1 := ln(#2)
\FPpow#1#2#3 potęgowanie #1 := (#2)\^(#3)
\FProot#1#2#3 pierwiastkowanie #1 := (#2)\^(1/#3)
\FPpascal#1#2 #1 := #2-ta linia trójkąta Paskala
\FPseed=#1 ustawia punkt startowy ciągu zmiennych losowych generowanych poleceniem \FPrandom
\FPrandom#1 #1 := liczba losowa z przedziału 0 -- 1
\FPround#1#2#3 #1 := #2 zaokrąglone do #3 pozycji po kropce dziesiętnej
\FPtrunc#1#2#3 #1 := #2 podstawiewnie z obcięciem do #3 pozycji
\FPclip#1#2 #1 := #2 podstawiewnie z usunięciem nieznaczących zer
\FPsin#1#2 #1 := sin(#2)
\FPcos#1#2 #1 := cos(#2)
\FPsincos#1#2#3 #1 := sin(#3), #2 := cos(#3)
\FPtan#1#2 #1 := tan(#2)
\FPcot#1#2 #1 := ctg(#2)
\FPtancot#1#2#3 #1 := tan(#3), #2 := ctg(#3)
\FParcsin#1#2 #1 := arcsin(#2)
\FParccos#1#2 #1 := arccos(#2)
\FParcsincos#1#2#3 #1 := arcsin(#3), #2 := arccos(#3)
\FParctan#1#2 #1 := arctan(#2)
\FParccot#1#2 #1 := arcctg(#2)
\FParctancot#1#2#3 #1 := arctan(#3), #2 := arcctg(#3)
\FPupn#1#2 #1 := eval(#2) eval symbolizuje rozwinięcie wyrażenia #2 zapisanego w Polskiej Notacji wewnątrz wyrażenia można używać następujących operatorów: +, add, -, sub, *, mul, /, div, abs, neg, min, max, round, trunc, clip, e, exp, ln, pow, root, pi, sin, cos, sincos, tan, cot, tancot, arcsin, arccos, arcsincos, arctan, arccot, arctancot, pop, swap, copy; gdzie:
pop usuwa element ze stosu
swap zmienia kolejność pierwszych dwóch elementów
copy kopiuje najwyższy element na stosie
np:
    \FPupn\result{17 2.5 + 17.5 - 2 1 + * 2 swap /} 
   
jest równoważne wyrażeniu:
    \result := ((17.5 - (17 + 2.5)) * (2 + 1)) / 2
   
\FPeval#1#2 #1 := eval(#2) eval symbolizuje rozwinięcie wyrażenia. Wewnątrz mogą być używane nawiasy i znane operatory (w przypadku powyższych definicji należy używać nazw bez prefixu FP i backslasha
Uwaga: nie działa minus unarny, należy użyć operatora neg
\FPiflt#1#2...\else...\fi jeśli #1 < #2
\FPifeq#1#2...\else...\fi jeśli sym{#1 = #2}
\FPifgt#1#2...\else...\fi jeśli #1 > #2
\FPifneg#1 ...\else...\fi jeśli ujemny (#1 < 0)
\FPifpos#1 ...\else...\fi jeśli nieujemny (#1 >= 0)
\FPifzero#1...\else...\fi jeśli zero (#1 = 0)
\FPifint#1 ...\else...\fi jeśli całkowity (#1)
\ifFPtest ...\else...\fi ostatnio wykonany test
\FPlsolve#1#2#3 oblicz #1 := x tak, aby #2 * x + #3 = 0
\FPqsolve#1#2#3#4#5 oblicz #1,#2 := x tak, aby #3 * x^2 + #4 * x + #5 = 0
\FPcsolve#1#2#3#4#5#6#7 oblicz #1,#2,#3 := x tak aby #4 * x^3 + #5 * x^2 + #6 * x + #7 = 0
\FPqqsolve#1#2#3#4#5#6#7#8#9 oblicz #1,#2,#3,#4 := x tak aby #5 * x^4 + #6 * x^3 + #7 * x^2 + #8 * x + #9 = 0

Włodzimierz Macewicz
Ostatnie zmiany: 05.05.2014.