آي تربل إي 754 المنقح
آي تربل إي 754 المنقح أو معيار معهد مهندسي الكهرباء والإلكترونيات لعمليات الفاصلة العائمة الحسابية المنقح هو معيار تقني وضعه معهد مهندسي الكهرباء والإلكترونيات (IEEE) وهو المعيار الأكثر انتشارا لعمليات الفاصلة العائمة الحسابية وتلتزم به الكثير من التطبيقات البرمجية وتطبيقات العتاد (وحدة المعالجة المركزية ووحدة الفاصلة العائمة). تسمح العديد من لغات البرمجة أو تفرض إجراء بعض أو كل العمليات الحسابية باستخدام صيغ وعمليات معيار IEEE 754. النسخة الحالية من المعيار هي IEEE 754-2008 المنشورة في أغسطس 2008 وتشمل محتوى المعيار IEEE 754-1985 تقريبا بالكامل (المنشور في 1985) ومعيار IEEE لعمليات الفاصلة العائمة الحسابية الشامل لجميع (معيارIEEE 854-1987). وافقت لجنة JTC1/SC 25 على تبني المعيار الدولي ISO/IEC/IEEE 60559:2011 من خلال اتفاقية ISO/IEEE PSDO..
يقوم المعيار بتعريف:
كما يشمل المعيار توصيات هامة خاصة بالأسلوب المتقدم في التعامل مع الاستثناءات وتوصيات خاصة بعمليات إضافية (مثل الدوال المثلثية) وحساب قيمة التعبيرات الحسابية والوصول إلى نتائج قابلة للتكرار.
بني المعيار على معيار معيار IEEE 754-1985 وحل محله، صدرت النسخة السابقة–بعد سبع سنوات من المراجعة – تحت إشراف دان زوراس وحررها مايك كوليشو. يشمل المعيار الجديد الصيغ الثنائية الموجودة في المعيار الأول بالإضافة إلى ثلاثة صيغ أساسية جديدة (واحدة ثنائية وإثنتين عشريتين)، لابد ان يدعم أي تطبيق واحدا على الأقل من الصيغ الأساسية كصيغة حسابية وصيغة تبادل حتى يكون موافقا للمعيار.
تصف الصيغ في معيار IEEE 754 مجموعات من بيانات الفاصلة العائمة وكيفية تمثيلها في عملية تبادل.
تضم أي صيغة التالي:
يمكن معرفة المجال الرقمي المحدود الذي يمكن تمثيله من خلال صيغة من الصيغ عن طريق الأساس (b)، عدد الأرقام في المعامل (الدقة p) ومتغير الأس emax:
إذن أصغر عدد موجب لا يساوي الصفر يمكن تمثيله (من خلال القيم السابقة) هو 1×10 وأكبر عدد هو 9999999×10 (9.999999×10)، والمجال ينحصر بين −9.999999×10 و9.999999×10. تعتبر الأعداد الأقرب لمقلوب نهايتي هذا المجال (−1×10 و1×10) أصغر الأعداد الطبيعية (في المقدار)، تسمى الأعداد التي تنحصر بين هذين العددين ولا تساوي الصفر بالأعداد دون الطبيعية subnormal numbers.
القيم الصفرية هي قيم محدودة معاملها صفر، وهذه هي الأصفار ذات الإشارة وتحدد بت الإشارة إذا كان الصفر هو -0 (صفرا سالبا) أو +0 (صفرا موجبا).
يعرف المعيار خمسة صيغ أساسية تسمى حسب أساسها وعدد البتات المستخدمة في تمثيلها. لابد أن يدعم أي تطبيق برمجي متوافق مع هذا المعيار صيغة واحدة على الأقل بالكامل. هناك ثلاثة صيغ فاصلة عائمة ثنائية (يمكن تمثيلها باستخدام 32 و64 و128 بت) وصيغتان فاصلة عائمة عشريتين (يمكن تمثيلها باستخدام 64 و128 بت). صيغتي binary32 وbinary64 هما الموجودتان في معيار IEEE 754-1985 باسم single وdouble.
دقة الصيغ الثنائية تزيد بواحد عن عن عدد البتات المستخدمة في معاملها نظرا لوجود بت خفية.
القيمة العشرية لـ digits هي digits × log10 base وهذه هي القيمة العشرية للدقة.
القيمة العشرية لـ Emax هي Emax × log10 base وهذه هي القيمة العشرية لأكبر أس ممكن.
تدعم تطبيقات العتاد والتطبيقات البرمجية كل الصيغ الأساسية.
لا حاجة لوجود أسلوب ترميز encoding للصيغ التي تستخدم فقط في عمليات حسابية أو أي عمليات أخرى (فيمكن ان يستخدم التطبيق أي طريقة خاصة لتمثيل هذه الصيغ) كل ما يجب تعريفه هو متغيراتها (b وp وemax) التي تصف مجموعة الأعداد المحدودة (المكونة من الإشارة والمعامل والأس) التي يمكن تمثيلها.
الهدف من هذه الصيغ هو تبادل بيانات الفاصلة العائمة عن طريق سلاسل بتات ثابتة الطول لكل صيغة.
يضم المعيار تعريف صيغ تبادل بطول 16 بت و32 بت و64 بت ومضاعفات 32 بت≥ 128 لتبادل أعداد الفاصلة العائمة الثنائية. تستخدم صيغة 16 بت في تبادل أو تخزين الأرقام الصغيرة (للرسوميات مثلا).
يتم تمثيل صيغ التبادل الثنائية هذه بنفس الطريقة المستخدمة في معيار IEEE 754-1985: بت للإشارة يليها w بت للأس تمثل إزاحة الأس بالقيمة bias وp-1 بت تمثل المعامل. يحسب عدد البتات المستخدمة في تمثيل الأس في أي صيغة مكونة من k بت كالتالي w = floor(4 log2(k))−13. وتنطبق هذه القاعدة على صيغتي 64 و128 بت، أما صيغتي 16 و32 بت فتستخدم بتات لتمثيل الأس (5 و8) أكثر مما تمح به هذه القاعدة (3 و7).
كما هو الحال في معيار IEEE 754-1985 يوجد بعض السلاسة في تمثيل القيم الغير رقمية ذات المؤشر.
يوجد صيغ تبادل بمضاعفات 32 بت لتبادل أرقام الفاصلة العائمة العشرية.
تمثل الأعداد في صيغ التبادل العشرية بنفس الطريقة تقريبا باستخدام الإشارة والأس والمعامل فيما عدا استخدام أسلوب أكثر تعقيدا لإتاحة تمثيل المعامل كسلسلة مضغوطة من الأرقام العشرية (أرقام دينسيلي العشرية المضغوطة Densely packed decimal) أو عدد ثنائي. الأرقام التي يمكن تمثيلها واحدة في كلا الأسلوبين، والقيم الغير رقمية ذات المؤشر لها تمثيل خاص بها (ومجموعة مماثلة من قيم payloads)
يعرف المعيار خمس خوارزميات تقريب. أول إثنين يقربان لأقرب قيمة ويسمى الآخرون بخوارزميات التقريب الموجه:العمليات المطلوبة لأي صيغة حسابية (بما فيها الصيغ الأساسية) يتم دعمها:
يقدم المعيار المقياس totalOrder الذي يعرف الترتيب الكلي لجميع أعداد الفاصلة العائمة في كل صيغة، ويتفق مع عمليات المقارنة العادية حين تقول أن عددا أكبر من آخر، ولكن عمليات المقارنة العادية تتعامل مع القيم الغير رقمية ككميات غير مرتبة وتساوي بين -0 و+0. أما totalOrder فهو قادر على ترتيب هذه الحالات كما أنه يميز بين الطرق المختلفة لتمثيل القيم غير الرقمية ويفرق بين طرق تمثيل العدد العشري الواحد.
يعرف المعيار خمس استثناءات وكل منها له مؤشر حالة status flag يعلن عند حدوث الاستثناء (فيما عدا بعض الحالات التي تكون القيمة فيها أقل من الحد الأدنى). لا حاجة للقيام بأي شيء آخر ولكن ينصح ببعض البدائل (أنظر بالأسفل).
الخمس استثناءات المحتملة:
هذه الخمس استثناءات هي نفسها الموجودة في معيار IEEE 754-1985.
يوصي المعيار باستخدام أساليب مختلفة للتعامل مع الاستثناءات مثل traps (استثناءات تغير خط سير البرنامج بشكل ما) وأساليب التعامل مع الاستثناءات الأخرى التي تقاطع خط سير البرنامج مثل try/catch. تبقى آلية traps وغيرها من آليات التعامل مع الاستثناءات اختيارية كما كانت في معيار IEEE 754-1985.
توصي أحد الفقرات الجديدة في المعيار بخمسين عملية يجب أن تقوم معايير لغات البرمجة بتعريفها مثل اللوغاريتم والرفع إلى أس والدوال المثلثية، هذه كلها عمليات اختيارية (غير مطلوبة حتى تكون اللغة موافقة للمعيار)، كما تشمل بعض عمليات التعامل مع النمط المتغير للخصائص attributes وبعض عمليات الاختزال (مجموع، مضروب وغيرها)، كل هذه العمليات مطلوبة لتقريب النتائج بشكل صحيح ولكن لا ضرورة أن تكون قادرة على اكتشاف حالات عدم الدقة أو الإعلان عنها.
يوصي المعيار بكيفية تعريف معايير لغات البرمجة لمعاني سلاسل من العمليات كما يشير إلى التفاصيل الصغيرة في المعنى الحرفي وتحقيق الامثلية optimization التي تغير قيمة الناتج.
ترك معيار IEEE 754-1985 المجال لبعض الاختلافات بين تطبيق وآخر (مثل طرق تمثيل بعض القيم والتعرف على بعض الاستثناءات). ضيق معيار IEEE 754-2008 مجال الاختلاف في هذه المسائل ولكن ما زالت هناك بعض الاختلافات (خاصة في الصيغ الثنائية). توصي الفقرة الخاصة بالقابلية للتكرار أنه يجب أن يقدم معيار اللغة بعض وسائل كتابة برامج متكررة النتائج (برامج نتائجها واحدة مع جميع التطبيقات المختلفة للغة) وتصف ما ينبغي القيام به للحصول على نتائج متكررة.
يتطلب المعيار عمليات للتحويل بين الصيغ الأساسية وصيغ السلاسل الرمزية الخارجية. لابد من وجود عمليات للتحويل من وإلى الصيغة العشرية الرمزية لكل الصيغ. لابد أن تتم عملية التحويل إلى سلسلة رمزية خارجية بحيث يمكن عمل تحويل عكسي باستخدام التقريب للقيمة الزوجية والحصول على القيمة الأصلية. لا ضرورة للاحتفاظ بقيمة payload الموجودة في القيم الغير رقمية ذات المؤشر أو القيم الغير رقمية بدون المؤشر. يمكن أن تؤدي عملية التحويل من السلسلة الرمزية الخارجية إلى تحويل قيمة غير رقمية بمؤشر إلى قيمة غير رقمية بدون مؤشر.
يمكن الاحتفاظ بالقيمة الثنائية الأصلية خلال عملية التحويل إلى القيمة العشرية والعكس باستخدام:
يمكن حساب عدد الأرقام العشرية المطلوبة لتمثيل الصيغ الثنائية الأخرى
حيث p هي عدد البتات الموجودة في المعامل في الصيغة الثنائية، 24 بت مثلا لصيغة binary32.
يمكن ضمان صحة عملية التقريب فقط إذا كان عدد الأرقام العشرية يزيد بـ3 عن عدد الأرقام العشرية لأكبر صيغة ثنائية تدعمها اللغة. مثلا إذا كانت صيغة binary32 هي أكبر صيغة ثنائية تدعمها اللغة إذن يمكن ضمان عملية تحويل وتقريب سلسلة عشرية خارجية مكونة من 12 رقم عند تحويلها لصيغة binary32، ولكنها غير مضمونة لسلسلة عشرية من 13 رقم.
عند استخدام أحد صيغ الفاصلة العائمة العشرية يمكن الاحتفاظ بالقيمة العشرية باستخدام: