Unum (sifferformat)
Unums ( universella tal ) är en familj av format och aritmetik, som liknar flyttal , föreslog av John L. Gustafson 2015. De är designade som ett alternativ till den allestädes närvarande flyttalsstandarden IEEE 754 . Den senaste versionen (känd som posits) kan användas som en drop-in-ersättning för program som inte är beroende av specifika funktioner i IEEE 754.
Typ I Unum
Den första versionen av unums, formellt känd som Type I unum, introducerades i Gustafsons bok The End of Error som en superset av flyttalsformatet IEEE-754. De definierande egenskaperna hos Typ I unum-formatet är:
- ett lagringsformat med variabel bredd för både signifikanden och exponenten och
- en u-bit , som avgör om unum motsvarar ett exakt tal ( u = 0), eller ett intervall mellan på varandra följande exakta unum ( u = 1). På så sätt täcker unum hela den förlängda reella tallinjen [−∞,+∞].
För beräkning med formatet föreslog Gustafson att använda intervallaritmetik med ett par unum, vad han kallade en ubound , vilket gav garantin att det resulterande intervallet innehåller den exakta lösningen.
William M. Kahan och Gustafson debatterade unums på Arith23 -konferensen.
Typ II Unum
Typ II Unums introducerades 2016 som en omdesign av Unums som bröt IEEE-754-kompatibiliteten.
Position (Typ III Unum)
I februari 2017 introducerade Gustafson officiellt Typ III unums, posits för fasta flyttalsliknande värden och giltiga för intervallaritmetik . I mars 2021 ratificerades och publicerades en standard av Posit Working Group.
Positioner är en hårdvaruvänlig version av unum där svårigheter i den ursprungliga typ I unum på grund av dess varierande storlek är lösta. Jämfört med IEEE 754-floats av liknande storlek erbjuder posits ett större dynamiskt omfång och fler bråkbitar för värden med magnitud nära 1 (men färre bråkbitar för mycket stora eller mycket små värden), och Gustafson hävdar att de erbjuder bättre noggrannhet. I en oberoende studie bekräftade Lindstrom, Lloyd och Hittinger från Lawrence Livermore National Laboratory att antaganden överträffar flytningar i noggrannhet. [ tveksamt ] Positioner har överlägsen noggrannhet i området nära ett, där de flesta beräkningar sker. Detta gör det mycket attraktivt för den nuvarande trenden inom djupinlärning att minimera antalet bitar som används. Det hjälper potentiellt alla applikationer att accelerera genom att möjliggöra användningen av färre bitar (eftersom den har fler bråkdelar för noggrannhet) vilket minskar nätverks- och minnesbandbredd och effektkrav.
Formatet för en n -bitars posit får etiketten "posit" följt av decimalsiffrorna i n (t.ex. 16-bitars positformatet är "posit16") och består av fyra sekventiella fält:
- tecken : 1 bit, representerar ett heltal utan tecken s
- regim: minst 2 bitar och upp till ( n − 1), som representerar ett heltal utan tecken r enligt beskrivningen nedan
- exponent : upp till 2 bitar som tillgängliga efter regim, representerande ett heltal utan tecken e
- bråk : alla återstående bitar tillgängliga efter exponent, representerar en icke-negativ reell dyadisk rationell f mindre än 1
Regimfältet använder unär kodning av k identiska bitar, följt av en bit av motsatt värde om några kvarvarande bitar är tillgängliga, för att representera ett heltal utan tecken r som är − k om den första biten är 0 eller k − 1 om den första biten är 1. Tecken-, exponent- och bråkfälten är analoga med IEEE 754 tecken-, exponent- och signifikansfält (respektive), förutom att positexponent- och bråkfälten kan saknas eller trunkeras och implicit utökas med nollor – en frånvarande exponent behandlas som 00
2 (representerar 0), behandlas en enbitsexponent E 1 som E 1 0
2 (representerar heltal 0 om E 1 är 0 eller 2 om E 1 är 1), och en frånvarande fraktion behandlas som 0.
De två kodningarna där alla icke-teckenbitar är 0 har speciella tolkningar:
- Om teckenbiten är 1 är positvärdet
NaR
("inte en reell") - Om teckenbiten är 0 är positvärdet 0 (vilket är utan tecken och det enda värdet för vilket teckenfunktionen
returnerar
0)
Annars är positvärdet lika med , där r skalar med potenser av 16, e skalar med potenser av 2, f fördelar värden enhetligt mellan intilliggande kombinationer av ( r , e ), och s justerar tecknet symmetriskt omkring 0.
Exempel
typ (posit n ) | Binär | Värde | Anteckningar |
---|---|---|---|
några |
1 0…
|
NaR
|
allt som inte matematiskt kan definieras som ett unikt reellt tal |
några |
0 0…
|
||
några |
0 10…
|
||
några |
1 10…
|
||
några |
0 0 1 11 0…
|
||
några |
0 0… 1
|
minsta positiva värde | |
några |
0 1...
|
största positiva värdet | |
posit8 |
0 000000 1
|
minsta positiva värde | |
posit8 |
0 1111111
|
största positiva värdet | |
posit16 |
0 0000000000000 1
|
minsta positiva värde | |
posit16 |
0 111111111111111
|
största positiva värdet | |
posit32 |
0 00000000000000000000000000000000 1
|
minsta positiva värde | |
posit32 |
0 11111111111111111111111111111111
|
största positiva värdet |
Notera : 32-bitars posit förväntas vara tillräckligt för att lösa nästan alla klasser av applikationer [ citat behövs ] .
Quire
För varje posit n typ av precision definierar standarden en motsvarande "quire" typ quire n med precision som används för att ackumulera exakta summor av produkter av dessa positer utan avrundning eller översvämning i punktprodukter för vektorer på upp till 2 31 eller fler element (den exakta gränsen är . Qureformatet är ett med två komplement för tecken, tolkat som en multipel av enheter med storleken förutom specialvärdet med en inledande teckenbit på 1 och alla andra bitar lika med 0 (vilket representerar NaR
). Quires är baserade på verk av Ulrich W. Kulisch och Willard L. Miranker .
Giltig
Giltigheter beskrivs som ett typ III Unum-läge som gränsar resulterar i ett givet intervall.
Genomföranden
Flera mjukvaru- och hårdvarulösningar implementerar positurer. Den första kompletta parametriserade positaritmetiska hårdvarugeneratorn föreslogs 2018.
Unum implementeringar har utforskats i Julia och MATLAB . En C++- version med stöd för alla positstorlekar kombinerat med valfritt antal exponentbitar är tillgänglig. En snabb implementering i C, SoftPosit, tillhandahållen av NGA-forskningsteamet baserat på Berkeley SoftFloat kompletterar de tillgängliga programvaruimplementeringarna.
Projekt författare |
Typ | Precisioner | Quire Stöd? |
Fart | Testning | Anteckningar |
---|---|---|---|---|---|---|
GP-GPU
VividSparks |
Världens första FPGA GP-GPU | 32 | Ja | ~3,2 Tpops | Uttömmande. Inga kända buggar. | Racer GP-GPU har 512 kärnor |
SoftPosit
EN STJÄRNA |
C-bibliotek baserat på Berkeley SoftFloat C++-omslag för att åsidosätta operatörernas Python-omslag med SWIG från SoftPosit |
8, 16, 32 publicerade och kompletta; | Ja | ~60 till 110 Mpops/s på x86-kärna (Broadwell) | 8: Uttömmande; 16: Uttömmande utom FMA, frågestund 32: Uttömmande test pågår fortfarande. Inga kända buggar. |
Licens för öppen källkod. Det snabbaste och mest omfattande C-biblioteket för inlägg för närvarande. Designad för plugin-jämförelse av IEEE-floats och posits. |
posit4.nb
EN STJÄRNA |
Mathematica anteckningsbok | Allt | Ja | < 80 kpops/s | Uttömmande för låg precision. Inga kända buggar. | Öppen källkod (MIT-licens). Originaldefinition och prototyp. Mest komplett miljö för att jämföra IEEE-floats och posits. Många exempel på användning, inklusive linjära lösare |
posit-javascript
EN STJÄRNA |
JavaScript-widget | Konvertera decimal till posit 6, 8, 16, 32; generera tabellerna 2–17 med es 1–4. | — | —; interaktiv widget | Fullständigt testad | Tabellgenerator och konvertering |
Universell
Stillwater Supercomputing, Inc |
C++ mallbibliotek C-bibliotek Python-omslag Golang-bibliotek |
Godtycklig precision posit float giltig (p) Unum typ 1 (p) Unum typ 2 (p) |
Godtyckliga behovskonfigurationer med programmerbar kapacitet | posit<4,0> 1 GPOPS posit<8,0> 130 MPOPS posit<16,1> 115 MPOPS posit<32,2> 105 MPOPS posit<64,3> 50 MPOPS posit<128,4> 1 MPOPS posit<256,5> 800 kPOPS |
Komplett valideringssvit för godtyckliga positurer Slumpmässiga för stora posit-konfigurationer. Använder induktion för att bevisa att nbits+1 är korrekt inga kända buggar |
Öppen källa. MIT-licens. Helt integrerad med C/C++-typer och automatiska konverteringar. Stöder fullständigt C++ matematikbibliotek (native och konvertering till/från IEEE). Körtidsintegrationer: MTL4/MTL5, Eigen, Trilinos, HPR-BLAS. Applikationsintegrationer: G+SMO, FDBB, FEniCS, ODEintV2, TVM.ai. Hardware Accelerator integration (Xilinx, Intel, Achronix). |
Speedgo
Chung Shin Yee |
Python bibliotek | Allt | Nej | ~20 Mpops/s | Omfattande; inga kända buggar | Öppen källkod (MIT-licens) |
softposit-rkt
David Thien |
SoftPosit-bindningar för Racket | Allt | Ja | Okänd | Okänd | |
sfpy
Bill Zorn |
SoftPosit-bindningar för Python | Allt | Ja | ~20–45 Mpops/s på 4,9 GHz Skylake-kärna | Okänd | |
positsoktav
Diego Coelho |
Octave Implementation | Allt | Nej | Okänd | Begränsad testning; inga kända buggar | GNU GPL |
Sigmoidnummer
Isaac Yonemoto |
Julia bibliotek | Alla <32, alla ES | Ja | Okänd | Inga kända buggar (posits). Division buggar (giltiga) |
Utnyttjar Julias mallade matematikstandardbibliotek, kan inbyggt göra matris- och tensoroperationer, komplexa tal, FFT, DiffEQ. Stöd för giltiga |
FastSigmoid
Isaac Yonemoto |
Julia och C/C++ bibliotek | 8, 16, 32, alla ES | Nej | Okänd | Känd bugg i 32-bitars multiplikation | Används av LLNL i chockstudier |
SoftPosit.jl
Milan Klöwer |
Julia bibliotek | Baserat på softposit; 8-bitars (es=0..2) 16-bitars (es=0..2) 24-bitars (es=1..2) 32-bitars (es=2) |
Ja | Liknande A*STAR "SoftPosit" (Cerlane Leong) |
Ja: Posit (8,0), Posit (16,1), Posit (32,2) Andra format saknar full funktionalitet |
Öppen källa. Problem och förslag på GitHub. Detta projekt utvecklades på grund av att SigmoidNumbers och FastSigmoid av Isaac Yonemoto inte underhålls för närvarande. Stöder grundläggande linjära algebrafunktioner i Julia (matrismultiplikation, matrislösning, Elgenupplösning, etc.) |
PySigmoid
Ken Mercado |
Python bibliotek | Allt | Ja | < 20 Mpops/s | Okänd | Öppen källkod (MIT-licens). Lätt att använda gränssnitt. Exempel på nervnät. Stöd för omfattande funktioner. |
cppPosit
Emanuele Ruffaldi |
C++ bibliotek | 4 till 64 (valfritt es-värde); "Mallversionen är 2 till 63 bitar" | Nej | Okänd | Några grundläggande tester | 4 nivåer av operationer som arbetar med posits. Speciellt stöd för NaN-typer (icke-standard) |
bfp:Beyond Floating Point
Clément Guérin |
C++ bibliotek | Några | Nej | Okänd | Buggar hittade; status för korrigeringar okänd | Stöder + – × ÷ √ ömsesidigt, negera, jämföra |
Verilog.jl
Isaac Yonemoto |
Julia och Verilog | 8, 16, 32, ES=0 | Nej | Okänd | Omfattande testad för 8-bitars, inga kända buggar | Endast avsedd för Deep Learning-applikationer Addition, Subtraktion och Multiplikation. En proof of concept-matrismultiplikator har byggts, men är off-spec i sin precision |
Lombiq Aritmetik
Lombiq Technologies |
C# med Hastlayer för hårdvarugenerering | 8, 16, 32. (64 bitar pågår) |
Ja | 10 Mpops/s Klicka här för mer |
Partiell | Kräver Microsoft .Net API:er |
Deepfloat Jeff Johnson, Facebook | SystemVerilog | Alla (parameteriserat SystemVerilog) | Ja | — (RTL för FPGA/ASIC-designer) |
Begränsad | Överensstämmer inte strikt med posit spec. Stöder +,-,/,*. Implementerar både logaritmisk posit och normala, "linjära" positurer Licens: CC-BY-NC 4.0 för närvarande |
Tokyo Tech | FPGA | 16, 32, utdragbar | Nej | "2 GHz", inte översatt till Mpops/s | Partiell; kända avrundningsbuggar | Ännu att vara öppen källkod |
PACoGen: Posit Arthmetic Core Generator Manish Kumar Jaiswal | Verilog HDL för Posit Arithmetic | Vilken precision som helst. Kan generera valfri kombination av ordstorlek (N) och exponentstorlek (ES) |
Nej | Designhastigheten är baserad på den underliggande hårdvaruplattformen (ASIC/FPGA) | Uttömmande tester för 8-bitars posit. Flera miljoner slumpmässiga tester utförs för upp till 32-bitars posit med olika ES-kombinationer |
Den stöder avrundningsmetoden till närmaste avrundning. |
Vinay Saxena, Research and Technology Centre, Robert Bosch, Indien (RTC-IN) och Farhad Merchant, RWTH Aachen University | Verilog-generator för VLSI, FPGA | Allt | Nej | Liknar flöten av samma bitstorlek | N=8 - ES=2 | N=7,8,9,10,11,12 Selektiva (20000*65536) kombinationer för - ES=1 | N=16 |
För användning i kommersiella produkter. Som vi förstår det. ***Första någonsin integrering av posits i RISC-V*** |
Position Enabled RISC-V Core (Sugandha Tiwari, Neel Gala, Chester Rebeiro, V.Kamakoti, IIT MADRAS) |
Implementering av BSV (Bluespec System Verilog). | 32-bitars posit med (es=2) och (es=3) | Nej | — | Verifierad mot SoftPosit för (es=2) och testad med flera applikationer för (es=2) och (es=3). Inga kända buggar. | Första kompletta posit-kapabla RISC-V-kärna. Stöder dynamisk växling mellan (es=2) och (es=3). Mer info här. |
PERCIVAL
David Mallasén |
Open-Source Posit RISC-V Core med Quire-kapacitet | Position<32,2> med 512-bitars quire | Ja | Designhastigheten är baserad på den underliggande hårdvaruplattformen (ASIC/FPGA) | Funktionstestning av varje positinstruktion. | RISC-V-kärna med positiv kapacitet på applikationsnivå baserad på CVA6 som kan exekvera alla posit-instruktioner, inklusive quire-fused-operationerna. PERCIVAL är det första verket som integrerar hela posit ISA och quire i hårdvara. Det tillåter inbyggt exekvering av posit-instruktioner såväl som de vanliga flyttals-instruktionerna samtidigt. |
LibPosit
Chris Lomont |
En fil C# MIT Licensierad | Vilken storlek som helst | Nej | Omfattande; inga kända buggar | Ops: aritmetik, jämförelser, sqrt, sin, cos, tan, acos, asin, atan, pow, exp, log | |
unumjl
REX Computing |
FPGA-version av "Neo" VLIW-processorn med posit numerisk enhet | 32 | Nej | ~1,2 Gpop/s | Omfattande; inga kända buggar | Ingen delning eller kvadratrot. Första kompletta processordesign som ersätter flöten med posits. |
PNU: Placera numerisk enhet
Calligo Tech |
|
|
Ja - Fullt stöd. | Benchmark pågår. | Uttömmande tester genomförda för 32 bitar och 64 bitar med Quire-stöd slutförda. | Helt integrerad med C/C++-typer och automatiska konverteringar. Stöder fullständigt C++ matematikbibliotek (native och konvertering till/från IEEE). Körtidsintegrationer: GNU Utils, OpenBLAS, CBLAS. Applikationsintegrationer: pågår. Kompilatorstöd utökat: C/C++, G++, GFortran & LLVM (pågår). |
IBM-TACC
Jianyu Chen |
FPGA för särskilda ändamål | 32 | Ja | 16–64 Gpop/s | Endast ett känt fall testades | Gör 128-av-128 matris-matris multiplikation (SGEMM) med hjälp av quire. |
Deep PeNSieve
Raul Murillo |
Python-bibliotek (programvara) | 8, 16, 32 | Ja | Okänd | Okänd | Ett DNN-ramverk som använder inlägg |
Gosit
Jaap Aarts |
Pure Go bibliotek | 16/1 32/2 (ingår är en generisk 32/ES för ES<32) [ förtydligande behövs ] | Nej | 80 Mopp/s för div32/2 och liknande linjära funktioner. Mycket högre för trunkerat och mycket lägre för exp. | Fuzzing mot c softposit med många iterationer för 16/1 och 32/2. Explicit testa edge-fall hittades. | (MIT-licens) Implementeringarna där ES är konstant genereras koden. Generatorn ska kunna generera för alla storlekar {8,16,32} och ES under storleken. De som inte ingår i biblioteket som standard är dock inte testade, otydliga eller stöds. Använd gärna generatorn för att generera dem åt dig, rapportera buggar, tillhandahålla patchar etc. För vissa operationer på 32/ES är det möjligt att blanda och matcha ES. Detta är dock inte testat. |
SoftPosit
SoftPosit är en mjukvaruimplementering av posits baserad på Berkeley SoftFloat. Det tillåter mjukvarujämförelse mellan posits och floats. Det stöder för närvarande
- Lägg till
- Subtrahera
- Multiplicera
- Dela upp
- Fuserad-multiplicera-lägg till
- Fused-dot-product (med quire)
- Roten ur
- Konvertera posit till heltal med och utan tecken
- Konvertera heltal med och utan tecken till posit
- Konvertera posit till en annan positstorlek
- Mindre än, lika, mindre än lika jämförelse
- Avrunda till närmaste heltal
Hjälparfunktioner
- konvertera dubbel till posit
- konvertera posit till dubbel
- cast unsigned heltal till posit
Det fungerar för 16-bitars positer med en exponentbit och 8-bitars posit med noll exponentbit. Stöd för 32-bitars positioner och flexibel typ (2-32 bitar med två exponentbitar) väntar på validering. Den stöder x86_64-system. Den har testats på GNU gcc ( SUSE Linux ) 4.8.5 Apple LLVM version 9.1.0 (clang-902.0.39.2).
Exempel
Lägg till med posit8_t
0
#include "softposit.h" int main ( int argc , char * argv []){ posit8_t pA , pB , pZ ; pA = castP8 ( 0xF2 ); pB = castP8 ( 0x23 ); pZ = p8_add ( pA , pB ); //Att kontrollera svaret genom att konvertera det till dubbel dubbel dZ = convertP8ToDouble ( pZ ); printf ( "dZ: %.15f \n " , dZ ); //För att skriva ut resultat i binär (varning: icke-bärbar kod) uint8_t uiZ = castUI8 ( pZ ); printBinary (( uint64_t * ) & uiZ , 8 ); återvända ; }
Fused dot-produkt med quire16_t
//Konvertera dubbel till posit16_t pA = convertDoubleToP16 ( 1.02783203125 ) ; posit16_t pB = convertDoubleToP16 ( 0,987060546875 ); posit16_t pC = convertDoubleToP16 ( 0,4998779296875 ); posit16_t pD = convertDoubleToP16 ( 0,8797607421875 ); quire16_t qZ ; //Sätt quire till 0 qZ = q16_clr ( qZ ); //ackumulera produkter utan avrundningar qZ = q16_fdp_add ( qZ , pA , pB ); qZ = q16_fdp_add ( qZ , pC , pD ); //Konvertera tillbaka till posit16_t pZ = q16_to_p16 ( qZ ); //För att kontrollera svara dubbel dZ = convertP16ToDouble ( pZ );
Kritik
William M. Kahan, huvudarkitekten för IEEE 754-1985 kritiserar typ I unums på följande grunder (vissa behandlas i typ II och typ III standarder):
- Beskrivningen av unums kringgår med hjälp av kalkyl för att lösa fysikproblem.
- Unums kan vara dyra i termer av tid och strömförbrukning.
- Varje beräkning i unum-utrymme kommer sannolikt att ändra strukturens bitlängd. Detta kräver att de antingen packas upp i ett utrymme med fast storlek, eller dataallokering, deallokering och sophämtning under unum-operationer, liknande problem med att hantera poster med variabel längd i masslagring.
- Unums ger bara två typer av numeriska undantag, tyst och signalerande NaN (Not-a-Number).
- Unum-beräkning kan leverera alltför lösa gränser från valet av en algebraiskt korrekt men numeriskt instabil algoritm.
- Fördelarna med unum framför kort precisionsflytpunkt för problem som kräver låg precision är inte uppenbara.
- Att lösa differentialekvationer och utvärdera integraler med unum garanterar korrekta svar men är kanske inte lika snabba som metoder som vanligtvis fungerar.
Se även
- Karlsruhes exakta aritmetik (KAA)
- Q (sifferformat)
- Signifikanta siffror
- Flytande komma felreducering
- Elias gamma (γ) kod
- Tapered floating point (TFP)
Vidare läsning
- Gustafson, John L. (mars 2013). "Precision med rätt storlek: Unleashed Computing: Behovet av precision i rätt storlek för att spara energi, bandbredd, lagring och elkraft" ( PDF) . Arkiverad (PDF) från originalet 2016-06-06 . Hämtad 2016-06-06 .
- Brueckner, Rich (2015-03-02). "Slidecast: John Gustafson Explains Energy Efficient Unum Computing" . The Rich Report . Inuti HPC. Arkiverad från originalet 2016-07-10 . Hämtad 2016-06-10 .
- Gustafson, John L. (2015). "Slutet på numeriskt fel" (PDF) . Arkiverad (PDF) från originalet 2016-06-06 . Hämtad 2016-06-06 .
- Gustafson, John L. (2016-06-03) [2016-02-22]. "A Radical Approach to Computation with Real Numbers - Unums version 2.0" ( PPT). Arkiverad från originalet 2016-07-10 . Hämtad 2016-07-10 . (OBS. PDF-filer kommer utan anteckningar: [5] [6] )
- Gustafson, John L. (2016-06-06). "En energieffektiv och massivt parallell strategi för giltiga siffror" ( PPT). OCRAR-seminarium. Arkiverad från originalet 2016-07-10 . Hämtad 2016-07-10 . [7] [8]
- Gustafson, John L. (2016). "En radikal metod för beräkning med reella tal" (PDF) . SuperFri.org. Arkiverad (PDF) från originalet 2016-07-10 . Hämtad 2016-07-10 .
- Kulisch, Ulrich W. (2015). "Uppdaterad Intervallaritmetik från slutna intervall till anslutna uppsättningar av reella tal" ( PDF) (förtryck). Institut für Angewandte und Numerische Mathematik – Karlsruhe Institute of Technology (KIT), Tyskland. ID 15/02. Arkiverad (PDF) från originalet 2016-07-12 . Hämtad 2016-07-12 .
- Risse, Thomas (2016-03-10). "Unum – en ändamålsenlig förlängning av IEEE 754" (PDF) (presentation). London South Bank University (LSBU), Storbritannien: Institute of Informatics & Automation (IIA), fakulteten EEE & CS, Bremen University of Applied Sciences , Tyskland. Arkiverad (PDF) från originalet 2016-07-12 . Hämtad 2016-07-12 .
- Kahan, William M. (2016-07-15). "Prof. W. Kahans kommentarer om SORN Arithmetic" (PDF) . Arkiverad (PDF) från originalet 2016-08-01 . Hämtad 2016-08-01 .
- Hunhold, Laslo (2016-11-08). Unum-talformatet: matematiska grunder, implementering och jämförelse med IEEE 754 flytande tal ( PDF) (kandidatuppsats). Universität zu Köln , Mathematisches Institut. arXiv : 1701.00722v1 . Arkiverad (PDF) från originalet 2017-01-07 . Hämtad 2016-10-23 .
- Sterbenz, Pat H. (1974-05-01). Flytande punktberäkning . Prentice-Hall Series in Automatic Computation (1:a upplagan). Englewood Cliffs, New Jersey, USA: Prentice Hall . ISBN 0-13-322495-3 .
- Cave, Skip (2016-08-17). "J Programmeringsspråksimplementering av 3-bitars, 4-bitars, 8-bitars och 16-bitars Precision Unums" . Hämtad 2017-05-03 . (Roger Stokes nedladdningslänk: [9] )
- Ingole, Deepak (2017-09-28). Embedded Implementation of Explicit Model Predictive Control (PhD-avhandling). Slovakiska tekniska universitetet i Bratislava , Slovakien.
externa länkar
- "Konferens för nästa generations aritmetik (CoNGA)" . 2017. Arkiverad från originalet 2017-11-04 . Hämtad 2017-11-04 .
- "SoftPosit" . 2018 . Hämtad 2018-06-13 .
- "Bidrag från gemenskapens källkod" . 2018 . Hämtad 2018-06-13 .
- "Anatomi av ett positnummer" . 2018-04-11 . Hämtad 2019-08-09 .