ISO IEC 10967-1 adalah Standar Internasional mengenai teknologi informasi, khususnya tentang aritmatika bilangan bulat dan floating point.
Versi terbaru dari standar ini yang masih berlaku adalah terbitan tahun 2012 dengan judul berikut :
- ISO/IEC 10967-1:2012 Information technology — Language independent arithmetic — Part 1: Integer and floating point arithmetic
Standar ini terakhir ditinjau dan dikonfirmasi pada tahun 2018, oleh karena itu versi ini masih dinyatakan tetap berlaku hingga saat ini.
Standar ISO IEC 10967-1:2012
Versi elektronik dari Standar Internasional ini dapat diunduh dari situs web Satuan Tugas Teknologi Informasi ISO/IEC (ITTF)
ISO/IEC 10967-1:2012 menetapkan properti dari banyak tipe data integer dan floating point,
yang tersedia dalam berbagai bahasa pemrograman yang umum digunakan untuk aplikasi matematika dan numerik.
Tujuannya adalah untuk memastikan bahwa properti aritmatika pada tipe data yang sesuai tersedia untuk programmer.
Penerbitan Standar ISO IEC 10967-1:2012
Standar ini diterbitkan dan dipublikasikan pada Juli 2012, berupa dokumen edisi 2 dengan jumlah halaman sebanyak 132 lembar.
Disusun oleh :
- Technical Committee ISO/IEC JTC 1/SC 22 Programming languages, their environments and system software interfaces,
- atau : Komite Teknis ISO/IEC JTC 1/SC 22 Bahasa pemrograman, lingkungan mereka, dan antarmuka perangkat lunak sistem.
ICS :
- 35.060 Languages used in information technology, atau : Bahasa yang digunakan dalam teknologi informasi
Dengan terbitnya standar ini, maka standar sebelumnya dinyatakan tidak berlaku dan ditarik yakni ISO/IEC 10967-1:1994.
Sebagaimana standar ISO lainnya, ISO/IEC 10967-1:2012 ini juga ditinjau setiap 5 tahun dan peninjauan sudah mencapai tahap 90,93 (dikonfirmasi).
Isi Standar ISO IEC 10967-1:2012
Berikut adalah kutipan isi Standar ISO/IEC 10967-1:2012 yang diambil dari Online Browsing Platform (OBP) dari situs resmi iso.org.
Yang ditambah dengan berbagai keterangan dan informasi untuk mempermudah pemahaman pembaca.
Hanya bagian standar yang informatif yang tersedia untuk umum, OBP hanya menampilkan hingga klausa 3 saja.
Oleh karena itu, untuk melihat konten lengkap dari standar ini, maka pembaca harus membeli standar dari ISO ini secara resmi.
Daftar Isi Standar ISO IEC 10967-1:2012
- Foreword
- Introduction
- 1 Scope
- 1.1 Inclusions
- 1.2 Exclusions
- 2 Conformity
- 3 Normative references
- 4 Symbols and definitions
- 4.1 Symbols
- 4.2 Definitions of terms
- 5 Specifications for integer and floating point datatypes and operations
- 5.1 Integer datatypes and operations
- 5.2 Floating point datatypes and operations
- 5.3 Operations for conversion between numeric datatypes
- 5.4 Numerals as operations in a programming language
- 6 Notification
- 6.1 Model for handling of notifications
- 6.2 Notification alternatives
- 6.3 Delays in notification
- 6.4 User selection of alternative for notification
- 7 Relationship with language standards
- 8 Documentation requirements
- Annex A Partial conformity
- A.1 Integer overflow notification relaxation
- A.2 Infinitary notification relaxation
- A.3 Inexact notification relaxation
- A.4 Underflow notification relaxation
- A.5 Subnormal values relaxation
- A.6 Accuracy relaxation for add, subtract, multiply, and divide
- A.7 Accuracy relaxation for floating point conversion
- Annex B IEC 60559 bindings
- B.1 Summary
- B.2 Notification
- Annex C Rationale
- C.1 Scope
- C.2 Conformity
- C.3 Normative references
- C.4 Symbols and definitions
- C.5 Specifications for integer and floating point datatypes and operations
- C.6 Notification
- C.7 Relationship with language standards
- C.8 Documentation requirements
- Annex D Example bindings for specific languages
- D.1 Ada
- D.2 C
- D.3 C++
- D.4 Fortran
- D.5 Common Lisp
- Annex E Example of a conformity statement
- E.1 Types
- E.2 Integer parameters
- E.3 Floating point parameters
- E.4 Expressions
- E.5 Notification
- Annex F Example programs
- F.1 Verifying platform acceptability
- F.2 Selecting alternate code
- F.3 Terminating a loop
- F.4 Estimating error
- F.5 Saving exception state
- F.6 Fast versus accurate
- F.7 High-precision multiply
- Bibliography
Foreword : Kata pengantar
ISO (Organisasi Internasional untuk Standardisasi) dan IEC (Komisi Elektroteknik Internasional) membentuk sistem khusus untuk standardisasi di seluruh dunia.
Badan nasional yang menjadi anggota ISO atau IEC berpartisipasi dalam pengembangan Standar Internasional,
melalui komite teknis yang dibentuk oleh organisasi masing-masing untuk menangani bidang kegiatan teknis tertentu.
Komite teknis ISO dan IEC berkolaborasi dalam bidang yang menjadi kepentingan bersama.
Organisasi internasional lainnya, pemerintah dan non-pemerintah, bekerja sama dengan ISO dan IEC, juga ambil bagian dalam pekerjaan tersebut.
Di bidang teknologi informasi, ISO dan IEC telah membentuk komite teknis bersama, ISO/IEC JTC 1.
Standar Internasional disusun sesuai dengan aturan yang diberikan dalam Arahan ISO/IEC, Bagian 2.
Tugas utama komite teknis bersama adalah menyiapkan Standar Internasional.
Rancangan Standar Internasional yang diadopsi oleh komite teknis bersama diedarkan ke badan-badan nasional untuk pemungutan suara.
Publikasi sebagai Standar Internasional memerlukan persetujuan setidaknya 75% dari badan-badan nasional yang memberikan suara.
Perhatian diberikan pada kemungkinan bahwa beberapa elemen dari dokumen ini dapat menjadi subyek hak paten.
ISO dan IEC tidak bertanggung jawab untuk mengidentifikasi setiap atau semua hak paten tersebut.
ISO/IEC 10967-1 disiapkan oleh :
- Joint Technical Committee ISO/IEC JTC 1, Information technology, Subcommittee SC 22, Programming languages, their environments and system software interfaces,
- Atau : Komite Teknis Bersama ISO/IEC JTC 1, Teknologi informasi, Sub-komite SC 22, Bahasa pemrograman, lingkungan mereka, dan antarmuka perangkat lunak sistem.
Edisi kedua ini membatalkan dan menggantikan edisi pertama (ISO/IEC 10967-1:1994), yang telah direvisi secara teknis.
ISO/IEC 10967-1 terdiri dari bagian-bagian berikut, dengan judul umum Teknologi informasi — Aritmatika independen bahasa:
- — Bagian 1: Aritmatika bilangan bulat dan floating point
- — Bagian 2: Fungsi numerik dasar
- — Bagian 3: Aritmatika bilangan bulat dan floating point kompleks dan fungsi numerik dasar kompleks
Mengenal ISO dan IEC
ISO (International Organization for Standardization) adalah suatu organisasi atau lembaga nirlaba internasional.
Tujuan dari ISO adalah untuk membuat dan memperkenalkan standar dan standardisasi internasional untuk berbagai tujuan.
Sebagaimana dengan ISO, IEC juga merupakan organisasi standardisasi internasional yang menyusun dan menerbitkan standar-standar internasional.
Namun ruang lingkupnya adalah untuk seluruh bidang elektrik, elektronik dan teknologi yang terkait atau bidang teknologi elektro (electrotechnology).
Lebih jelas mengenai ISO dan IEC dapat dibaca pada artikel lain dari standarku.com berikut :
Introduction : pengantar
Tujuan
Pemrogram yang menulis program yang melakukan sejumlah besar pemrosesan numerik seringkali tidak yakin,
bagaimana kinerja suatu program ketika dijalankan di bawah prosesor bahasa tertentu.
Standar bahasa pemrograman secara tradisional agak lemah di bidang pemrosesan numerik,
jarang memberikan spesifikasi yang memadai dari properti tipe data aritmatika, terutama bilangan floating point.
Seringkali mereka bahkan tidak memerlukan banyak dokumentasi tipe data aritmatika yang sebenarnya oleh prosesor bahasa yang sesuai.
Ini adalah maksud dari bagian ISO/IEC 10967 ini untuk membantu memperbaiki kekurangan ini,
dengan menetapkan definisi yang tepat dari tipe data integer dan floating point, dan persyaratan untuk dokumentasi.
Tidak diklaim bahwa bagian dari ISO/IEC 10967 ini akan memastikan kepastian yang lengkap dari perilaku aritmatika dalam semua keadaan;
kompleksitas perangkat lunak numerik dan kesulitan menganalisis dan membuktikan algoritma terlalu besar untuk dicoba.
Tujuan :
- pertama dari bagian ISO/IEC 10967 ini adalah untuk meningkatkan prediktabilitas dan keandalan perilaku program yang melakukan pemrosesan numerik.
- kedua, yang membantu mendukung yang pertama, adalah membantu standar bahasa pemrograman untuk mengekspresikan semantik tipe data aritmatika.
- ketiga adalah untuk membantu meningkatkan portabilitas program yang melakukan pemrosesan numerik di berbagai platform yang berbeda.
Peningkatan prediktabilitas perilaku akan membantu programmer merancang kode yang dimaksudkan untuk berjalan di berbagai platform,
dan akan membantu dalam memprediksi apa yang akan terjadi ketika program tersebut dipindahkan dari satu prosesor bahasa yang sesuai ke yang lain.
Perhatikan bahwa bagian ISO/IEC 10967 ini tidak berusaha memastikan hasil yang identik bit-demi-bit ketika program ditransfer antar prosesor bahasa,
atau diterjemahkan dari satu bahasa ke bahasa lain.
Namun, pengalaman menunjukkan bahwa lingkungan numerik yang beragam dapat menghasilkan hasil yang sebanding dalam sebagian besar keadaan,
dan bahwa dengan desain program yang cermat, portabilitas yang signifikan sebenarnya dapat dicapai.
Selain itu, standar IEC 60559 (IEEE 754) berjalan jauh untuk memastikan hasil yang identik bit-for-bit,
dan dalam edisi kedua ini bagian dari ISO/IEC 10967 persyaratan diperketat (dibandingkan dengan edisi pertama) untuk mendekati orang-orang dari IEEE 754.
Konten
Bagian dari ISO/IEC 10967 ini mendefinisikan sifat dasar dari tipe data integer dan floating point.
Properti ini disajikan dalam bentuk model parameter.
Parameter memungkinkan variasi yang cukup dalam model sehingga beberapa tipe data integer dan floating point tercakup.
Secara khusus, tipe data floating point IEC 60559 (IEEE 754), baik dari radix 2 dan radix 10, tercakup,
serta tipe data integer, baik tidak terbatas maupun terbatas, untuk yang terakhir baik yang ditandatangani atau tidak ditandatangani, dicakup.
Tetapi ketika satu set nilai parameter tertentu dipilih, dan semua dokumentasi yang diperlukan disediakan,
informasi yang dihasilkan harus cukup tepat untuk memungkinkan analisis numerik yang cermat.
Persyaratan bagian ISO/IEC 10967 ini mencakup empat bidang.
- Pertama, programmer harus diberikan akses runtime ke operasi yang ditentukan pada nilai tipe data integer atau floating point.
- Kedua, programmer harus diberikan akses runtime ke parameter (dan fungsi parameter) yang menggambarkan properti aritmatika dari tipe data integer atau floating point.
- Ketiga, program pelaksana harus diberi tahu ketika hasil yang tepat tidak dapat dikembalikan (misalnya, ketika hasil yang dihitung mungkin di luar jangkauan atau tidak ditentukan).
- Keempat, properti numerik dari platform yang sesuai harus didokumentasikan secara publik.
Bagian dari ISO/IEC 10967 ini berfokus pada tipe data integer dan floating point klasik.
Bagian selanjutnya mempertimbangkan fungsi numerik dasar umum (Bagian 2), bilangan numerik kompleks dan fungsi numerik dasar kompleks (Bagian 3).
Keuntungan
Adopsi dan penggunaan yang tepat dari bagian ISO/IEC 10967 ini dapat menghasilkan manfaat berikut.
Untuk standar bahasa pemrograman, akan dimungkinkan untuk mendefinisikan semantik aritmatikanya secara lebih tepat,
tanpa mencegah implementasi bahasa yang efisien pada berbagai arsitektur mesin.
Pemrogram perangkat lunak numerik akan dapat menilai portabilitas program mereka terlebih dahulu.
Pemrogram akan dapat menukar persyaratan desain program untuk portabilitas dalam program yang dihasilkan.
Dalam program, seseorang akan dapat menentukan (pada saat dijalankan) properti numerik penting dari implementasi.
Mereka akan dapat menolak implementasi yang tidak sesuai, dan (mungkin) dengan benar mengkarakterisasi keakuratan hasil mereka sendiri.
Program akan dapat mendeteksi (dan mungkin mengoreksi) pengecualian dalam pemrosesan aritmatika.
Pengguna akhir akan merasa lebih mudah untuk menentukan apakah program aplikasi (yang didokumentasikan dengan benar),
kemungkinan akan dijalankan dengan memuaskan di platform mereka.
Ini dapat dilakukan dengan membandingkan persyaratan program yang terdokumentasi dengan properti platform yang terdokumentasi.
Terakhir, pengguna akhir paket aplikasi numerik akan dapat mengandalkan eksekusi yang benar dari paket tersebut.
Artinya, untuk algoritma yang diprogram dengan benar, hasilnya dapat diandalkan jika dan hanya jika tidak ada pemberitahuan.
ISO IEC 10967-1:2012 Klausa 1-4
1 Scope : Lingkup
Bagian ISO/IEC 10967 ini menentukan properti dari banyak tipe data integer dan floating point,
yang tersedia dalam berbagai bahasa pemrograman yang umum digunakan untuk aplikasi matematika dan numerik.
Bagian ISO/IEC 10967 ini tidak bertujuan untuk memastikan bahwa fungsi numerik arbitrer dapat dikodekan sedemikian rupa,
untuk menghasilkan hasil yang dapat diterima pada semua tipe data yang sesuai.
Sebaliknya, tujuannya adalah untuk memastikan bahwa properti aritmatika pada tipe data yang sesuai tersedia untuk programmer.
Oleh karena itu, tidak masuk akal untuk menuntut agar perangkat lunak substantif dijalankan pada setiap implementasi,
yang dapat mengklaim kesesuaian dengan bagian ISO/IEC 10967 ini.
Implementor dapat memilih kombinasi dukungan perangkat keras dan perangkat lunak apa pun untuk memenuhi spesifikasi bagian ISO/IEC 10967 ini.
Tipe data dan operasi pada nilai tipe data tersebut, dari lingkungan komputasi seperti yang dilihat oleh pemrogram/pengguna, yang tidak atau tidak sesuai dengan spesifikasi.
Istilah implementasi (dari bagian ISO/IEC 10967 ini) menunjukkan lingkungan komputasi total yang berkaitan dengan bagian ISO/IEC 10967 ini,
termasuk perangkat keras, pemroses bahasa, pustaka subrutin, fasilitas penanganan pengecualian, perangkat lunak lain, dan dokumentasi.
1.1 Inklusi ISO IEC 10967-1:2012
Bagian ISO/IEC 10967 ini menyediakan spesifikasi untuk properti tipe data integer dan floating point serta operasi dasar pada nilai tipe data ini.
Spesifikasi disertakan untuk tipe data integer terbatas dan tidak terbatas, serta tipe data floating point.
Batas untuk terjadinya pengecualian dan kesalahan maksimum yang diizinkan ditentukan untuk setiap operasi yang ditentukan.
Juga hasil yang dihasilkan dengan memberikan operan nilai khusus, seperti infinity atau NaN (bukan-angka), ditentukan untuk setiap operasi floating point yang ditentukan.
Bagian ISO/IEC 10967 ini memberikan spesifikasi untuk:
- a) Himpunan nilai yang diperlukan dari tipe data aritmatika.
- b) Sejumlah operasi aritmatika, antara lain:
- 1) operasi perbandingan pada dua operand dengan tipe yang sama,
- 2) operasi primitif (penambahan, pengurangan, dll) dengan operan dari jenis yang sama,
- 3) operasi yang mengakses properti dari nilai individu,
- 4) operasi konversi nilai dari satu tipe data aritmatika ke tipe data aritmatika lain, di mana setidaknya salah satu tipe data sesuai dengan bagian ISO/IEC 10967 ini, dan
- 5) angka untuk semua nilai yang ditentukan oleh bagian ISO/IEC 10967 ini untuk tipe data yang sesuai.
Bagian ISO/IEC 10967 ini juga menyediakan spesifikasi untuk:
- c) Hasil yang dihasilkan oleh operasi titik mengambang yang disertakan ketika satu atau lebih nilai argumen adalah nilai khusus IEC 60559.
- d) Parameter program-terlihat yang mencirikan nilai dan aspek tertentu dari operasi tipe data aritmatika.
- e) Metode pelaporan pengecualian aritmatika.
1.2 Pengecualian ISO IEC 10967-1:2012
Bagian ISO/IEC 10967 ini tidak memberikan spesifikasi untuk:
- a) Operasi aritmatika dan perbandingan yang operandnya lebih dari satu tipe data. Bagian dari ISO/IEC 10967 ini tidak mensyaratkan atau mengecualikan keberadaan operasi “operan campuran” tersebut.
- b) Tipe data interval, atau operasi pada data tersebut. Bagian dari ISO/IEC 10967 ini tidak memerlukan atau mengecualikan data atau operasi tersebut.
- c) Tipe data titik tetap, atau operasi pada data tersebut. Bagian dari ISO/IEC 10967 ini tidak memerlukan atau mengecualikan data atau operasi tersebut.
- d) Tipe data rasional, atau operasi pada data tersebut. Bagian dari ISO/IEC 10967 ini tidak memerlukan atau mengecualikan data atau operasi tersebut.
- e) Sifat-sifat tipe data aritmatika yang tidak berhubungan dengan proses numerik, seperti representasi nilai pada media fisik.
- f) Properti tipe data integer dan floating point yang termasuk dalam standar bahasa pemrograman atau spesifikasi lainnya. Contohnya meliputi:
- 1) sintaks angka dan ekspresi dalam bahasa pemrograman, termasuk prioritas operator dalam bahasa pemrograman,
- 2) sintaks yang digunakan untuk bentuk string karakter yang diuraikan (input) atau dihasilkan (output) untuk angka oleh bahasa pemrograman atau pustaka tertentu,
- 3) ada atau tidak adanya paksaan tipe data otomatis, dan konsekuensi dari penerapan operasi ke nilai tipe yang tidak tepat, atau data yang tidak diinisialisasi,
- 4) aturan untuk penugasan, passing parameter, dan nilai kembalian.
Catatan : Lihat Klausul 7 dan Lampiran D untuk diskusi tentang standar bahasa dan ikatan bahasa.
Representasi internal nilai berada di luar cakupan standar ini.
Misalnya, nilai bias eksponen, jika ada, tidak ditentukan, atau tersedia sebagai parameter yang ditentukan oleh bagian ISO/IEC 10967 ini.
Representasi internal tidak perlu unik, juga tidak ada persyaratan untuk bidang yang dapat diidentifikasi (untuk tanda, eksponen, dan seterusnya).
Lebih lanjut, bagian ISO/IEC 10967 ini tidak memberikan spesifikasi tentang bagaimana operasi harus diimplementasikan,
atau algoritma mana yang akan digunakan untuk berbagai operasi.
3 Normative references : Referensi normatif
Dokumen referensi berikut sangat diperlukan untuk penerapan bagian ISO/IEC 10967 ini.
Untuk referensi bertanggal, hanya edisi yang dikutip yang berlaku.
Untuk referensi yang tidak bertanggal, berlaku edisi terbaru dari dokumen yang diacu (termasuk amandemennya).
- IEC 60559, Standard for floating-point arithmetic.
4 Symbols and definitions : Simbol dan definisi
4.1 Symbols : Simbol
Untuk tujuan dokumen ini, simbol berikut digunakan.
4.1.1 Operators and relations : Operator dan relasi
Semua operator prefiks dan infiks memiliki arti matematis eksak konvensional. Secara khusus, dokumen ini menggunakan:
- dan untuk implikasi logis dan ekuivalensi
- +, , /, |x|, x⌋, x⌉ dan bulat(x) pada nilai riil
- • untuk perkalian pada nilai riil
- <, , , dan > antara nilai nyata
- = dan antara nilai nyata dan khusus
- maks pada set nilai riil yang tidak kosong dan tertutup ke atas
- min pada set nilai riil yang tidak kosong dan tertutup ke bawah
- , , , , , , , =, dan dengan himpunan
- × untuk produk Cartesian dari himpunan
- → untuk pemetaan antar set
- | untuk hubungan pembagian antara nilai-nilai integer
- xy, , logb(x) pada nilai riil
Catatan 1 — digunakan secara informal, dalam catatan dan alasan.
Untuk x R, notasi x⌋ menunjukkan bilangan bulat terbesar yang tidak lebih besar dari x:
x⌋ dan x 1 < x⌋ x
notasi x⌉ menunjukkan bilangan bulat terkecil tidak kurang dari x:
x⌋ dan x x⌋ < x + 1
dan notasi round(x) menunjuk bilangan bulat yang paling dekat dengan x:
bulat(x) dan x 0,5 bulat(x) x + 0,5
di mana dalam kasus x tepat setengah jalan antara dua bilangan bulat, bilangan bulat genap adalah hasilnya.
Relasi pembagian (|) pada bilangan bulat menguji apakah bilangan bulat i membagi bilangan bulat j dengan tepat:
i|j (i 0 dan i • n = j untuk beberapa n )
CATATAN 2 — i|j benar tepat ketika j/i didefinisikan dan j/i .
4.1.2 Sets and intervals : Set dan interval
Dalam dokumen ini, menyatakan himpunan bilangan bulat matematika,
R menyatakan himpunan bilangan real, dan C menyatakan himpunan bilangan kompleks atas R.
Perhatikan bahwa ⊂ R ⊂ C.
Notasi konvensional untuk definisi himpunan dan untuk operasi himpunan digunakan.
Notasi berikut untuk interval digunakan dalam dokumen ini:
- [x,z] menunjukkan interval {y R | x y z},
- ]x,z] menunjukkan interval {y R | x < y z},
- [x,z[ menunjukkan interval {y R | x y < z}, dan
- ]x,z[ menunjukkan interval {y R | x < y < z}.
Catatan : Notasi yang menggunakan tanda kurung bulat untuk ujung terbuka dari suatu interval tidak digunakan, karena risiko kebingungan dengan notasi untuk pasangan.
4.1.3 Exceptional values : Nilai luar biasa
Bagian dari ISO/IEC 10967 menggunakan enam nilai luar biasa berikut ini:
- a) tidak eksak: hasil dibulatkan dan berbeda dengan hasil eksak.
- b) underflow: nilai absolut dari hasil yang tidak dibulatkan kurang dari nilai normal terkecil, dan hasil yang dibulatkan mungkin kehilangan akurasi karena denormalisasi (lebih dari yang hilang dengan pembulatan biasa jika rentang eksponen tidak dibatasi).
- c) overflow: hasil yang dibulatkan (saat dibulatkan seolah-olah rentang eksponen tidak dibatasi) lebih besar dari apa yang dapat direpresentasikan dalam tipe data hasil.
- d) infinitary: fungsi matematika yang bersesuaian memiliki pole pada titik argumen berhingga, atau hasilnya tidak berhingga dari argumen berhingga.
Catatan : infinitary adalah generalisasi dari divide_by_zero.
- e) tidak valid: operasi tidak terdefinisi tetapi tidak infinitary, atau hasilnya dalam C tetapi tidak dalam R, untuk argumen yang diberikan.
- f) absolute_precision_underflow: menunjukkan bahwa setidaknya satu argumen sedemikian rupa sehingga kerapatan nilai yang dapat diwakili terlalu rendah di sekitar nilai argumen yang diberikan untuk hasil numerik yang dianggap tepat untuk dikembalikan. Nilai luar biasa ini digunakan untuk operasi yang mendekati fungsi trigonometri (Bagian 2 dan Bagian 3) dan untuk operasi yang mendekati fungsi hiperbolik dan eksponensial kompleks (Bagian 3).
Untuk nilai luar biasa, nilai lanjutan dapat diberikan dalam ISO/IEC 10967 dalam tanda kurung setelah nilai luar biasa.
4.1.4 Special values : Nilai khusus
Simbol berikut mewakili nilai khusus yang ditentukan dalam IEC 60559 dan digunakan dalam ISO/IEC 10967:
0, +∞, , qNaN, dan sNaN.
Nilai-nilai ini bukan bagian dari I atau F (lihat Klausul 5.1 dan 5.2 untuk definisi tipe data ini), tetapi jika
hasinfI
(lihat Klausul 5.1) memiliki nilai true, nilai +∞, -∞ termasuk dalam tipe data integer dalam implementasi yang sesuai dengan I,
dan jika iec_60559F (lihat Klausul 5.2.1) memiliki nilai true, semua nilai khusus ini termasuk dalam tipe data floating point dalam implementasi yang sesuai dengan F.
Catatan :
- Dokumen ini menggunakan lima nilai khusus di atas untuk kompatibilitas dengan IEC 60559. Secara khusus, simbol 0 (dicetak tebal) bukanlah penerapan (matematis) unary — ke nilai 0, dan merupakan nilai yang berbeda secara logika dari 0 .
Spesifikasi untuk operasi floating point mencakup hasil yang akan dikembalikan oleh operasi jika diberikan satu atau lebih dari nilai khusus IEC 60559 0, +∞, , atau NaNs sebagai nilai input.
Spesifikasi ini hanya berlaku untuk sistem yang menyediakan dan mendukung nilai-nilai khusus ini.
Jika suatu implementasi tidak mampu merepresentasikan hasil 0 atau nilai lanjutan, 0 digunakan sebagai hasil aktual atau nilai lanjutan.
Jika suatu implementasi tidak mampu mewakili hasil yang ditentukan atau nilai kelanjutan dari nilai khusus IEC 60559 +∞, , atau qNaN,
hasil aktual atau nilai lanjutan bersifat mengikat atau implementasi yang ditentukan.
4.1.5 The Boolean datatype : Tipe data Boolean
Tipe data Boolean terdiri dari dua nilai true dan false.
Catatan :
- Hubungan matematika benar atau salah (atau tidak ditentukan, jika operan tidak ditentukan), yang merupakan kondisi abstrak, bukan nilai dalam tipe data. Sebaliknya, benar dan salah adalah nilai dalam Boolean.
4.1.6 Operation specification framework : Kerangka spesifikasi operasi
Setiap operasi ditentukan menggunakan notasi matematika dengan kasus.
Setiap kondisi kasus dimaksudkan untuk tidak berhubungan dengan kasus lain, dan mencakup semua nilai non-khusus serta beberapa nilai khusus.
Secara matematis, setiap argumen untuk suatu operasi adalah sepasang nilai dan satu set nilai luar biasa dan juga untuk nilai kembalian.
Namun, dalam kebanyakan kasus hanya bagian pertama dari pasangan ini yang ditulis dalam spesifikasi.
Himpunan nilai luar biasa yang dikembalikan dari suatu operasi setidaknya merupakan gabungan dari himpunan nilai luar biasa dari argumen.
Nilai luar biasa baru apa pun yang dihasilkan oleh operasi itu sendiri diberikan dalam bentuk nilai_luar biasa (nilai lanjutan),
yang menunjukkan bahwa bagian kedua (implisit) dari nilai pengembalian matematis tidak hanya merupakan gabungan dari bagian kedua (implisit) dari argumen,
tetapi selain itu digabungkan dengan himpunan tunggal dari nilai luar biasa yang diberikan,
atau, dalam kasus underflow atau overflow, himpunan nilai luar biasa yang diberikan dan tidak tepat.
Dalam sebuah implementasi, nilai-nilai luar biasa biasanya tidak menyertai setiap argumen dan nilai kembalian, melainkan ditangani sebagai pemberitahuan. Lihat Klausul 6
Saat tidak mengomunikasikan nilai, notifikasi harus bersifat internal ke setiap utas komputasi, baik utas eksplisit atau implisit dalam program seperti yang terlihat oleh pemrogram.
Saat mengkomunikasikan nilai, jika utas pengirim nilai memiliki pemberitahuan yang mungkin relevan untuk nilai yang dikomunikasikan,
pemberitahuan ini harus dikomunikasikan ke utas penerima bersama dengan nilai (dari tipe data apa pun, bukan hanya numerik).
Dalam kasus seperti itu, nilai luar biasa dikaitkan dengan nilai,
meskipun mungkin mengambil pemberitahuan di utas yang muncul untuk perhitungan berbeda di utas itu dan tidak dihapus.
Namun, banyak metode yang ada untuk panggilan prosedur jarak jauh, atau komunikasi utas, tidak mengomunikasikan pemberitahuan (bahkan ketika mereka direkam dalam indikator).
4.2 Definitions of terms
4.2 Definisi istilah
Untuk tujuan dokumen ini, istilah dan definisi berikut berlaku.
4.2.1 accuracy : ketepatan
kedekatan antara hasil matematika yang benar dan hasil yang dihitung
4.2.2 arithmetic datatype
tipe data yang nilai non-khususnya adalah anggota , R, atau C
4.2.3 continuation value
nilai komputasi yang digunakan sebagai hasil dari operasi aritmatika ketika pengecualian terjadi, nilai lanjutan dimaksudkan untuk digunakan dalam pemrosesan aritmatika berikutnya.
Nilai kelanjutan dapat berupa nilai (dalam tipe data yang dapat diwakili) dalam R atau nilai khusus IEC 60559. (Kontras dengan nilai luar biasa. Lihat Klausul 6.2.1).
4.2.4 denormalisation
penyertaan digit nol timah, dengan penyesuaian eksponen yang sesuai
Denormalisasi secara logis dilakukan sebelum pembulatan (jika tidak, mungkin ada pembulatan ganda, yaitu pembulatan dilakukan dua kali dengan fungsi pembulatan yang sedikit berbeda,
dan itu tidak sesuai). Ini dapat dilakukan untuk mendapatkan eksponen (hanya) dalam rentang yang dapat diwakili.
4.2.5 denormalisation loss
lebih besar dari kesalahan pembulatan normal yang disebabkan oleh fakta bahwa denormalisasi ditambah pembulatan dapat kehilangan presisi,
lebih dari hanya pembulatan akan dilakukan jika rentang eksponen target tidak dibatasi
Lihat Klausul 5.2.4 untuk definisi lengkap.
4.2.6 error : kesalahan
perbedaan antara nilai yang dihitung dan nilai yang benar secara matematis
Digunakan dalam frasa seperti “kesalahan pembulatan” atau “kesalahan terikat”.
4.2.7 error : kesalahan
pengecualian
Digunakan dalam frasa seperti “pesan kesalahan” atau “keluaran kesalahan”. Kesalahan dan pengecualian bukanlah sinonim dalam konteks lain.
Klausa 4.2.8 – 4.2.10
4.2.8 exception : pengecualian
ketidakmampuan operasi untuk mengembalikan hasil numerik terbatas yang sesuai dari argumen terbatas
Ini mungkin muncul karena tidak ada hasil berhingga seperti itu secara matematis (tak berhingga (misalnya, di kutub),
tidak valid (misalnya, ketika hasil sebenarnya dalam C tetapi tidak dalam R)),
atau karena hasil matematika tidak dapat, atau mungkin tidak,
menjadi dapat direpresentasikan dengan akurasi yang memadai (underflow, overflow) atau viabilitas (absolute_precision_underflow).
Catatan 1 :
- absolute_precision_underflow tidak digunakan dalam dokumen ini, tetapi digunakan di Bagian 2 (dan dengan demikian juga di Bagian 3).
Catatan 2 :
- Istilah pengecualian di sini tidak digunakan untuk menunjuk metode penanganan pemberitahuan tertentu yang termasuk dalam kategori ‘perubahan aliran kontrol’.
- Metode penanganan notifikasi tersebut akan disebut sebagai “pengecualian [nama bahasa pemrograman]”, jika dirujuk, khususnya dalam Lampiran D.
4.2.9 exceptional value
nilai non-numerik yang dihasilkan (dalam model spesifikasi) oleh operasi aritmatika untuk menunjukkan terjadinya pengecualian (atau ketidaktepatan hasil)
Nilai luar biasa tidak digunakan dalam pemrosesan aritmatika berikutnya. (Lihat Klausul 5.)
Catatan 1 :
- Nilai-nilai luar biasa digunakan sebagai formalisme yang menentukan saja.
- Sehubungan dengan dokumen ini, mereka tidak mewakili nilai dari salah satu tipe data yang dijelaskan.
- Tidak ada persyaratan bahwa mereka diwakili atau disimpan dalam sistem komputasi.
Catatan 2 :
- Nilai luar biasa jangan dikacaukan dengan NaN dan infinitas yang didefinisikan dalam IEC 60559. Bandingkan definisi ini dengan nilai kelanjutan di atas.
4.2.10 helper function
fungsi yang digunakan semata-mata untuk membantu dalam ekspresi persyaratan
Fungsi pembantu tidak dapat diakses oleh programmer, dan tidak diperlukan untuk menjadi bagian dari implementasi.
Klausa 4.2.11 – 4.2.19
4.2.11 implementation : implementasi (dari dokumen ini)
lingkungan aritmatika total yang disajikan kepada pemrogram,
termasuk perangkat keras, pemroses bahasa, fasilitas penanganan pengecualian, pustaka subrutin, perangkat lunak lain, dan semua dokumentasi terkait
4.2.12 literal
entitas sintaksis tunggal yang menunjukkan nilai konstan
4.2.13 normal value
nilai non-khusus dan non-subnormal dari tipe data floating point F
Lihat FN di Klausul 5.2 untuk definisi lengkap
4.2.14 notification : pemberitahuan
proses dimana program (atau pengguna program itu) diberitahu bahwa pengecualian aritmatika telah terjadi
Misalnya, membagi 2 dengan 0 menghasilkan pemberitahuan untuk infinitary. Lihat Klausul 6 untuk rinciannya.
4.2.15 numeral
literal numerik
Ini mungkin menunjukkan nilai dalam atau R, 0, tak terhingga, atau NaN.
4.2.16 operation
fungsi yang dimaksudkan untuk tersedia langsung bagi pemrogram
Berbeda dengan fungsi pembantu atau fungsi matematika teoritis.
4.2.17 pole
argumen, x0, di mana fungsi matematika yang diberikan, f, didefinisikan, terbatas, monoton, dan kontinu dalam setidaknya satu jalur pendekatan menuju x0, dan di mana tidak terbatas
4.2.18 precision
jumlah digit dalam pecahan bilangan floating point
4.2.19 rounding
tindakan menghitung hasil untuk operasi yang mendekati hasil yang tepat untuk operasi itu, tetapi itu tidak memiliki angka di luar apa yang dapat diwakili oleh tipe data target
Perhatikan bahwa hasil representable yang sesuai mungkin tidak ada (lihat Klausul 5.2.5).
Klausa 4.2.20 – 4.2.23
4.2.20 rounding function
fungsi, rnd : R → X, (di mana X adalah himpunan bagian dari R yang diskrit dan tak terbatas) yang memetakan setiap elemen X ke dirinya sendiri, dan bersifat monoton tidak menurun
Secara formal, jika x dan y berada di R,
x X rnd(x) = x
x < y nd(x) nd(y)
Perhatikan bahwa jika u berada di antara dua nilai yang berdekatan dalam X, rnd(u) memilih salah satu dari nilai-nilai yang berdekatan tersebut.
4.2.21 round to nearest
fungsi pembulatan, rnd, bahwa ketika u R benar-benar di antara dua nilai yang berdekatan di X,
rnd(u) memilih yang terdekat u, tetapi jika nilai-nilai yang berdekatan berjarak sama dari u,
salah satu nilai dapat dipilih secara deterministik tetapi sedemikian rupa bahwa simetri tanda dipertahankan (rnd(−u) = rnd(u))
4.2.22 round toward minus infinity
fungsi pembulatan, rnd, bahwa ketika u R benar-benar berada di antara dua nilai yang berdekatan di X, rnd(u) memilih satu yang kurang dari u
4.2.23 round toward plus infinity
fungsi pembulatan, rnd, bahwa ketika u R benar-benar berada di antara dua nilai yang berdekatan di X, rnd(u) memilih satu yang lebih besar dari u
4.2.24 signature(dari suatu fungsi atau operasi)
argumen dan ringkasan hasil informasi tentang operasi atau fungsi
signature mencakup nama fungsi atau operasi; subset dari nilai argumen yang diizinkan untuk operasi;
dan superset hasil dari fungsi atau operasi (termasuk nilai luar biasa jika ada), jika argumen berada dalam subset nilai argumen yang diberikan dalam tanda tangan.
Tanda tangan addI : I × I → I {overflow} menyatakan bahwa operasi bernama addI akan menerima pasangan nilai apa pun dalam I sebagai input,
dan ketika diberikan input tersebut akan mengembalikan nilai tunggal dalam I sebagai outputnya atau nilai luar biasa overflow mungkin disertai dengan nilai lanjutan.
Tanda tangan untuk operasi atau fungsi tidak melarang operasi menerima rentang argumen yang lebih luas,
juga tidak menjamin bahwa setiap nilai dalam rentang hasil akan benar-benar dikembalikan untuk beberapa argumen.
Operasi yang diberikan argumen di luar domain argumen yang ditetapkan dapat menghasilkan hasil di luar rentang hasil yang ditentukan.
- Catatan 1 : Khususnya, nilai khusus IEC 60559 tidak ada dalam F, tetapi harus diterima sebagai argumen jika iec_60559F memiliki nilai true.
Klausa 4.2.25 – 4.2.26
4.2.25 subnormal
denormal (obsolete)
nilai tipe data floating point F, atau 0, yang nilai absolutnya benar-benar kurang dari nilai normal positif terkecil di F (fminNF)
(Lihat Fs dalam Klausul 5.2 untuk definisi lengkap.)
4.2.26 ulp
unit di tempat terakhir (untuk nilai nyata yang diberikan dan tipe data floating point yang diberikan)
untuk nilai x dalam R, yang memiliki nilai normalisasi terdekat-mendekati-ke-nol dalam F diperluas ke nilai besar yang berubah-ubah,
di mana eksponen nilai yang dinormalisasi adalah t, presisi adalah pF, dan radix adalah rF: satuannya adalah ;
untuk nilai x di R, dengan nilai subnormal terdekat-mendekati-nol di F, serta untuk 0: satuannya adalah fminDF
Nilai ini bergantung pada eksponen, radix, dan presisi yang digunakan dalam merepresentasikan bilangan dalam F. (Lihat Klausul 5.2.)
- Catatan 1: Untuk nilai yang sama persis dengan pangkat integer dari radix, ulp adalah ukuran celah antara nilai yang tersedia di sisi yang jauh dari nol.
Demikian artikel dari standarku.com mengenai Standar ISO/IEC 10967-1:2012.
Mohon saran dari pembaca untuk kelengkapan isi artikel ini, silahkan saran tersebut dapat disampaikan melalui kolom komentar.
Baca artikel lain :
- International Organization for Standardization
- Memahami apa itu Standar ISO
- ISO IEC 10967-2 fungsi numerik dasar
- ISO IEC 10514-1 Bahasa pemrograman
- ISO IEC 9995-3 pelengkap zona alfanumerik keyboard
- ISO 4902 DTE DCE interface connector
- ISO 4903 15-pole DTE/DCE interface connector
- ISO 2709 format pertukaran informasi
- ISO IEC 2022 character code structure
- ISO IEC 646 information interchange
- ISO IEC 4873 ISO 8-bit code information interchange
- ISO IEC 7498-1 Model Referensi Dasar
Sumber referensi :