Extension:BCmath
![]() Release status: experimental |
|
---|---|
![]() |
|
Implementation | API |
Beskrivelse | Tilbyder aritmetik med vilkårlig præcision for Scribunto. |
Forfatter(e) |
|
Latest version | 0.1.0 |
Compatibility policy | Master maintains backward compatibility. |
MediaWiki | >= 1.33 |
Database changes | Nej |
Licens | GNU General Public License 2.0 or later |
Download | GitHub: Note: README, LDoc |
|
|
Translate the BCmath extension | |
BCmath tilbyder aritmetik med vilkårlig præcision for Lua moduler. Med biblioteket fra denne udvidelse så er det fuldstændig gyldigt at gøre beregninger med 𝜋 <! - matematisk kursiv lille pi -> på 125 tegn, 𝜋 ≅ 3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 820 974 944 592 307 816 406 286 208 998 628 034 825 342 117 067 982 148 086 513 282 306 647 093 8… (Egentligt er den virkelige 𝜋 uendeligt meget længere!)
Denne udvidelse bruger PHP BCMath Arbitrary Precision Mathematics APIet ved at bruge phpseclib/bcmath_compat for for at få tilgang til bc-programmeringssproget.
Installation
Expect er afhængigt af moduler fra Scribunto -udvidelsen.
- Nedlastning and place the file(s) in a directory called
BCmath
in yourextensions/
folder. - Add the following code at the bottom of your LocalSettings.php file:
wfLoadExtension( 'BCmath' );
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Anvendelse
Arbejdeflowet er først at definere en BCmath-instans, og derefter bruge den i normale ligninger, i lænkede operationer, eller som en del af funktionkald. Eksistens af en instans i støttede operationer vil udløse brug af de specielle funktionerne og metoderne.
-- Used for chained operations
local sum1 = mw.bcmath.new( 0.0 ):add( 42.0 ) -- 42.000000000000000
local sum2 = mw.bcmath.new( '0' ):add( '42' ) -- 42
-- Used in an equation
local sum3 = sum1 * sum2 + 3.14 -- 1767.140000000000000
-- Used in function calls
local sum4 = mw.bcmath.add( mw.bcmath.mul( sum1, sum2 ), 3.14 ) -- 1767.140000000000000
local str1 = sum4 'sci' -- 1.767140000000000000e3
local str2 = sum4( 'sci', 4 ) -- 1.767e3
For mere hjælp, se den genererede LDoc dokumentationen.
Udvikling
For at gjenskape det Vagrant-baserede udviklingmiljø, se BCmath: Manual/Vagrant.
Alternativer
Det bedste og måske eneste virkelige alternativ er C-biblioteket decNumber som implementerer IEEE #754r og Lua-bibliotek ldecNumber for innpakning. Disse to må bruges sammen.
- decNumber (C-library)
- ldecNumber (Lua-library)
Biblioteket decNumber bør gennemgå en sikkerhedrevision føder det bruges, men det er sandsynligvis trygt. Lua-bibliotek er arkiveret, og er håbløst umoderne med sidste version (ldecNumber-#21) fra august #2007 . Det er ingen kendt Mediawiki-integration for decNumber/ldecNumber.