Кіріспе

Арифметикалық ағындылық (сонымен қатар, қозғалатын нүктелі ағындылық немесе жай ғана ағындылық) – компьютерлік бағдарламадағы жағдай, онда есептеу нәтижесі компьютердің орталық процессорда (CPU) жадыда нақты бейнелей алатын абсолютті мәннен кіші сан болады. Арифметикалық ағындылық, егер қозғалатын нүктелік операцияның нақты нәтижесі мақсатты дерек типіндегі қалыпты қозғалатын нүктелік сан ретінде бейнеленетін ең кішкентай мәннен шамасы бойынша кішірек (яғни нөлге жақын) болса, пайда болуы мүмкін. Ағындылықты қозғалатын нүктелік мәннің көрсеткішінің теріс ағыны ретінде қарастыруға болады. Мысалы, егер көрсеткіш бөлігі -128 мен 127 арасындағы мәндерді көрсете алса, онда -128-ден кіші мәнді нәтиже ағындылыққа себеп болуы мүмкін. Бүтін сандар үшін "бүтін санның ағындылығы" термині әдетте, бүтін санның аса толуы немесе бүтін санды орап тастау жағдайының ерекше түріне сілтеме жасайды, онда азайту нәтижесі берілген бүтін сан типіне рұқсат етілген ең төменгі мәннен төмен санға әкеледі, яғни нақты нәтиже шығыс типінің теріс шексіздікке ең жақын мәнінен теріс шексіздікке жақын болды.

Төменгі ағыс аралығы

−fminN және fminN аралығы, мұндағы fminN – ең кіші оң қалыпты қозғалатын нүктелік мән, төменгі ағын аралығы деп аталады. Бұл аралықтың мөлшері, аралықтан тыс орналасқан жақын қалыпты қозғалатын нүктелік мәндер арасындағы қашықтықтан әлдеқайда үлкен болғандықтан осылай аталады. Мысалы, егер қозғалатын нүктелік дерек типі 20 битті көрсетуге мүмкіндік берсе, төменгі ағын аралығы аралықтан тыс жақын қозғалатын нүктелік мәндер арасындағы абсолютті қашықтықтан 221 есе үлкен болады. Ескі конструкцияларда төменгі ағын аралығында тек бір пайдалы мән болды – нөл. Төменгі ағын орын алғанда, нақты нәтиже нөлмен алмастырылды (не тікелей аппараттық құралдармен, не жүйелік бағдарламалық жасақтама арқылы бастапқы төменгі ағын жағдайын басқару арқылы). Бұл "нөлге дейін жуу" деп аталады. 1984 жылғы IEEE 754 нұсқасы қалыпты емес сандарды енгізді. Қалыпты емес сандар (нөлді қоса алғанда) төменгі ағын аралығын мәндермен толтырады, онда жақын мәндер арасындағы абсолютті қашықтық төменгі ағын аралығынан тыс жақын мәндер үшін бірдей болады. Бұл "біртіндеп төменгі ағынға" мүмкіндік береді, онда мүмкіндігінше жақын қалыпты мән қолданылғандай, жақын қалыпты емес мән қолданылады. Біртіндеп төменгі ағын қолданылғанда да, ең жақын мән нөл болуы мүмкін. Аралықтың сыртындағы жақын қозғалатын нүктелік мәндер арасындағы абсолютті қашықтық машинаның эпсилоны деп аталады, әдетте, 1 мәнімен қосылғанда сол қозғалатын нүкте схемасында 1 мәнін беретін ең үлкен мәнмен сипатталады. Бұл жағдайды былай жазуға болады, мұндағы – нақты мәнді қозғалатын нүктелік өрнекке түрлендіретін функция. Машинаның эпсилонын төменгі ағын деңгейімен (қалыпты емес сандарды ескергенде) шатастыруға болмайды, бірақ олар тығыз байланысты. Машинаның эпсилоны сигнификантты құрайтын биттердің санына байланысты, ал төменгі ағын деңгейі көрсеткіш өрісін құрайтын цифрлардың санына байланысты. Көптеген қозғалатын нүктелік жүйелерде төменгі ағын деңгейі машинаның эпсилонынан кіші болады.

Төменгі ағынды басқару

Төменгі ағыстың пайда болуы ("жабысқақ") күй битін орнатады, ерекшелік тудырады, аппараттық деңгейде үзіліс жасауға немесе осы әсерлердің бірнеше комбинациясына әкелуі мүмкін. IEEE 754 стандартында көрсетілгендей, төменгі ағыстың жағдайы тек қана дәлдіктің жоғалтылуы болған кезде ғана хабарланады. Әдетте, бұл соңғы нәтиже дәл емес деп анықталады. Дегенмен, егер пайдаланушы төменгі ағысты тұтқындаса, бұл дәлдіктің жоғалтылуын ескермей де болуы мүмкін. IEEE 754 стандартында төменгі ағысты (сондай-ақ басқа да ерекшеліктер) үшін әдепкі басқару – төменгі ағыстың болғанын қалқымалы нүкте күйі ретінде тіркеу. Бұл қолданбалық бағдарламалау деңгейінде көрсетілген, бірақ көбінесе аппараттық деңгейде оны қалай басқару керектігі ретінде де түсіндіріледі.