IEEE 754 - IEEE 754

Kayan Nokta Aritmetik için IEEE Standardı ( IEEE 754 ) bir olduğu teknik standart için kayan nokta aritmetik tarafından 1985 yılında kurulan Elektrik Enstitüsü ve Elektronik Mühendisleri (IEEE). Standart , çeşitli kayan nokta uygulamalarında bulunan ve bunların güvenilir ve taşınabilir bir şekilde kullanılmasını zorlaştıran birçok sorunu ele aldı . Çoğu donanım kayan nokta birimi , IEEE 754 standardını kullanır.

Standart şunları tanımlar:

  • aritmetik biçimler: sonlu sayılardan ( işaretli sıfırlar ve normal altı sayılar dahil ), sonsuzluklardan ve özel "sayı olmayan" değerlerden ( NaN'ler ) oluşan ikili ve ondalık kayan noktalı veri kümeleri
  • değiş tokuş biçimleri: verimli ve kompakt bir biçimde kayan noktalı verileri değiş tokuş etmek için kullanılabilen kodlamalar (bit dizileri)
  • yuvarlama kuralları: aritmetik ve dönüşümler sırasında sayıları yuvarlarken karşılanması gereken özellikler
  • işlemler: aritmetik formatlarda aritmetik ve diğer işlemler ( trigonometrik fonksiyonlar gibi )
  • istisna işleme: istisnai koşulların göstergeleri ( sıfıra bölme , taşma vb. gibi )

Ağustos 2008'de yayınlanan IEEE 754-2008 , orijinal IEEE 754-1985 standardının neredeyse tamamını ve ayrıca Radix-Bağımsız Kayan Nokta Aritmetiği için IEEE 854-1987 Standardını içerir . Mevcut sürüm, IEEE 754-2019, Temmuz 2019'da yayınlandı. Temel olarak açıklamaları, hata düzeltmelerini ve önerilen yeni işlemleri içeren önceki sürümün küçük bir revizyonudur.

Standart geliştirme

Kayan nokta aritmetiği için ilk standart olan IEEE 754-1985 1985'te yayınlandı. Yalnızca ikili kayan nokta aritmetiğini kapsıyordu.

Yeni bir sürüm, IEEE 754-2008 , yedi yıllık bir revizyon sürecinin ardından, Dan Zuras'ın başkanlığında ve Mike Cowlishaw'ın editörlüğünde Ağustos 2008'de yayınlandı . Hem IEEE 754-1985 (ikili kayan nokta aritmetiği) hem de IEEE 854-1987 Radix-Bağımsız Kayan Nokta Aritmetiği Standardının yerini aldı . Orijinal standarttaki ikili biçimler, bir ikili ve iki ondalık olmak üzere üç yeni temel biçimle birlikte bu yeni standarda dahil edilmiştir. Mevcut standarda uymak için, bir uygulamanın hem aritmetik format hem de değişim formatı olarak temel formatlardan en az birini uygulaması gerekir.

Uluslararası standart ISO/IEC/IEEE 60559:2011 (IEEE 754-2008 ile aynı içeriğe sahip), ISO/IEEE PSDO Anlaşması kapsamında JTC1 /SC 25 aracılığıyla kabul edilmek üzere onaylanmış ve yayınlanmıştır.

Temmuz 2019'da yayınlanan mevcut sürüm, IEEE 754-2019, David G. Hough başkanlığında ve Mike Cowlishaw tarafından düzenlenen Eylül 2015'te başlatılan bir revizyon sürecinin ardından IEEE 754-2008'den türetilmiş ve onun yerini almıştır. Esas olarak açıklamaları (örneğin totalOrder ) ve hata düzeltmelerini (örneğin minNum ) içerir, ancak bazı yeni önerilen işlemleri de içerir (örneğin artırılmışAddition ).

Uluslararası standart ISO / IEC 60559: 2020 (IEEE 754-2019 özdeş içerik ile) üzerinden kabulü için onaylanmıştır JTC1 / SC 25 ve yayınladı.

Formatlar

Bir IEEE 754 formatı , "sayısal değerlerin ve sembollerin temsili kümesidir". Bir biçim, kümenin nasıl kodlandığını da içerebilir.

Kayan nokta biçimi şu şekilde belirtilir:

  • IEEE 754'te 2 (ikili) veya 10 (ondalık) olan bir taban ( radix olarak da adlandırılır ) b ;
  • bir kesinlik p ;
  • emin ile emax arasında bir üs aralığı , emin = 1 − emax tüm IEEE 754 biçimleri için.

Bir biçim şunları içerir:

  • Üç tam sayı ile tanımlanabilen sonlu sayılar: s  = bir işaret (sıfır veya bir), c  = b tabanında yazıldığında p'den fazla olmayan bir anlamlı (veya katsayı ) (yani, 0 ile 0 aralığında bir tam sayı) için B p  1) ve - q  = bir üs şekilde eminq  +  s  1 - ≤ emax . Böyle bir sonlu sayının sayısal değeri (−1) s × c × b q'dir . Ayrıca, işaretli sıfırlar olarak adlandırılan iki sıfır değeri vardır : işaret biti, sıfırın +0 (pozitif sıfır) veya -0 (negatif sıfır) olduğunu belirtir.
  • İki sonsuzluk: +∞ ve −∞.
  • İki tür NaN (sayı değil): sessiz bir NaN (qNaN) ve sinyal veren bir NaN (sNaN).

Örneğin, b = 10, p = 7 ve emax = 96 ise emin = −95 ise, anlamlı ve 0 ≤ c ≤ değerini sağlar.9 999 999 , ve üs −101 ≤ q ≤ 90 değerini sağlar. Sonuç olarak, temsil edilebilecek sıfır olmayan en küçük pozitif sayı 1×10 −101 ve en büyüğü 9999999×10 90 (9,999999×10 96 ), yani tam sayı aralığı -9,999999×10 96 ile 9.999999×10 96 arasındadır . − b 1− emax ve b 1− emax (burada, −1×10 −95 ve 1×10 −95 ) sayıları (büyüklük olarak) en küçük normal sayılardır ; Bu en küçük sayılar arasındaki sıfır olmayan numaralar denir altnormal numaraları .

Bellekte temsil ve kodlama

Bazı sayıların birkaç olası üstel biçim gösterimi olabilir. Örneğin, b  = 10 ve p  = 7 ise, −12.345 −12345×10 −3 , −123450×10 −4 ve −1234500×10 −5 ile temsil edilebilir . Ancak, aritmetik işlemler gibi çoğu işlem için sonuç (değer) girdilerin temsiline bağlı değildir.

Ondalık biçimler için herhangi bir gösterim geçerlidir ve bu gösterimlerin kümesine kohort adı verilir . Bir sonucun birkaç gösterimi olabileceği durumlarda, standart, kohortun hangi üyesinin seçildiğini belirtir.

İkili biçimler için, temsil, değerin tam olarak temsil edilmesine izin veren en küçük temsil edilebilir üs seçilerek benzersiz hale getirilir. Ayrıca, üs doğrudan temsil edilmez, ancak bir sapma eklenir, böylece en küçük temsil edilebilir üs 1 olarak temsil edilir, 0 normal altı sayılar için kullanılır. Normal aralıkta bir üslü sayılar için (üs alanı ne hepsi birdir ne de tümü sıfırdır), anlamlının baştaki biti her zaman 1 olacaktır. Sonuç olarak, bellek kodlamasında açıkça mevcut olmak yerine baştaki 1 ima edilebilir, ve standart altında, anlamlının açıkça temsil edilen kısmı 0 ile 1 arasında olacaktır. Bu kurala önde gelen bit kuralı , örtük bit kuralı veya gizli bit kuralı denir . Bu kural, ikili formatın fazladan bir hassasiyete sahip olmasını sağlar. Baştaki bit kuralı, normal üs aralığının dışında bir üsleri olduğundan ve en küçük normal sayılar için kullanıldığı gibi temsil edilen en küçük üs tarafından ölçeklendirildiğinden, normal altı sayılar için kullanılamaz.

Birden fazla kodlama olasılığı nedeniyle (en azından değişim biçimleri olarak adlandırılan biçimlerde ), bir NaN başka bilgiler taşıyabilir: bir işaret biti (hiçbir anlamı yoktur, ancak bazı işlemler tarafından kullanılabilir) ve tanı amaçlı bir yük . NaN kaynağını belirten bilgiler (ancak yükün NaN-bokslama gibi başka kullanımları olabilir ).

Temel ve değişim biçimleri

Standart, sayısal tabanları ve değişim kodlamasında kullanılan bit sayısı için adlandırılan beş temel formatı tanımlar. Üç ikili kayan nokta temel biçimi (32, 64 veya 128 bit ile kodlanmış) ve iki ondalık kayan nokta temel biçimi (64 veya 128 bit ile kodlanmış) vardır. Binary32 ve binary64 biçimleridir tek ve çift formatları IEEE 754-1985 sırasıyla. Uyumlu bir uygulama, temel formatlardan en az birini tam olarak uygulamalıdır.

Standart ayrıca, bu temel biçimleri genelleştiren değişim biçimlerini de tanımlar . İkili biçimler için baştaki bit kuralı gereklidir. Aşağıdaki tablo en küçük değişim biçimlerini (temel olanlar dahil) özetlemektedir.

İsim Yaygın isim Temel Önemli bitler veya rakamlar Ondalık basamak Üs bitleri Ondalık E maks Üs sapması dakika E maks Notlar
ikili16 yarı hassas 2 11 3.31 5 4.51 2 4 -1 = 15 -14 +15 temel değil
ikili32 Tek hassasiyet 2 24 7.22 8 38.23 2 7 -1 = 127 -126 +127
ikili64 Çift hassasiyet 2 53 15.95 11 307,95 2 10 -1 = 1023 -1022 +1023
ikili128 dörtlü hassasiyet 2 113 34.02 15 4931.77 2 14 -1 = 16383 -16382 +16383
ikili 256 sekiz hassasiyet 2 237 71.34 19 78913.2 2 18 -1 = 262143 −262142 +262143 temel değil
ondalık 32 10 7 7 7,58 96 101 -95 +96 temel değil
ondalık64 10 16 16 9.58 384 398 -383 +384
ondalık128 10 34 34 13.58 6144 6176 -6143 +6144

Yukarıdaki tabloda, listelenen minimum üslerin normal sayılar için olduğuna dikkat edin; özel normal altı sayı gösterimi, daha küçük sayıların bile gösterilmesine izin verir (biraz kesinlik kaybıyla). Örneğin, binary64'te gösterilebilecek en küçük pozitif sayı 2 -1074'tür ; -1074 rakamına yapılan katkılar, E min değeri -1022'yi ve 53 anlamlı bitin (  2 -1022 − (53 − 1) = 2 −1074 ) biri hariç tümünü içerir .

Ondalık basamaklar basamak × log 10 tabandır . Bu, ondalık basamak sayısında yaklaşık bir kesinlik verir.

Ondalık E max, Emax × log 10 tabanıdır . Bu, maksimum ondalık üs için yaklaşık bir değer verir.

Binary32 (tekli) ve binary64 (çift) biçimleri, günümüzde kullanılan en yaygın biçimlerden ikisidir. Aşağıdaki şekil, bir dizi değer üzerinden her iki format için mutlak kesinliği gösterir. Bu şekil, bir sayının beklenen değeri ve gerekli kesinlik verilen uygun bir formatı seçmek için kullanılabilir.

10 -12 ila 10 12 aralığında ikili32 ve ikili64 hassasiyeti


İçin bir düzen örneği 32 bit kayan nokta olduğunu

Kayan örnek.svg

ve 64 bit düzeni benzerdir .

Genişletilmiş ve genişletilebilir hassas formatlar

Standart , temel formatlardan daha fazla hassasiyet sağlayan isteğe bağlı genişletilmiş ve genişletilebilir hassas formatları belirtir . Genişletilmiş bir kesinlik biçimi, daha fazla kesinlik ve daha fazla üs aralığı kullanarak temel bir biçimi genişletir. Genişletilebilir bir kesinlik biçimi, kullanıcının kesinliği ve üs aralığını belirlemesine olanak tanır. Bir uygulama, bu tür formatlar için seçtiği herhangi bir dahili temsili kullanabilir; tanımlanması gereken tek şey parametreleridir ( b , p ve emax ). Bu parametreler, temsil edebileceği sonlu sayılar kümesini (belirli bir taban için işaret, anlamlı ve üs kombinasyonları) benzersiz bir şekilde tanımlar.

Standart, dil standartlarının, desteklenen her b tabanı için p ve emax belirleme yöntemi sağlamasını önerir . Standart, dil standartlarının ve uygulamalarının, her bir sayı tabanı için desteklenen en büyük temel formattan daha fazla kesinliğe sahip genişletilmiş bir formatı desteklemesini önerir b . İki temel biçim arasında kesinliği olan genişletilmiş bir biçim için, üs aralığı bir sonraki daha geniş temel biçiminki kadar büyük olmalıdır. Bu nedenle, örneğin 64-bit genişletilmiş bir hassas ikili sayının 'emax' değeri en az 16383 olmalıdır. x87 80-bit genişletilmiş biçimi bu gereksinimi karşılar.

Değişim biçimleri

Değişim biçimleri, belirli bir biçim için sabit uzunlukta bir bit dizisi kullanarak kayan noktalı verilerin değiş tokuşu için tasarlanmıştır.

İkili

İkili kayan noktalı sayıların değişimi için, uzunluk 16 bit, 32 bit, 64 bit ve 32 bit ≥ 128'in herhangi bir katı olan değişim formatları tanımlanmıştır. 16 bit biçimi, küçük sayıların (örneğin, grafikler için) değiş tokuş edilmesi veya saklanması için tasarlanmıştır.

Bir işaret biti, bunu takiben bu ikili değiştirme biçimleri için kodlama şeması IEEE 754-1985 arasında aynıdır w bir dengelenmiştir üs tarif üs biti önyargı ve p  - significand tarif 1 bit. Bir k -bit formatı için üs alanının genişliği w  = round(4 log 2 ( k )) − 13 olarak hesaplanır . Mevcut 64- ve 128-bit formatlar bu kuralı takip eder, ancak 16- ve 32-bit formatlar, bu formülün sağlayacağından (sırasıyla 3 ve 7) daha fazla üs bitine (sırasıyla 5 ve 8) sahiptir.

IEEE 754-1985'te olduğu gibi, önyargılı üs alanı, sonsuzluğu (sondaki anlamlı ve alan = 0) veya bir NaN'yi (sondaki anlamlı ve alan ≠ 0) belirtmek için 1 bitin tümü ile doldurulur. NaN'ler için, sessiz NaN'ler ve sinyal veren NaN'ler, yalnızca sondaki önemli alanın en önemli biti kullanılarak ayırt edilir ve yük, kalan bitlerde taşınır.

Ondalık

Ondalık kayan noktalı sayıların değişimi için, 32 bitin herhangi bir katının değişim biçimleri tanımlanır. İkili değiş tokuşta olduğu gibi, ondalık değiş tokuş biçimleri için kodlama şeması, işareti, üssü ve anlamı kodlar. İki farklı bit düzeyinde kodlama tanımlanmıştır ve kullanılan kodlamanın bazı harici göstergelerinin gerekli olabileceği gerçeğiyle değiş tokuş karmaşıktır.

İki seçenek, anlamlının yoğun bir şekilde paketlenmiş ondalık sayı kullanılarak sıkıştırılmış bir ondalık basamak dizisi veya alternatif olarak bir ikili tamsayı olarak kodlanmasına izin verir . Birincisi, standardın doğrudan donanım uygulaması için daha uygundur, ikincisi ise ikili bir bilgisayarda yazılım öykünmesi için daha uygundur. Her iki durumda da, kodlanabilecek sayı kümesi (işaret, anlamlı ve üs kombinasyonları) aynıdır ve özel değerler (minimum üslü ±sıfır, ±sonsuz, sessiz NaN'ler ve sinyalleme NaN'leri) aynı kodlamalara sahiptir.

Yuvarlama kuralları

Standart, beş yuvarlama kuralı tanımlar. İlk iki kural en yakın değere yuvarlanır; diğerleri yönlendirilmiş yuvarlama olarak adlandırılır :

En yakına yuvarlama

  • En yakına yuvarla, çifte bağla  - en yakın değere yuvarlar; sayı yarıda kalırsa, en az anlamlı basamağa sahip en yakın değere yuvarlanır; bu, ikili kayan nokta için varsayılan ve ondalık için önerilen varsayılandır.
  • En  yakına yuvarlar , sıfırdan uzaklaşır - en yakın değere yuvarlar; sayı ortada düşerse, yukarıdaki (pozitif sayılar için) veya altındaki (negatif sayılar için) en yakın değere yuvarlanır; bu, ondalık kayan nokta için bir seçenek olarak tasarlanmıştır.

Yönlendirilmiş yuvarlamalar

  • 0'a  yuvarlama - sıfıra doğru yuvarlama ( kesme olarak da bilinir ).
  • +∞  yönünde yuvarlama – pozitif sonsuza doğru yuvarlama ( yuvarlama veya tavan olarak da bilinir ).
  • -∞'ye doğru  yuvarlama - negatif sonsuza doğru yuvarlama (aşağı yuvarlama veya taban olarak da bilinir ).
IEEE 754 kurallarını kullanarak tam sayılara yuvarlama örneği
mod Örnek değer
+11.5 +12.5 -11.5 -12.5
en yakına, hatta bağlara +12.0 +12.0 -12.0 -12.0
en yakına, sıfırdan uzağa bağlar +12.0 +13.0 -12.0 -13.0
0'a doğru +11.0 +12.0 -11.0 -12.0
+∞'ye doğru +12.0 +13.0 -11.0 -12.0
-∞'ye doğru +11.0 +12.0 -12.0 -13.0

Aksi belirtilmedikçe, bir işlemin kayan nokta sonucu, sonsuz kesinlikteki (matematiksel) sonuca yuvarlama işlevi uygulanarak belirlenir. Böyle bir işlemin doğru yuvarlandığı söylenir . Bu gereksinime doğru yuvarlama denir .

Gerekli işlemler

Desteklenen bir aritmetik biçim (temel biçimler dahil) için gerekli işlemler şunları içerir:

  • Aritmetik işlemler (toplama, çıkarma, çarpma, bölme, karekök, kaynaşık çarpma- toplama , kalan)
  • Dönüşümler (biçimler arasında, dizelere ve dizelerden vb. )
  • Ölçekleme ve (ondalık için) niceleme
  • İşareti kopyalama ve manipüle etme (abs, negate, vb. )
  • Karşılaştırmalar ve toplam sipariş
  • NaN'ler için sınıflandırma ve test etme vb.
  • Bayrakları test etme ve ayarlama
  • Çeşitli işlemler.

karşılaştırma yüklemleri

Standart, desteklenen aritmetik formatta bir kayan nokta verisini diğeriyle karşılaştırmak için karşılaştırma yüklemleri sağlar. NaN ile yapılan herhangi bir karşılaştırma sırasız olarak kabul edilir. -0 ve +0 eşit olarak karşılaştırılır.

Toplam sıralama yüklemi

Standart , desteklenen aritmetik biçimin kurallı üyelerinde toplam sıralamayı tanımlayan bir totalOrder yüklemi sağlar . Bir kayan noktalı sayı diğerinden küçük olduğunda, yüklem karşılaştırma yüklemleriyle uyuşur. TotalOrder yüklem bir biçimde tüm kodlamaları hakkında toplam sipariş empoze etmez. Özellikle, bir veya her iki kodlamanın kurallı olmadığı durumlarda olduğu gibi, aynı kayan nokta gösteriminin farklı kodlamaları arasında ayrım yapmaz. IEEE 754-2019, totalOrder ile ilgili açıklamaları içerir .

Kodlaması NaN sinyalleme bitinin yerleştirilmesine ilişkin IEEE 754-2008 önerisini izleyen ikili değişim biçimleri için karşılaştırma, kayan nokta sayılarını bir işaret-büyüklük tamsayısına puntalayan türle aynıdır (bununla tutarlı bir yük sıralaması varsayılırsa). karşılaştırma), FPU olmadan FP karşılaştırması için eski bir numara.

İstisna işleme

Standart, her biri varsayılan bir değer döndüren ve istisna oluştuğunda ortaya çıkan karşılık gelen bir durum bayrağına sahip olan beş istisna tanımlar. Başka bir istisna işleme gerekli değildir, ancak varsayılan olmayan ek alternatifler önerilir (bkz. § Alternatif istisna işleme ).

Beş olası istisna şunlardır:

  • Geçersiz işlem: matematiksel olarak tanımsız, örneğin negatif bir sayının karekökü. Varsayılan olarak, qNaN döndürür.
  • Sıfıra bölme: sonlu işlenenler üzerinde bir işlem, örneğin 1/0 veya log(0) gibi kesin bir sonsuz sonuç verir . Varsayılan olarak, ±sonsuz döndürür.
  • Taşma: sonlu bir sonuç, doğru bir şekilde temsil edilemeyecek kadar büyük ( yani , sınırsız bir üs aralığına sahip üssü, emax değerinden daha büyük olacaktır ). Varsayılan olarak, en yakına yuvarlama modları için ±infinity değerini döndürür (ve yönlendirilmiş yuvarlama modları için yuvarlama kurallarına uyar).
  • Yetersiz akış: sonuç çok küçüktür (normal aralığın dışında). Varsayılan olarak, büyüklük olarak minimum pozitif normal sayıdan küçük veya ona eşit bir sayı döndürür (yuvarlama kurallarına uyarak); bir alt normal her zaman bir taşma istisnası anlamına gelir, ancak varsayılan olarak, kesinse hiçbir bayrak kaldırılmaz.
  • Hatalı: kesin ( yani yuvarlanmamış) sonuç tam olarak gösterilemez. Varsayılan olarak, doğru yuvarlanmış sonucu döndürür.

Bunlar, IEEE 754-1985'te tanımlananla aynı beş istisnadır, ancak sıfıra bölme istisnası, bölme dışındaki işlemleri de kapsayacak şekilde genişletilmiştir.

Bazı ondalık kayan nokta uygulamaları, IEEE 754'ün parçası olmayan ek istisnalar tanımlar:

  • Sabit: Bir sonucun üssü, hedef biçim için çok büyük. Varsayılan olarak, üssü kullanılabilir en büyük değere düşürmek için sondaki sıfırlar katsayıya eklenecektir. Bu mümkün değilse (çünkü bu, gereken basamak sayısının hedef biçiminden daha fazla olmasına neden olur), bir taşma istisnası oluşur.
  • Yuvarlatılmış: bir sonucun katsayısı, hedef biçimin sağladığından daha fazla basamak gerektirir. Sıfır olmayan herhangi bir rakam atılırsa, kesin olmayan bir istisna bildirilir.

Ek olarak, işlenenlerden herhangi biri sonsuz olduğunda veya sonuç hedef formata uymadığında niceleme gibi işlemler de geçersiz işlem istisnasını işaret edecektir.

Öneriler

Alternatif istisna işleme

Standart, kullanıcı tanımlı varsayılan değerlerin önceden ikame edilmesi ve tuzaklar (kontrol akışını bir şekilde değiştiren istisnalar) ve akışı kesen, dene/yakala gibi diğer istisna işleme modelleri dahil olmak üzere çeşitli biçimlerde isteğe bağlı istisna işlemeyi önerir. Tuzaklar ve diğer istisna mekanizmaları, IEEE 754-1985'te olduğu gibi isteğe bağlı kalır.

Önerilen işlemler

Standarttaki Madde 9, dil standartlarının tanımlaması gereken ek matematiksel işlemleri önerir. Standarda uymak için hiçbiri gerekli değildir.

Doğru yuvarlanması gereken önerilen aritmetik işlemler:

AsinPi , acosPi ve tanPi daha az gerekli gördüğü çünkü fonksiyonları IEEE 754-2008 standardının parçası değildi. asinPi , acosPi'den bahsedildi, ancak bu bir hata olarak kabul edildi. Üçü de 2019 revizyonunda eklendi.

Önerilen işlemler ayrıca dinamik mod yuvarlama yönünü ayarlama ve erişmeyi ve doğruluğu standart tarafından belirtilmeyen toplam, ölçeklenmiş çarpım ve nokta çarpım gibi uygulama tanımlı vektör azaltma işlemlerini içerir .

2019 itibariyle , ikili biçimler için artırılmış aritmetik işlemler de önerilir. Toplama, çıkarma ve çarpma için belirtilen bu işlemler, formatta doğru olarak en yakına yuvarlanmış bir sonuç ve formatta tam olarak gösterilebilen hata teriminden oluşan bir çift değer üretir. Standardın yayınlandığı tarihte, hiçbir donanım uygulaması bilinmiyor, ancak iyi bilinen algoritmalar kullanılarak yazılımda çok benzer işlemler zaten uygulanıyordu. Standardizasyonlarının tarihi ve motivasyonu bir arka plan belgesinde açıklanmıştır.

2019 itibariyle, IEEE 754-2008'de önceden gerekli olan minNum, maxNum, minNumMag ve maxNumMag artık ilişkilendirilemezlikleri nedeniyle silinmiştir. Bunun yerine, iki set yeni minimum ve maksimum işlem önerilir. İlk küme minimum, minimumSayı, maksimum ve maksimumSayı içerir . İkinci küme, minimumMagnitude, minimumMagnitudeNumber, maximumMagnitude ve maximumMagnitudeNumber öğelerini içerir . Bu değişikliğin tarihçesi ve motivasyonu bir arka plan belgesinde açıklanmıştır.

İfade değerlendirmesi

Standart, dil standartlarının işlem dizilerinin semantiğini nasıl belirlemesi gerektiğini önerir ve bir sonucun değerini değiştiren gerçek anlamların ve optimizasyonların inceliklerine işaret eder. Buna karşılık, dil arayüzünün standart sol yönlerinin önceki 1985 sürümü belirtilmedi, bu da derleyiciler arasında tutarsız davranışlara veya bir optimize edici derleyicide farklı optimizasyon seviyelerine yol açtı .

Programlama dilleri, bir kullanıcının her bir taban için ifadelerin ara hesaplamaları için bir minimum kesinlik belirlemesine izin vermelidir. Bu, standartta tercih edilen Genişlik olarak adlandırılır ve bunu blok bazında ayarlamak mümkün olmalıdır. İfadeler içindeki ara hesaplamalar, işlenenlerin maksimum genişliği ve ayarlanmışsa tercih edilen genişlik kullanılarak hesaplanmalı ve tüm geçiciler kaydedilmelidir. Bu nedenle, örneğin, x87 kayan nokta donanımını hedefleyen bir derleyici , ara hesaplamaların çift ​​genişletilmiş biçimi kullanması gerektiğini belirten bir araca sahip olmalıdır . Bir değişkenin saklanan değeri, yuvarlamadan ve değişkene atamadan önceki herhangi bir öncü yerine sonraki ifadeleri değerlendirirken her zaman kullanılmalıdır.

Yeniden üretilebilirlik

Standardın IEEE 754-1985 sürümü, uygulamalarda (bazı değerlerin kodlanması ve belirli istisnaların tespiti gibi) birçok varyasyona izin verdi. IEEE 754-2008 bu ödenekleri azalttı, ancak birkaç varyasyon hala var (özellikle ikili formatlar için). Tekrarlanabilirlik maddesi, dil standartlarının, tekrarlanabilir programlar (yani, bir dilin tüm uygulamalarında aynı sonucu üretecek programlar) yazmak için bir araç sağlaması gerektiğini tavsiye eder ve tekrarlanabilir sonuçlara ulaşmak için ne yapılması gerektiğini tanımlar.

Karakter temsili

Standart, temel biçimler ve harici karakter dizisi biçimleri arasında dönüştürme işlemleri gerektirir . Tüm biçimler için ondalık karakter biçimine ve biçiminden dönüşümler gereklidir. Harici bir karakter dizisine dönüştürme öyle olmalıdır ki, yuvarlaktan en yakına, çifte bağları kullanılarak geri dönüştürme orijinal sayıyı geri getirecektir. Sessiz bir NaN veya sinyal veren NaN'nin yükünü korumaya gerek yoktur ve harici karakter dizisinden dönüştürme, sinyal veren bir NaN'yi sessiz bir NaN'ye dönüştürebilir.

Orijinal ikili değer, ondalık sayıya dönüştürülerek ve aşağıdakiler kullanılarak tekrar korunacaktır:

  • ikili16 için 5 ondalık basamak,
  • ikili32 için 9 ondalık basamak,
  • ikili64 için 17 ondalık basamak,
  • İkili 128 için 36 ondalık basamak.

Diğer ikili biçimler için gereken ondalık basamak sayısı

burada p , ikili formattaki anlamlı bitlerin sayısıdır, örneğin ikili için 237 bit256.

Bir ondalık kayan nokta biçimi kullanıldığında, ondalık gösterim aşağıdakiler kullanılarak korunur:

  • decimal32 için 7 ondalık basamak,
  • decimal64 için 16 ondalık basamak,
  • Ondalık için 34 ondalık basamak128.

İkiliden ondalığa ve ondalıktan ikiliye doğru yuvarlatılmış dönüşüm için kodlu algoritmalar Gay tarafından ve test için Paxson ve Kahan tarafından tartışılmıştır.

Ayrıca bakınız

Notlar

Referanslar

standartlar

ikincil referanslar

daha fazla okuma

Dış bağlantılar