Karena ini adalah CS dan bukan Stackoverflow, saya akan berasumsi bahwa Anda mengajukan pertanyaan tentang analisis numerik, dan (untuk menjaga hal-hal sederhana) khususnya IEEE-754 floating point. Dalam hal itu, jawaban untuk pertanyaan Anda sebagian tergantung pada apa yang Anda maksud dengan "lebih mudah", dan sebagian pada detail sistem.
Tidak ada CPU modern yang saya tahu memiliki instruksi yang dibangun di mana melakukan persis apa yang Anda harapkan baik untuk operasi (yang selanjutnya akan kita sebut , nama yang biasa dalam C) atau 2 x ( ). Keduanya diimplementasikan menggunakan fungsi perpustakaan.exexp
2xexp2
Seperti halnya semua metode numerik untuk operasi transendental, ada beberapa kasus khusus yang perlu dipertimbangkan:
exp(NaN) = NaN
exp(+Inf) = +Inf
exp(-Inf) = 0
Namun, ada hal lain yang membuat masalah sedikit lebih rumit: domain yang berguna cukup kecil. Untuk binary32, exp(x)
underflow jika atau lebih, dan overflow jika x > 88,7 atau lebih. Tidak seperti biasanya untuk operasi transendental, kita juga dapat mengabaikan kasus subnormal, karena tidak dapat dibedakan dari apakah subnormal. Semua hal di atas juga berlaku untuk , kecuali bahwa domainnya sedikit berbeda.x<−104x>88.7exp(x)
1.0
x
exp2
ex=2x/ln21ln2exp2
K
exp2(x)=2n×T[j]×P(y)
nxT2j/Kj[0,K)P2x[0,1K)2nTP
f2xm1
2x−1x[−1,1]
Meskipun x87 mendukung instruksi transendental, implementasi pustaka perangkat lunak dari fungsi transendental dapat lebih cepat dalam banyak kasus.
Sunting: Sudah ditunjukkan dalam komentar bahwa saya harus menjelaskan beberapa terminologi baru yang digunakan dalam IEEE 754-2008. Beberapa bahasanya telah berubah sejak 1985 dan 1987, dan kebanyakan orang jauh lebih akrab dengan jargon lama.
Istilah "binary32" dan "binary64" adalah nama baru untuk angka floating-point biner 32-bit dan 64-bit, yang standar lama masing-masing disebut "tunggal" dan "ganda".
Istilah "nomor subnormal" menggantikan istilah "nomor dinormal" atau "nomor dinormalisasi" sebelumnya .