Bölme algoritması - Division algorithm

Bir bölme algoritması bir algoritma N ve D olmak üzere iki tamsayı verildiğinde, bölüm ve / veya kalan, sonucu Öklid bölümü. Bazıları elle uygulanırken, diğerleri dijital devre tasarımları ve yazılımları tarafından kullanılır.

Bölme algoritmaları iki ana kategoriye ayrılır: yavaş bölme ve hızlı bölme. Yavaş bölme algoritmaları, yineleme başına son bölümün bir basamağını üretir. Yavaş bölme örnekleri şunları içerir: restore etme, performans göstermeyen geri yükleme, geri yüklenmeyen, ve SRT bölünme. Hızlı bölme yöntemleri, son bölüme yakın bir yaklaşımla başlar ve her yinelemede son bölümün iki katı rakamını üretir. Newton-Raphson ve Goldschmidt algoritmalar bu kategoriye girer.

Bu algoritmaların varyantları hızlı kullanıma izin verir çarpma algoritmaları. Sonuç olarak, büyük tamsayılar için bilgisayar saati hangi çarpma algoritması kullanılırsa kullanılsın, bir bölme için gereken çarpma süresi ile sabit bir faktöre kadar aynıdır.

Tartışma forma başvuracak , nerede

  • N = Pay (temettü)
  • D = Payda (bölen)

girdi ve

  • Q = Bölüm
  • R = Kalan

çıktıdır.

Tekrarlanan çıkarma ile bölme

En basit bölme algoritması, tarihsel olarak bir en büyük ortak böleni sunulan algoritma Öklid Elementler Kitap VII, Önerme 1, yalnızca çıkarma ve karşılaştırmaları kullanarak iki pozitif tam sayı verilen kalanı bulur:

süre N  D yapmak  N := N  Dsondönüş N

Bölüm ve kalanın var olduğunun ve benzersiz olduğunun kanıtı ( Öklid bölümü ) eklemeler, çıkarmalar ve karşılaştırmalar kullanarak tam bir bölme algoritmasına yol açar:

işlevi bölmek(N, D)  Eğer D = 0 sonra hata(Sıfıra bölüm) son  Eğer D < 0 sonra (Q, R) := bölmek(N, D); dönüş (Q, R) son  Eğer N < 0 sonra    (Q,R) := bölmek(N, D)    Eğer R = 0 sonra dönüş (Q, 0)    Başka dönüş (Q  1, D  R) son  son  - Bu noktada, N ≥ 0 ve D> 0  dönüş divide_unsigned(N, D)son  işlevi divide_unsigned(N, D)  Q := 0; R := N  süre R  D yapmak    Q := Q + 1    R := R  D  son  dönüş (Q, R)son

Bu prosedür her zaman R ≥ 0 üretir. Çok basit olmasına rağmen Ω (Q) adımlarını alır ve bu nedenle, uzun bölme gibi yavaş bölme algoritmalarından bile katlanarak daha yavaştır. Q'nun küçük olduğu biliniyorsa (bir çıktı duyarlı algoritma ) ve çalıştırılabilir bir özellik olarak hizmet edebilir.

Uzun bölünme

Uzun bölme, ondalık gösterimle ifade edilen çok basamaklı sayıların kalem ve kağıtla bölünmesi için kullanılan standart algoritmadır. Bölünenin olası en büyük katını (rakam düzeyinde) her aşamada çıkararak, bölünenin soldan sağ ucuna kademeli olarak kayar; katlar daha sonra bölümün rakamları haline gelir ve son fark daha sonra kalandır.

Bir ikili taban ile kullanıldığında, bu yöntem, aşağıda kalan algoritma ile (işaretsiz) tamsayı bölümünün temelini oluşturur. Kısa bölüm tek basamaklı bölenler için uygun kısaltılmış bir uzun bölme biçimidir. Kümeleme - kısmi bölüm yöntemi veya adam asmaca yöntemi olarak da bilinir - anlaşılması daha kolay olabilecek daha az verimli bir uzun bölme biçimidir. Bir kişinin halihazırda her aşamada sahip olandan daha fazla çarpanı çıkarmasına izin vererek, uzun bölmenin daha serbest biçimli bir varyantı da geliştirilebilir.[1]

Kalan tamsayı bölümü (işaretsiz)

Aşağıdaki algoritma, ünlülerin ikili versiyonu uzun bölme bölünecek N tarafından D, bölümü yerleştirmek Q ve geri kalan R. Aşağıdaki kodda, tüm değerler işaretsiz tamsayılar olarak ele alınır.

Eğer D = 0 sonra hata(DivisionByZeroException) sonQ := 0                  - Bölümü başlat ve sıfıra kalR := 0                     için ben := n  1 .. 0 yapmak  - n, N cinsinden bit sayısıdır  R := R << 1           - Sol kaydırmalı R, 1 bit  R(0) := N(ben)          - R'nin en az anlamlı bitini payın i bitine eşit olarak ayarlayın  Eğer R  D sonra    R := R  D    Q(ben) := 1  sonson

Misal

N = 1100 alırsak2 (1210) ve D = 1002 (410)

Aşama 1: R = 0 ve Q = 0 olarak ayarlayın
Adım 2: İ = 3 alınız (N'deki bit sayısından bir eksik)
Aşama 3: R = 00 (sola 1 kaydırılmış)
4. adım: R = 01 (R (0) 'ı N (i)' ye ayarlar)
Adım 5: R

Adım 2: İ = 2 olarak ayarlayın
Aşama 3: R = 010
4. adım: R = 011
Adım 5: R

Adım 2: İ = 1 olarak ayarlayın
Aşama 3: R = 0110
4. adım: R = 0110
Adım 5: R> = D, ifade girildi
Adım 5b: R = 10 (R D)
Adım 5c: Q = 10 (Q (i) 'yi 1'e ayarlamak)

Adım 2: İ = 0 olarak ayarlayın
Aşama 3: R = 100
4. adım: R = 100
Adım 5: R> = D, ifade girildi
Adım 5b: R = 0 (R − D)
Adım 5c: Q = 11 (Q (i) 'yi 1'e ayarlamak)

son
S = 112 (310) ve R = 0.

Yavaş bölme yöntemleri

Yavaş bölme yöntemlerinin tümü standart bir tekrarlama denklemine dayanır [2]

,

nerede:

  • Rj ... j-bölümün kısmi kalanı
  • B ... kök (taban, genellikle bilgisayarlarda ve hesap makinelerinde dahili olarak 2)
  • q n − (j + 1) pozisyondaki bölümün rakamıdır n− (j + 1), basamak konumlarının en az anlamlı 0'dan en anlamlı olana kadar numaralandırıldığı n−1
  • n bölümdeki basamak sayısıdır
  • D bölen

Bölme geri yükleniyor

Bölümün geri yüklenmesi, sabit nokta kesirli sayılar ve 0 varsayımına bağlıdır < D < N.[kaynak belirtilmeli ]

Bölüm basamakları q {0,1} rakam kümesinden oluşturulur.

İkili (taban 2) bölmeyi geri yüklemek için temel algoritma:

R := ND := D << n            - R ve D, N ve Q'nun iki katı kelime genişliğine ihtiyaç duyariçin ben := n  1 .. 0 yapmak  - Örneğin 32 bit için 31..0  R := 2 * R  D          - Kaydırılmış değerden deneme çıkarma (2 ile çarpma, ikili gösterimde bir kaymadır)  Eğer R  0 sonra    q(ben) := 1          - Sonuç biti 1  Başka    q(ben) := 0          - Sonuç bit 0    R := R + D         - Yeni kısmi kalan (geri yüklenen) kaymış değerdir  sonson- Nerede: N = Pay, D = Payda, n = # bit, R = Kısmi kalan, q (i) = bölümün bit #i

Yukarıdaki geri yükleme bölme algoritması, kaydırılmış değeri 2 kaydederek geri yükleme adımını önleyebilir.R ek bir kayıtta çıkarmadan önce T (yani TR << 1) ve kopyalama kaydı T -e R çıkarma sonucu 2 olduğundaR − D negatiftir.

Uygulanmayan geri yükleme bölümü, 2R değerinin kaydedilmesi dışında bölümü geri yüklemeye benzer. D R <0 olması durumunda tekrar eklenmesine gerek yoktur.

Geri yüklenmeyen bölüm

Geri yüklenmeyen bölüm, bölüm basamakları için {0, 1} yerine {−1, 1} rakam kümesini kullanır. Algoritma daha karmaşıktır, ancak donanıma uygulandığında, bölüm biti başına yalnızca bir karar ve toplama / çıkarma olması avantajına sahiptir; çıkarma işleminden sonra, işlem sayısını yarıya kadar azaltabilen ve daha hızlı yürütülmesini sağlayan herhangi bir geri yükleme adımı yoktur.[3] Negatif olmayan sayıların ikili (taban 2) geri yüklenmeyen bölümü için temel algoritma şudur:

R := ND := D << n            - R ve D, N ve Q'nun iki katı kelime genişliğine ihtiyaç duyariçin ben = n  1 .. 0 yapmak  - örneğin 32 bit için 31..0  Eğer R >= 0 sonra    q[ben] := +1    R := 2 * R  D  Başka    q[ben] := 1    R := 2 * R + D  son Eğerson - Not: N = Pay, D = Payda, n = # bit, R = Kısmi kalan, q (i) = bölümün bit #i.

Bu algoritmaya göre bölüm, −1 ve +1 rakamlarından oluşan standart olmayan bir formdadır. Son bölümü oluşturmak için bu formun ikiliye dönüştürülmesi gerekir. Misal:

Aşağıdaki bölümü {0,1} rakam kümesine dönüştürün:
Başlat:
1. Olumlu terimi oluşturun:
2. Negatif terimi * maskeleyin:
3. Çıkarın: :
*. (İmzalı ikili gösterim Birinin tamamlayıcısı olmadan Ikisinin tamamlayıcısı )

−1 hanesi yaygın olduğu gibi sıfırlar (0) olarak saklanır, sonra dır-dir ve bilgi işlem önemsizdir: orijinal üzerinde bir tamamlayıcıyı (azar azar tamamlayıcı) gerçekleştirin .

Q := Q  bit.bnot(Q)      * Uygun Eğer 1 Rakamlar içinde Q vardır Temsil edilen gibi sıfırlar gibi dır-dir Yaygın.

Son olarak, bu algoritma ile hesaplanan bölümler her zaman tektir ve R'nin geri kalanı −D ≤ R sonra Q, standart olmayan formdan standart forma dönüştürülür:

Eğer R < 0 sonra  Q := Q  1  R := R + D  - Yalnızca Kalan ilgi söz konusuysa gereklidir.son Eğer

Gerçek kalan R >> n'dir. (Bölünmeyi geri yüklemede olduğu gibi, R'nin düşük sıralı bitleri, Q bölümünün bitlerinin üretilmesiyle aynı oranda kullanılır ve her ikisi için tek bir kaydırma yazmacının kullanılması yaygındır.)

SRT bölümü

Yaratıcıları (Sweeney, Robertson ve Tocher) için isimlendirilen SRT bölümü, birçok alanda bölünme için popüler bir yöntemdir. mikroişlemci uygulamalar.[4][5] SRT bölümü, geri yüklenmeyen bölüme benzer, ancak bir arama tablosu her bölüm basamağını belirlemek için temettü ve böleni temel alır.

En önemli fark şudur: gereksiz temsil bölüm için kullanılır. Örneğin, radix-4 SRT bölmesini uygularken, her bölüm basamağı aşağıdakilerden seçilir: beş olasılıklar: {−2, −1, 0, +1, +2}. Bu nedenle, bölüm basamağı seçiminin mükemmel olması gerekmez; sonraki bölüm rakamları küçük hataları düzeltebilir. (Örneğin, bölüm basamak çiftleri (0, +2) ve (1, −2) eşdeğerdir, çünkü 0 × 4 + 2 = 1 × 4−2.) Bu tolerans, bölüm basamaklarının yalnızca birkaç sayı kullanılarak seçilmesine izin verir. tam genişlikte bir çıkarma gerektirmek yerine, temettü ve bölenin en önemli bitleri. Bu sadeleştirme ise 2'den yüksek bir tabanın kullanılmasına izin verir.

Geri yüklenmeyen bölüm gibi, son adımlar, son bölüm bitini çözmek için son bir tam genişlikte çıkarma ve bölümün standart ikili biçime dönüştürülmesidir.

Intel pentium işlemcinin rezil kayan noktalı bölme hatası yanlış kodlanmış bir arama tablosundan kaynaklandı. 1066 başvurunun beşi yanlışlıkla ihmal edilmişti.[6][7]

Hızlı bölme yöntemleri

Newton-Raphson bölümü

Newton – Raphson kullanır Newton yöntemi bulmak için karşılıklı nın-nin ve bu tersi ile çarpın bulmak için son bölüm .

Newton-Raphson bölünmesinin adımları:

  1. Bir tahmin hesaplayın karşılıklı için bölen .
  2. Art arda daha doğru tahminler hesaplayın karşılıklı. Newton – Raphson yönteminin kullanıldığı yer burasıdır.
  3. Bölmeyi bölenin tersi ile çarparak hesaplayın: .

Newton'un yöntemini uygulamak için tersini bulmak için , bir işlev bulmak gerekli sıfır olan . Açıkça böyle bir işlev , ancak bunun için Newton-Raphson yinelemesi yararsızdır, çünkü zaten tersini bilmeden hesaplanamaz. (dahası, yinelemeli iyileştirmelere izin vermek yerine, tek adımda tam tersini hesaplamaya çalışır). İşe yarayan bir işlev Newton – Raphson yinelemesinin verdiği

hangisinden hesaplanabilir yalnızca çarpma ve çıkarma kullanarak veya iki kullanarak kaynaşmış çarpma-ekler.

Hesaplama açısından, ifadeler ve eşdeğer değildir. 2 hassasiyetli bir sonuç elde etmek içinn ikinci ifadeden yararlanılırken bitler, aradaki çarpım hesaplanmalıdır. ve verilen hassasiyetin iki katı (n bitler).[kaynak belirtilmeli ] Aksine, aradaki ürün ve sadece bir hassasiyetle hesaplanması gerekir n bitler, çünkü önde gelen n bitleri (ikili noktadan sonra) sıfırdır.

Hata şu şekilde tanımlanmışsa , sonra:

Her yineleme adımında hatanın bu karesi - sözde ikinci dereceden yakınsama Newton-Raphson's yöntemi - sonuçtaki doğru basamak sayısının kabaca her yinelemede iki katına çıkar, ilgili sayılar çok sayıda basamağa sahip olduğunda son derece değerli hale gelen bir özellik (örneğin büyük tamsayı alanında) Ancak bu aynı zamanda, yöntemin ilk yakınsamasının, özellikle ilk tahmin durumunda, nispeten yavaş olabileceği anlamına gelir. kötü seçilmiş.

Bir ilk tahmin seçme alt problemi için bölen için bir bit kaydırma uygulamak uygundur D 0,5 ≤ olacak şekilde ölçeklendirmek içinD ≤ 1; pay için aynı bit kaydırmasını uygulayarak N, bölümün değişmemesi sağlanır. O zaman bir lineer kullanılabilir yaklaşım şeklinde

Newton-Raphson'ı başlatmak için. Aralıktaki bu yaklaşımın mutlak değerinin maksimumunu en aza indirmek için , biri kullanmalı

Doğrusal yaklaşımın katsayıları aşağıdaki gibi belirlenir. Hatanın mutlak değeri . Hatanın maksimum mutlak değerinin minimum değeri, Chebyshev denge teoremi uygulanan . Yerel minimum ne zaman oluşur çözümü olan . Bu minimumdaki işlev, uç noktalardaki işlevin tam tersi işarette olmalıdır, yani, . İki bilinmeyenteki iki denklemin benzersiz bir çözümü var ve ve maksimum hata . Bu yaklaşımı kullanarak, başlangıç ​​değerinin hatasının mutlak değeri şundan küçüktür:

Katsayıları kullanarak 1'den büyük bir polinom uyumu oluşturmak mümkündür. Remez algoritması. Takas, ilk tahminin daha fazla hesaplama döngüsü gerektirmesidir, ancak umarım Newton-Raphson'un daha az yinelemesine karşılık.

Bu yöntem için yakınsama tam olarak ikinci dereceden, bunu takip eder

değeri hesaplamak için adımlar yeterlidir ikili yerler. Bu, IEEE için 3 olarak değerlendirilir Tek hassasiyet ve ikisi için 4 çift ​​hassasiyet ve çift ​​uzatılmış biçimler.

Sözde kod

Aşağıdaki bölüm, N ve D hassasiyetle P ikili yerler:

M × 2 olarak Ekspres De burada 1 ≤ M <2 (standart kayan nokta gösterimi) D ': = D / 2e + 1   // 0,5 ile 1 arasında ölçek, bit kaydırma / üs çıkarma ile gerçekleştirilebilirN ': = N / 2e + 1X: = 48/17 - 32/17 × D ' // sabitleri D ile aynı hassasiyette ön hesaplamatekrar et  zamanlar   // sabit P'ye göre önceden hesaplanabilir    X: = X + X × (1 - D '× X)sondönüş N '× X

Örneğin, çift duyarlıklı kayan noktalı bölme için bu yöntem 10 çarpma, 9 toplama ve 2 kaydırma kullanır.

Varyant Newton-Raphson bölümü

Newton-Raphson bölme yöntemi aşağıdaki gibi biraz daha hızlı olacak şekilde değiştirilebilir. Vites değiştirdikten sonra N ve D Böylece D [0.5, 1.0] içinde, ile başlat

Bu, 1 / 'e en iyi ikinci dereceden uydurD ve 1 / 99'a eşit veya daha küçük bir hata mutlak değeri verir. Hatayı yeniden ölçeklendirilmiş bir üçüncü sıraya eşit yapmak için seçilir Chebyshev polinomu birinci türden. Katsayılar önceden hesaplanmalı ve sabit kodlanmalıdır.

Ardından döngüde, hatayı küpleyen bir yineleme kullanın.

Y·E terim yenidir.

Döngü, X 1 / ile aynı fikirde olana kadar gerçekleştirilirseD liderliğinde P bit, sonra yineleme sayısı en fazla

ki bu, 2'ye ulaşmak için 99'un küplenmesi gereken sayıdırP+1. Sonra

bölüm P bitler.

Başlatma ya da yinelemede daha yüksek dereceli polinomların kullanılması, performansın düşmesine neden olur, çünkü gereken ekstra çarpımlar daha fazla yineleme yapmak için daha iyi harcanır.

Goldschmidt bölümü

Goldschmidt bölümü[8] (Robert Elliott Goldschmidt'ten sonra[9]) hem bölüneni hem de bölenini ortak bir faktörle tekrar tekrar çarpan yinelemeli bir işlem kullanır Fben, bölen 1'e yakınlaşacak şekilde seçilir. Bu, temettüün aranan bölüme yakınsamasına neden olur Q:

Goldschmidt bölümü için adımlar şunlardır:

  1. Çarpma faktörü için bir tahmin oluşturun Fben .
  2. Temettü ve bölen ile çarpın Fben .
  3. Bölen 1'e yeterince yakınsa, temettüyü döndürün, aksi takdirde 1. adıma dönün.

Varsayım N/D 0 <D <1, her biri Fben dayanır D:

Temettü ve bölen faktörün getirisi ile çarpıldığında:

Yeterli sayıdan sonra k yinelemelerin .

Goldschmidt yöntemi, AMD Athlon CPU'lar ve sonraki modeller.[10][11] Anderson Earle Goldschmidt Powers (AEGP) algoritması olarak da bilinir ve çeşitli IBM işlemcileri tarafından uygulanır.[12][13]

Binom teoremi

Goldschmidt metodu, basitleştirmeye izin veren faktörlerle kullanılabilir. Binom teoremi N / D'nin bir ikinin gücü öyle ki .Biz seciyoruz ve Bu verim

.

Sonra adımlar payda yuvarlanabilir Birlikte göreceli hata

maksimum olan ne zaman böylece minimum hassasiyet sağlar ikili rakamlar.

Büyük tamsayı yöntemleri

Donanım uygulaması için tasarlanan yöntemler, genellikle binlerce veya milyonlarca ondalık basamaklı tamsayılara ölçeklenmez; bunlar sıklıkla meydana gelir, örneğin modüler azalma kriptografi. Bu büyük tamsayılar için, daha verimli bölme algoritmaları, problemi az sayıda çarpma kullanmaya dönüştürür ve bu daha sonra asimptotik olarak verimli bir şekilde yapılabilir. çarpma algoritması benzeri Karatsuba algoritması, Toom – Cook çarpımı ya da Schönhage – Strassen algoritması. Sonuç şu ki hesaplama karmaşıklığı Bölmenin oranı, çarpma ile aynı düzendedir (çarpım sabitine kadar). Örnekler arasında çarpmaya indirgeme yer alır Newton yöntemi gibi Yukarıda tarif edilen,[14] biraz daha hızlı Barrett azaltma ve Montgomery redüksiyonu algoritmalar.[15][doğrulama gerekli ] Newton'un yöntemi, aynı bölenle birçok kez bölünmesi gereken senaryolarda özellikle etkilidir, çünkü ilk Newton tersine çevirmesinden sonra her bölüm için yalnızca bir (kesilmiş) çarpma gerekir.

Sabit bölme

Sabit ile bölme D ile çarpmaya eşdeğerdir karşılıklı. Payda sabit olduğundan, karşılığı da (1 /D). Böylece (1 /) değerini hesaplamak mümkündür.D) derleme zamanında bir kez ve çalışma zamanında çarpma işlemini gerçekleştirin N·(1/D) bölüm yerine Yok. İçinde kayan nokta aritmetik kullanımı (1 /D) küçük bir problem sunar, ancak tamsayı aritmetik, karşılıklı her zaman sıfır olarak değerlendirilir (|D| > 1).

Özel olarak kullanılması gerekli değildir (1 /D); herhangi bir değer (X/Y) (1 /D) Kullanılabilir. Örneğin, 3'e bölme için 1/3, 2/6, 3/9 veya 194/582 faktörleri kullanılabilir. Sonuç olarak, eğer Y ikinin gücü olsaydı, bölme adımı hızlı bir sağ bit kaymasına indirgendi. Hesaplamanın etkisi N/D gibi (N·X)/Y bölmeyi çarpma ve kayma ile değiştirir. Parantezlerin önemli olduğunu unutmayın. N·(X/Y) sıfır olarak değerlendirilecektir.

Ancak D kendisi ikinin gücüdür, yoktur X ve Y yukarıdaki koşulları karşılayan. Neyse ki, (N·X)/Y tam olarak aynı sonucu verir N/D tamsayı aritmetikte bile (X/Y) tam olarak 1 / 'e eşit değildirDancak "yeterince yakın" ki yaklaşımla ortaya çıkan hata, kaydırma işlemi tarafından atılan bitlerdedir.[16][17][18]

Somut olarak sabit noktalı aritmetik Örneğin, 32 bitlik işaretsiz tamsayılar için 3'e bölme, ile çarpma ile değiştirilebilir 2863311531/2332863311531 ile çarpma (onaltılık 0xAAAAAAAB) ve ardından 33 sağ bit kayması. 2863311531 değeri şu şekilde hesaplanır: 233/3, sonra yuvarlanır.

Benzer şekilde, 10'a bölme, 3435973837 (0xCCCCCCCD) ile çarpma ve ardından 2'ye bölme olarak ifade edilebilir.35 (veya 35 sağ bit kaydırma).

Bazı durumlarda, bir sabite bölme, "sabitle çarpma" ifadesini bir vardiya dizisi ve ekleme veya çıkarma.[19] Özellikle ilgi çekici olan, 10'a bölmedir, bunun için tam bölüm elde edilir ve gerekirse geri kalanı elde edilir.[20]

Yuvarlama hatası

Yuvarlama hatası sınırlı olması nedeniyle bölünme işlemleri ile tanıtılabilir hassas.

Ayrıca bakınız

Referanslar

  1. ^ "Uzun Bölme ve Varyantları için Kesin Yüksek Matematik Rehberi - Tamsayılar için". Matematik Kasası. 2019-02-24. Alındı 2019-06-24.
  2. ^ Morris, James E .; Iniewski, Krzysztof (2017-11-22). Nanoelektronik Cihaz Uygulamaları El Kitabı. CRC Basın. ISBN  978-1-351-83197-0.
  3. ^ Flynn. "Stanford EE486 (İleri Bilgisayar Aritmetik Bölümü) - Bölüm 5 El Notu (Bölüm)" (PDF). Stanford Üniversitesi.
  4. ^ Harris, David L .; Oberman, Stuart F .; Horowitz, Mark A. (9 Eylül 1998). SRT Bölümü: Mimariler, Modeller ve Uygulamalar (PDF) (Teknik rapor). Stanford Üniversitesi.
  5. ^ McCann, Mark; Pippenger, Nicholas (2005). "Dinamik Sistemler Olarak SRT Bölümü Algoritmaları". Bilgi İşlem Üzerine SIAM Dergisi. 34 (6): 1279–1301. CiteSeerX  10.1.1.72.6993. doi:10.1137 / S009753970444106X.
  6. ^ "Kayan Nokta Kusurunun İstatistiksel Analizi". Intel Kurumu. 1994. Alındı 22 Ekim 2013.
  7. ^ Oberman, Stuart F .; Flynn, Michael J. (Temmuz 1995). Bölme Algoritmalarının ve Uygulamalarının Analizi (PDF) (Teknik rapor). Stanford Üniversitesi. CSL-TR-95-675.
  8. ^ Goldschmidt, Robert E. (1964). Yakınsama ile Bölme Uygulamaları (PDF) (Tez). Yüksek Lisans tez. M.I.T. OCLC  34136725.
  9. ^ https://web.archive.org/web/20180718114413/https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5392026
  10. ^ Oberman, Stuart F. (1999). "Kayan Nokta Bölme ve Karekök Algoritmaları ve AMD-K7 Mikroişlemcisinde Uygulama" (PDF). IEEE Bilgisayar Aritmetiği Sempozyumu Bildirileri: 106–115. doi:10.1109 / ARITH.1999.762835. S2CID  12793819.
  11. ^ Soderquist, Peter; Leeser, Miriam (Temmuz – Ağustos 1997). "Bölme ve Karekök: Doğru Uygulamayı Seçme". IEEE Mikro. 17 (4): 56–66. doi:10.1109/40.612224.
  12. ^ S. F. Anderson, J. G. Earle, R. E. Goldschmidt, D. M. Powers. IBM 360/370 model 91: kayan noktalı yürütme birimi, IBM Araştırma ve Geliştirme Dergisi, Ocak 1997
  13. ^ Guy Even, Peter-M. Seidel, Warren E. Ferguson. Goldschmidt’in bölme algoritmasının parametrik hata analizi. 2004, [1]
  14. ^ Hasselström, Karl (2003). Büyük Tamsayıların Hızlı Bölünmesi: Algoritmaların Karşılaştırması (PDF) (Bilgisayar Bilimleri tezinde Yüksek Lisans). Kraliyet Teknoloji Enstitüsü. Arşivlenen orijinal (PDF) 8 Temmuz 2017'de. Alındı 2017-07-08.
  15. ^ Barrett, Paul (1987). "Rivest Shamir ve Adleman açık anahtar şifreleme algoritmasının standart bir dijital sinyal işlemcisi üzerinde uygulanması". Kriptolojideki Gelişmeler Üzerine Bildiriler --- CRYPTO '86. Londra, İngiltere: Springer-Verlag. sayfa 311–323. ISBN  0-387-18047-8.
  16. ^ Granlund, Torbjörn; Montgomery, Peter L. (Haziran 1994). "Çarpma kullanarak Değişmez Tamsayılarla Bölme" (PDF). SİGPLAN Bildirimleri. 29 (6): 61–72. CiteSeerX  10.1.1.1.2556. doi:10.1145/773473.178249.
  17. ^ Möller, Niels; Granlund, Torbjörn (Şubat 2011). "Değişmez Tam Sayılarla Geliştirilmiş Bölme" (PDF). Bilgisayarlarda IEEE İşlemleri. 60 (2): 165–175. doi:10.1109 / TC.2010.143. S2CID  13347152.
  18. ^ gülünç_balık."Labor of Division (Bölüm III): Constants Tarafından Daha Hızlı İmzasız Bölüm".2011.
  19. ^ LaBudde, Robert A .; Golovchenko, Nikolai; Newton, James; ve Parker, David; Massmind: "Bir Sabit ile İkili Bölme"
  20. ^ Ünlüler, R.A. (1992). "10'a bölme". Avustralya Bilgisayar Dergisi. 24 (3): 81–85.

daha fazla okuma