Loading AI tools
来自维基百科,自由的百科全书
几个文明古国均在歷史早期就计算出了较精确的的近似值以便于處理生产的需要。公元5世纪时,中國劉宋数学家祖冲之用几何方法将圆周率计算到小数点后7位数字。大约同一时间,印度的数学家也将圆周率计算到小数点后5位。历史上首个的精确无穷级数公式(即π的莱布尼茨公式)直到约1000年后才由印度数学家发现。[1][2]微積分的出現,很快地將的計算位數推至數百位,足以滿足任何科學工程的計算需求。在20和21世纪,由于计算机技术的快速发展,借助计算机的计算使得的精度急速提高。截至2021年8月,的十进制精度已高达6.28×1013位。[3]当前人类计算的值的主要目的是为打破记录、测试超级计算机的计算能力和高精度乘法算法,因为几乎所有的科学研究对的精度要求都不会超过几百位。[4]:17[5]
經典近似值
其他进位制的近似值
和所有无理数一样,也无法表達成分数。但每个无理数包括,都能表達成一系列叫连分数的连续分数形式:
在这个连分数的任意一点截断化简,都能得到一个π的近似值;前四个近似值是:3,,,。这些数在历史上是最广为人知且广為使用的几个近似值。用以上方式得出的的近似值要比任何有相同或更小的整数分母的其他整数分数近似值更接近π。[6]由于是一个超越数,据超越数定义来说它不是代數數,又因此不可能是一个二次無理數;是故不能表示为循环连分数。尽管的简单连分数没有表现出任何其他明显规律,[8]数学家们發現了数个广义连分数能表示,例如:[9]
圓周率在遠古時期已估算至前兩位(「3」和「1」)。[谁?]
最早有記載的对圓周率估值在古埃及和古巴比倫出现,而它們兩個文明古国估值都与圆周率的「精確值」相差不到百分之一,可說已是非常精準。
有不少埃及學家認為古埃及遠至古王國時期時期,古埃及人已經會用作為計算圓周率的近似值[10][註 1],但這個說法受到了質疑。[12][13][14][15]
古埃及的莱因德数学纸草书,是古埃及第二中间期时代(约前1650年)由僧侣阿姆士在纸草上抄写的一部数学著作,鉴定撰寫年份為公元前1650年,但抄自一份公元前1850年的文本。它載有用作計算圓面積的公式,该公式中圓周率近似值等于,約等於3.1605。[4]:167
公元前9世紀的《百道梵書》中的天文學運算把,約等於3.139,精确到99.91%,用作圓周率估值[16]。
而公元前6世紀的儀軌經當時採用的值是,約等於3.0883265。[17]
而某些公元前150年前的其他印度文獻把圓周率視為(約等於3.1622)[4]:169。
第一個有紀錄、嚴謹計算π數值的演算法是透過正多邊形的幾何算法,是由希臘數學家阿基米德在西元前250年做的。[4]:170
這個算法使用了有一千年之久,因而有時π亦稱阿基米德常數。[4]:175、205
阿基米德的算法是在計算圓的外切正六邊形及內接正六邊形的邊長,以此計算的上限及下限,之後再將六邊形變成十二邊形,繼續計算邊長,一直計算到正96邊形為止。他根據多邊形的邊長證明,也就是。[18]
阿基米德得到的上限也造成一個常見誤解,認為就等於[4]:171。
希臘羅馬的科學家克劳狄乌斯·托勒密在《天文学大成》一書中提到π的數值是3.1416,可能來自阿基米德,也可能來自阿波罗尼奥斯。[4]:176[19]
數學家在1630年利用多邊形的方式計算π到第39位小數,一直到1699年,其他數學家才利用無窮級數的方式打破其紀錄,計算到第71位小數[20]。
在中国历史上,的數值有3[21]、3.1547(公元前一世紀)、(公元前100年,數值約3.1623)及(第三世紀,數值約3.1556)[4]:176–177。
克劳狄乌斯·托勒密,也計算了圆周率近似值為,也即是。377⁄120
第一個已知的精確到小數點後三位的近似值正是托勒密做的。[24]
這個正可用兩個六十進制數字表示。
王蕃通曉天文數學。撰有《渾天圖記》、《渾天象注》。曾根據渾天說和長期的天象觀察,精心製作渾天儀。
他計算了圆周率近似值為,也即是。
大約在公元265年,魏國的數學家刘徽創立了割圆术,用3,072邊的正多邊形計算出π的數值為3.1416。[25][4]:177
刘徽後來又發明了一個較快的算法,利用邊數差兩倍的正多邊形,其面積的差值會形成等比數列,其公比為的原理,配合96邊形算出的數值為3.14。[25]
何承天亦对圆周率进行研究,他创立了调日法,计算出圆周率近似值为111035/35329,也即約等於3.1429,准确至小数点后2位[26]。
据《隋书·律曆志》[27]记载,祖沖之以「以直徑一億為一丈,圓周盈數三丈一尺四寸一分五厘九毫二秒七忽,朒數三丈一尺四寸一分五厘九毫二秒六忽,正數在盈朒二限之間。密率,圓徑一百一十三,圓周三百五十五。約率,圓徑七,週二十二。」,以此为直径求圆周率,求得盈数(即过剩的近似值)为;肭数(即不足的近似值)为,圆周率的真值介于盈肭两数之间。
《隋书》没有具体说明祖冲之是用什么方法计算出盈肭两数的。一般认为,祖冲之采用的是刘徽割圆术分割到24576边形,又用刘徽圆周率不等式得祖冲之著名的圆周率不等式: 。
祖冲之的这一结果精确到小数点后第7位,直到一千多年后才由15世纪的阿拉伯数学家阿尔·卡西以17位有效数字打破此记录[28]。
按照当时计算使用分数的习惯,祖冲之还采用了两个分数值的圆周率:“约率”(或称之为“疏率”[註 2])以及“密率”。在分母<16600的所有整分数中,密率的比值最接近圆周率[註 3]。祖冲之可能利用何承天的调日法求得圆周率的约率和密率[30]。数学家华罗庚曾认为密率的求得,说明祖冲之可能已经掌握了连分数的概念。
日本数学家三上义夫说,“约率,无非是几百年前希腊数学家阿基米德已经得到的数值,但是 这个分数,却是翻遍古希腊,古印度和阿拉伯的数学文献都找不到的分数,希腊人肯定不知道它;在欧洲直到1586年才由荷兰人安托尼斯宗(Adriaan Anthoniszoon)求出了这个比值。因此,中国人掌握这个非凡的圆周率分数比欧洲早出整整一千年之久”。为纪念这位伟大的中国古代数学家,三上义夫要求把称为“祖率”[31]。
祖冲之在公元480年利用割圆术計算12,288形的邊長,得到的值在3.1415926和3.1415927之间。在之後的八百年內,這都是準確度最高的π估計值。[4]:178為紀念祖沖之對圓周率發展的貢獻,日本數學家三上義夫將這一推算值命名為“祖沖之圓周率”,簡稱“祖率”。[32]
計算出出,也即約等於3.1622777。
波斯天文學家卡西在1424年利用3×228邊的多邊形,計算到六十進制的第9位小數,相當十進制的第16位小數。[33][34]這一突破成為當時的紀錄,延續了約180年。[35]
荷蘭數學家鲁道夫·范·科伊伦在1596年計算到第20位小數,他之後又計算到第35位小數,因此在二十世紀初之前,圓周率在德國會稱為鲁道夫數。[4]:182–183
奧地利天文學家克里斯托夫·格林伯格在1630年用1040邊形計算到第38位小數[36],至今這仍是利用多邊形算法可以達到最準確的結果[4]:183。
16世紀及17世紀時,的計算開始改用無窮级数的計算方式。無窮级数是一組無窮數列的和[4]:185–191。
無窮级数讓數學家可以計算出比阿基米德以及其他用幾何方式計算的數學家更準確的結果。[4]:185–191
雖然詹姆斯·格雷果里及戈特弗里德·莱布尼茨等歐洲數學家利用無窮數列計算π而使得该方法为大家所知,但这种方法最早是由印度科學家在大約1400到1500年之間發現的。[4]:185-186[37]第一個记载的用無窮级数計算π的人是约公元1500年左右时,印度天文學家尼拉卡莎·薩默亞士在他的著作《系統匯編》中用梵語詩所記錄。[38]當時沒有這個數列對應的證明,而證明出現在另一本較晚的印度作品《基本原理》,年代約在公元1530年。尼拉卡莎將該數列歸功於更早期的印度數學家桑加馬格拉馬的馬德哈瓦( 1350 – 1425)。[38]有許多相關的無窮级数,包括有關、及的,現在稱為馬德哈瓦數列或π的莱布尼茨公式[38]。瑪達瓦在1400年用無窮级数計算π到第11位小數,但在1430年一位波斯數學家卡西利用多邊形算法否定了他算的的結果[39]。
歐洲第一個發現的無窮項圓周率公式是無窮乘積(和一般用來計算π的無窮級數不同),由法國科學家弗朗索瓦·韦达在1593年發現[4]:187[41]:
約翰·沃利斯在1655年發現了沃利斯乘积,是歐洲第二個發現的無窮項圓周率公式[4]:187:
微积分学是由英國科學家艾萨克·牛顿及德國數學家戈特弗里德·莱布尼茨在1660年代發明,因此也出現許多計算π的無窮級數。牛頓自己就利用反正弦()數列在1655年或1666年將π近似到第15位小數,後來寫到「我很羞愧的告訴你我為了這個計算用了多少個數字,我當時沒有做其他的事。」[40]
蘇格蘭數學家詹姆斯·格雷果里在1671年發現了馬德哈瓦公式,莱布尼茨也在1674年發現:[4]:188–189[42]
這個公式即為格雷果里-莱布尼茨公式,在時數值為。[42]1699年時英國數學家亚伯拉罕·夏普用格雷果里-莱布尼茨公式,在時計算,計算到了的第71位小數,打破由多邊形算法得到的第39位小數的记录。[4]:189格雷果里-莱布尼茨公式在時非常簡單,但收斂到最終值的速度非常慢,因此現在不再会用此公式來計算。[4]:156
約翰·梅欽在1706年利用格雷果里-莱布尼茨級數產生了一個可以快速收斂的公式:[4]:192–193
梅欽用這個公式計算到的第100位小數[4]:72–74後來其他數學家也發展了一些類似公式,現在稱為梅欽類公式,創下了許多計算位數的記錄。[4]:72–74在進入電腦時代時,梅欽類公式仍然是个耳熟能详的可以計算的公式,而且在约250年的时间里,很多有關位數的記錄都是梅欽類公式所得,比如在1946年時由達尼爾·弗格森(Daniel Ferguson)用這類公式計算到第620位小數,是在沒有計算設備輔助下的最佳紀錄。[4]:192–196, 205
1844年,計算天才扎卡里亞斯·達斯在德國數學家卡爾·弗里德里希·高斯的要求下以梅欽類公式心算了的200個小數位,並創下紀錄。[4]:194-196英國數學家威廉·謝克斯花了15年的時間計算π到小數707位,不過中間在第528位小數時出錯,因此後面的小數也都不正確。[4]:194–196
有些π的無窮級數收斂的比其他級數要快,數學家一般會選用收斂速度較快的級數,可以在較少的計算量下計算,且達到需要的準確度[43][4]:15–17, 70–72, 104, 156, 192–197, 201–202。以下是π的莱布尼茨公式:[4]:69–72
隨著一項一項的值加入總和中,只要項次夠多,總和最後會慢慢接近。不過此數列的收斂速度很慢,要到500,000項之後,才會精確到的第五小數[44]。
尼拉卡莎在15世紀發展了另一個的無窮級數,其收斂速度較格雷果里-萊布尼茨公式要快很多,該級數為:[45]
以下比較二個級數的收斂速率:
的無窮級數 | 第1項 | 前2項 | 前3項 | 前4項 | 前5項 | 收斂到: |
---|---|---|---|---|---|---|
4.0000 | 2.6666... | 3.4666... | 2.8952... | 3.3396... | π = 3.1415... | |
3.0000 | 3.1666... | 3.1333... | 3.1452... | 3.1396... |
計算前5項後,格雷果里-萊布尼茨級數的和跟的誤差為0.2,而尼拉卡莎級數和的誤差為0.002。尼拉卡莎級數收斂的快很多,因此也比較適合用來計算的數值。收斂更快的級數有梅欽類公式及楚德诺夫斯基算法,後者每計算一項就可以得到14位正確的小數值數[43]。
二十世紀中期计算机技术的发展、革新再次引发了計算π位數的熱潮。美國數學家约翰·伦奇及李維·史密斯在1949年利用桌上型計算機計算到1,120位[4]:205。同年,喬治·韋斯納(George Reitwiesner)及约翰·冯·诺伊曼帶領的團隊利用反三角函数(arctan)的無窮級數,通过ENIAC計算到了小數第2,037位,花了70小時的電腦工作時間[46]。這一紀錄後來多次由其他透過arctan級數计算出的結果打破(1957年到7480位小數,1958年到第一萬位數,1961年到第十萬位小數),直到1973年,人们计算出了小数点后的第一百萬位小數[4]:197。
1980年代的两项發明加速了的計算。第一项是人们發现了新的的迭代法去计算π的值,其計算速度比無窮級數會要快很多。另一项是人们發现了可以快速計算大數字乘積的乘法演算法[4]:15–17。這類演算法在現代π的計算上格外的重要,因為電腦大部分的工作時間都是在計算乘法[4]:131。這類演算法包括Karatsuba算法、Toom–Cook乘法及以傅里叶变换為基礎的乘法演算法(傅里叶乘法)[4]:132, 140。
迭代演算法最早是在1975年至1976年间分别由美國物理學家尤金·薩拉明及奧地利科學家理查·布蘭特独立提出[4]:87。這两个演算法没有依赖無窮級數來計算。迭代會重覆一個特定的計算,将前一次的計算結果作为這一次的輸入值,使得計算結果漸漸的趨近理想值。此方式的原始版本其實是在160年前由卡爾·弗里德里希·高斯提出,現在稱為算术-几何平均数算法(AGM法)或高斯-勒让德算法[4]:87。因為薩拉明及布蘭特都曾对此進行修改,因此这个算法也稱為薩拉明-布蘭特演算法。
迭代演算法因為收斂速度比無窮級數快很多,在1980年代以後廣為使用。無窮級數隨著項次的增加,一般來說正確的位數也會增加幾位,但迭代演算法每多一次計算,正確的位數會呈几何级数增长。例如薩拉明-布蘭特演算法每多一次計算,正確位數會是之前的二倍。1984年加拿大人喬納森·波温及彼得·波温提出一個迭代演算法,每多一次計算,正確位數會是之前的四倍,1987年時有另一個迭代演算法,每多一次計算,正確位數會是之前的五倍[47]。日本數學家金田康正使用的演算法在1955年及2002年之間創下了若干个紀錄[48]。不過迭代演算法的快速收斂也有其代價,因为这个算法需要的内存的大小明顯的要比無窮級數要多[48]。
一般而言,值并不需要过于精确便能够满足大部分的数学运算的需求。按照約爾格·阿恩特(Jörg Arndt)及克里斯托夫·黑內爾(Christoph Haenel)的计算,39個數位已足夠運算絕大多數的宇宙学的计算需求,因為這個精確度已能夠将可觀測宇宙圆周的精确度準確至一個原子大小[49]。 尽管如此,人們仍然是奋力地運算出小数点后的上千甚至上百萬個數位[4]:17–19。這一部分是出于人類對打破記錄的冲动,因为那些和有關的成就往往成為世界各地的新聞頭條[50][51]。此外,这其中也有一些實際的好處,例如測試超级计算机、測試数值分析算法等(包括高精度乘法算法)。在純粹數學的领域中,计算的位数也能让人们来评定π的隨機性[4]:18。
现代计算的程序不仅仅局限于迭代算法。20世纪80与90年代,人们发现了一些可用来计算的新无穷级数,其收敛速度可与迭代算法媲美,而又有着复杂度、内存密集度更低的优势。[48]印度数学家斯里尼瓦瑟·拉马努金是这方面的先驱,他在1914年发表了许多与相关的公式,这些公式十分新颖,极为优雅而又颇具数学深度,收敛速度也非常快。[4]:103–104下式即为一例,其中用到了模方程:
这个无穷级数收敛速度远快于绝大多数反正切数列,包括梅钦公式。[4]:104第一位使用拉马努金公式计算并取得进展的是比尔·高斯珀,他在1985年算得了小数点后一千七百万位。[4]:104, 206拉马努金公式开创了现代数值近似算法的先河,此后波尔文兄弟和楚德诺夫斯基兄弟进一步发展了这类算法。[4]:110–111后者于1987年提出了楚德诺夫斯基公式,如下所示:
此公式每计算一项就能得到的约14位数值[52],因而用於突破圆周率的数位的计算。利用这个公式,楚德诺夫斯基兄弟于1989年算得小数点后10亿(109)位,法布里斯·贝拉于2009年算得2.7千亿(2.7×1012)位,亚历山大·易和近藤滋在2011年算得一万亿(1013)位。[4]:110–111, 206[53][54]类似的公式还有拉马努金-佐藤级数。
2006年,加拿大数学家西蒙·普勞夫利用PSLQ整数关系算法[55]按照以下模版生成了几个计算的新公式:
蒙特卡洛方法是以概率统计理论为指导的一类非常重要的数值计算方法,通过进行大量重复试验计算事件发生的频率,按照大数定律(即当试验次数充分大时,频率充分地接近于概率)可以求得的近似值[57]。 布豐投針問題就是其中一个应用的例子:当一枚长度为的针随机地往一个画满间距为的平行线的平面上抛掷次, 如果针与平行直线相交了次,那么当充分大时就可根据以下公式算出的近似值[58]:
另一个利用蒙特卡罗方法计算值的例子是随机地往内切四分之一圆的正方形内抛掷大量的点,落在四分之一圆内的点的数量与抛掷点的总量的比值会近似等于.[4]:39–40[59]
此外,还可以通过进行随机游走试验,并利用蒙特卡罗方法计算值,如抛掷一枚均匀的硬币次,并记录正面朝上的次数,所得结果中,正面朝上的次数服从二項分佈且
因为硬币均匀,所以N次试验中每次试验结果相互独立。由此可定义一系列独立的随机变量,当抛掷结果为正面时否则为-1,且且取何值具有相同的概率(即,正面朝上和背面朝上的概率相同)。对随机变量求和可得
设k为“硬币正面朝上的次数”减去“硬币反面朝上的次数”,即可得到。对式子进行变换,得,因此
可以证明[60],
并且当变大时,的值会渐近于,因此当充分大时可根据以下公式算出的近似值:[61]
和其他计算值的方法相比,蒙特卡洛方法收敛速度很慢,而且无论进行多少次实验,都无从得知的估值已经精确到了第几位。因此,当追求速度或精度时,蒙特卡洛方法不适合用来估计。[4]:43[62]
1995年引入的兩個算法开辟了研究的新途径。因为每计算出一位数字,該數就会像流过阀门的水一样不会再出现在后续的计算过程中,这种新進算法叫做阀门算法。[4]:77–84[63]这就与无穷级数及迭代算法形成对比——无穷级数和迭代算法自始至终的每一步计算都会涉及到之前所有步骤计算出的中间值。[4]:77–84
1995年,美國數學家斯坦·瓦格纳和斯坦利·拉比諾維茨(Stanley Rabinowitz)发明了一种簡單的阀门算法[63][4]:77[64],其運算速度類似arctan演算法,但速度比迭代算法要慢[4]:77。
贝利-波尔温-普劳夫公式(BBP)是另一個阀门算法,屬於一种位數萃取演算法。1995年,西蒙·普勞夫等人發現[4]:117, 126–128[65]
這個公式和其他的公式不同,可以在十六进制下計算的任意位數小數,而不用計算所有前面的小數位數[4]:117, 126–128。一个十六进制下的数位可计算得到特定一个二进制的数位;想要得到一个八进制数位的话,计算一、两个十六进制小數即可。目前也已發現一些這種演算法的變體,不過人们還沒有发现針對十進制、可以快速產生特定位數小數數字的位數萃取演算法[66]。位數萃取演算法的一個重要用途是用來確認聲稱是計算到小數位數的新記錄:若有聲稱是新紀錄的計算結果出現,先將十進制的數值轉換到十六進制,再用贝利-波尔温-普劳夫公式,去確認最後的一些位數(用亂數決定),若這些位數都對,人们就能有一定把握认为此計算結果是对的[54]。
在1998年到2000年之間,分布式计算計畫PiHex利用貝拉公式(贝利-波尔温-普劳夫公式的一種變體)計算的第1015個位,結果是0[4]:20[67]。在2010年9月,一名雅虎員工利用公司的Apache Hadoop應用程式在上千台電腦上計算在2×1015個数位开始,往后数的256個位,其第2×1015個位剛好也是0[68]。
值得注意的是,一些法律或歷史文本欲「定義π」為有理數,尤其是1897年的「印第安納州法案」,指明「直徑和圓周比例為四分之五比4(暗示「π= 3.2」);和希伯來聖經中的一個段落,暗示「π= 3」。
在古代,人們使用60進制來計算。在60進制中,π能被準確至小數點後八位(十進制),而這數字是3:8:29:4460,即是:
(下一個60進制的數位為0)
除此之外,π的近似值還能以以下方式表示:
可以通过蒙特卡洛方法来计算圆周率。
以原点(0, 0)为圆心,画一个半径为的圆。然后以原点为中心,画一个边长为的正方形。圆和正方形内切。
圆的面积为,正方形的面积为。
于是有,。
通过生成0到r之间随机数作为一个点的横纵坐标,所有点均落在正方形内。
通过统计圆内的点数与总点数,。
当随时点的数目增加时,所得结果会越接近于圆周率。
但是该方法也有不足之处。具体可参考蒙特卡洛方法。
π的連分數表示式是[3; 7, 15, 1, 292, 1, 1, ...]。這連分數沒有任何模式。π有很多用一條簡單的規矩然製成的廣義連分數
在1995年,西蒙·普勞夫發現了贝利-波尔温-普劳夫公式。這公式能在16進制中計算pi的任意數位,而不用計算之前的數位。[73]
在1996年,西蒙·普勞夫發明了一個公式,能在O(n3log(n)3)的時間之內計算出pi在任意進制的第n個數位[74]。在1997年,法布里斯·贝拉發明了另一個公式,把計算所需時間縮短至O(n2)。他又發明了在2進制計算pi的公式。[75]
在1961年,丹尼爾柄和他的團隊在美國海軍研究實驗室計算了π的前100,000數位。
他和他的團隊使用了兩個不同的幂級數來計算π的數值。第一個幂級數中,任何錯誤都會造成一個比較高的數值;而另一個中,任何錯誤都會造成一個比較低的數值。所以如果兩個幂級數計算出同樣的數值,那個數值就肯定正確。美國海軍研究實驗室發放了π的前100,000數位。
但是以上的兩個幂級數也要很長的時間才能計算出結果。相反地,約翰·梅欽的公式與反正切的泰勒级数一起使用則能很快地計算結果:
這類的公式被稱為梅欽類公式。(注意,{ x,y} = {239, 132}是佩爾方程「x2-2y2 = -1」的其中一個解答。)
印度數學家斯里尼瓦瑟·拉马努金發現了π的很多其他表示方式。他與戈弗雷·哈罗德·哈代一起工作了很多年。
如果要計算π小數點後很多位,計算者通常會使用高斯-勒让德算法,波尔温公式,和1976年發明的薩拉明 - 布倫特公式。
π和1/π的小數點後首十萬位能在古腾堡计划裡查閱(參見#外部連結)。
在2002年12月,在東京大學進修的金田康正發放了π小數點後1,241,100,000,000位的值,創造了新的世界記錄。他在2002年9月以六十四部日立的超級電腦計算出這值。這些電腦有1TB的記憶體,而且能在每秒執行2兆次運算。上一個記錄(21億位)所使用的電腦每秒只能執行1兆次運算。金田康正使用了以下公式:
這些近似值由於有太多數位,所以沒有實際用途,只是用來測試超級電腦。
在1997年,大衛·貝利(David H. Bailey)、皮特·波爾溫和西蒙·普勞夫發佈了一條新的公式來計算π的值:
這公式能在不知道前k - 1數位的值之下,在2進制或16進制中計算出π的第k個數位的值。貝利的網頁(页面存档备份,存于互联网档案馆)包含了計算方法,而且把方法以幾個程式語言記下。PiHex計算出π小數點後一兆數位的值。
法布里斯·贝拉推出了贝利-波尔温-普劳夫公式的改良版——貝拉公式:
還有其他計算π的值的公式:
拉馬努金的公式收歛的速度異常地快,這公式後來在2000年演變成最快的公式(楚德諾夫斯基算法):
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.