Número do tipo ponto flutuante com precisão estendida - Nunes, Richardson Leandro [UNESP] (Universidade Estadual Paulista (Unesp), 2008)
A execução de cálculos computaciona is é limit ada pela precisão que as linguagens de programação podem fornecer. Os compiladores possuem formatos de números com informação insuficiente para realizar cálculos que exijam grande precisão, porém, possuem ferramentas que possibilitam a criação de formatos extras. Utilizando o conceito de classe, é possíve l criar objetos computacionais e métodos. Visando solucionar problemas de precisão criou-se uma classe na qual o objeto é um número de ponto flutuante aqui chamado de Sfloat. A classe implementada em C++ é composta de um arranjo de variáveis booleanas de tamanho arbitrário para representar os bit s de um número de ponto flutuante e os métodos de classe para representar operadores aritmét icos e lógicos. Os operadores binários aritmét icos estão sobrecarregados, ou seja, os quatro operadores já existentes (“+”, “-”, “*” e “/”) podem ut ilizar números Sfloat como argumentos. Os operadores binários lógicos relacionais (<, >, <=, >=, ==, !=) seguem o mesmo modelo dos binários aritmét icos, sendo sobrecarregados para ut ilizar Sfloat como argumento. Para somar dois argumentos, soma-se dígito a dígito os dois argumentos. A subtração, na verdade, é a soma de um número posit ivo com um negat ivo, de modo que pode ser executada da mesma maneira que o operador soma, porém invertendo o sinal do segundo argumento. Na mult iplicação, somam-se as mult iplicações parciais de cada dígito de um dos fatores pelo outro fator, ou seja, a mult iplicação é executada como um somatório de mult iplicações parcia is. A divisão forma os dígitos do quociente verificando sempre qual o maior núme ro inteiro que pode mult iplicar o divisor sem ultrapassar o valor do dividendo. Sfloat foi ut ilizado para cálculos simples de soma, subtração...

Solut ion of computational problems involving float ing point numbers is limit ed by the accuracy that softwares can deliver. Most found compilers have usually float ing point kinds that are incapable to support the solut ion of numerical problems that need large accuracy on the final result or on the int ermediate comput ing steps. But such compilers are extensible allowing the development of derived data types and abstract data types and classes of high-accuracy numbers of float ing point kind. Using the c lass concept, it is possible to create computat ional objects and to implement methods (or member funct ions) owned by the object and that will act on the object data (or member variables). Aiming to solve numerical problems that happen in scient ific comput ing it was implemented a class to create float ing point numbers wit h high accuracy and range. That class was ca lled Sfloat. That class was implemented using a C++ compiler and is composed by an array of bits with variable size at compiler t ime. That extended float ing point number is based on the IEEE standard for float ing point numbers. The array bits carr y informat ion about signal (the first bit), exponent and mant issa. By varying it s array s ize it is possible to use hundreds or even thousands of bit s and so the mant issa precision can be very accurate with tens, hundreds or even thousands of decimal places, and also the exponent range can be very broad. Arithmet ic operators (+, -, *, /) can be overloaded in most compilers and also under C++ compilers. Overloading was used in this development by extending the meaning of the arithmet ic operators to allow its use also wit h Sfloat. Overloading process was also used to implement the relat ional logic operators. Nowadays, Sfloat can be used in implementat ions of most numerica l algorithms where is used arithmet... (Complete abstract click electronic access below)
Keywords: Aritmetica de computador; Aritmetica de virgula flutuante; Programação orientada a objeto (computação); Computer arithmetic