• Nenhum resultado encontrado

Suporte ao tipo intervalar em ambiente computacional

O desenvolvimento da teoria intervalar para o controle do erro numérico, buscando o máximo de exatidão, fez com que diferentes aritméticas intervalares fossem defini- das. A partir disso, a modelagem de problemas em linguagem de programação gerou a necessidade de ambientes de programação, ou suporte por meio de bibliotecas, que suportem a representação intervalar em processos que envolvam cálculos científicos em aritmética intervalar, favorecendo o controle automático de erros por meio de mé- todos autovalidáveis. Nesse contexto, alguns pacotes e ambientes intervalares são brevemente apresentados.

C-XSC: a ferramenta de programação C-XSC (C++ - eXtended Scientific Com- puting) (KLATTE et al., 2012) se trata de uma biblioteca para o desenvolvimento de algoritmos numéricos provendo alta exatidão e verificação automática de re- sultado. Contendo tipos de dados numéricos e operadores implementados em classes na linguagem C++, C-XSC suporta aplicações em linguagem C e C++. Em relação à linguagem C, o C-XSC pode ser utilizado como uma extensão da linguagem para computação científica, atendendo às demandas necessárias para uma aritmética computacional precisa. Algumas características principais do ambiente C-XSC são listadas:

- aritmética intervalar para números reais, complexos e complexos intervala- res;

- notação especial para subarrays de vetores e matrizes, tornando-os tipos dinâmicos;

- acesso direto ao arredondamento, por meio do arredondamento direcio- nado;

- controle de arredondamento durante as operações de entrada e saída de dados;

- tipos intervalares com operadores correspondentes; - tipos de dados numéricos dinâmicos e estruturados;

- funções padrão predefinidas com alta precisão para tipos de base numérica.

Em relação à avaliação de expressões com alta exatidão, o pacote C-XSC imple- menta o tipo de dados de alta exatidão (dotprecision, idotprecision, cdotprecision e cidotprecision). Nisso, valores de resultados intermediários de uma expressão de produto escalar são computadas e armazenadas em uma variável de tipo dot- precision sem nenhum erro de arredondamento. Uma simples expressão pode ser qualquer variável, constante ou produto destes objetos. C-XSC é também uma biblioteca de código aberto que possui boa portabilidade para ambientes computacionais que possuam um compilador C++.

JAVA-XSC: a biblioteca com suporte a computação de alta exatidão Java-XSC (DUTRA, 2000) foi desenvolvida para trabalhar com operações intervalares na linguagem Java. Java-XSC faz um agrupamento de acordo com a natureza das operações: operações básicas, funções entre conjuntos, funções geométricas, funções elementares, funções trigonométricas, funções de transferência e cons- tantes. Uma vantagem no ambiente ser desenvolvido em Java está na sua por- tabilidade uma vez que o sistema é híbrido, ou seja, compilado e interpretado, além de que independe de arquitetura. Os itens abaixo caracterizam o ambiente com detalhes mais específicos:

- tipagem forte e alta exatidão;

- vasta lista de operadores aritméticos;

- alocação dinâmica de memória, o que otimiza a eficiência dos algoritmos desenvolvidos;

- intervalos representados pelo tipo double, o que garante maior precisão; - garbage collector, desalocando áreas de memória não utilizadas.

No que se refere ao modo de arredondamento, a linguagem Java não provê suporte ao arredondamento direcionado, característico das definições da aritmé- tica intervalar convencional. Nesse caso, a biblioteca possui uma deficiência que pode afetar a extatidão do resultado intervalar. Contudo, uma das soluções está na biblioteca JFloat, por exemplo, a qual contempla o arredondamento direcio- nado.

IntPy: o pacote intervalar IntPy (VARJãO, 2011) implementa a classe IR (Inter- valo Real) onde todas as operações aritméticas, relações de ordem e funções auxiliares são implementadas. Duas características em relação a quantidades numéricas no tratamento do erro são: o arredondamento direcionado implemen- tado de forma nativa, por meio do chaveamento dos modos de arredondamento do processador, e; possibilidade de entrada de strings para representar números racionais (1/3 ao invés de 0.3333), impedindo o truncamento prematuro do valor de entrada. O pacote é implementado na linguagem Python e disponibilizado como software livre open source sobre licença GPL (General Public License). No que se refere ao arredondamento direcionado, devido à impossibilidade de acesso de baixo nível aos modos de arredondamento do processador pela lin- guagem Python, o pacote IntPy utiliza uma extensão, na linguagem C, para reali- zar essa operação, chamada “roundingmodule.c” (BARRETO; CAMPOS, 2008).

INTLAB: o IntLab (RUMP, 1999b) - Interval Laboratory - é um pacote desenvol- vido para Matlab que suporta intervalos de números reais e intervalos comple- xos, vetores e matrizes. Além das operações básicas, gradientes, inclinações e múltiplas aritméticas de precisão estão incluídas. A portabilidade é assegurada pelo fato de todos os algoritmos serem implementados no próprio Matlab, com exceção do arredondamento.

Algumas características mais pontuais podem ser citadas:

- métodos de autovalidação para sistemas lineares densos, sistemas lineares esparsos, rotinas globais, raízes de equações, zeros polinomiais, etc; - implementa a aritmética Affine, incluindo vetores e matrizes;

- aritmética intervalar para dados reais e complexos, incluindo vetores e ma- trizes;

- funções intervalares complexas;

- aritmética intervalar de precisão múltipla com limite de erro;

- verificação de resultado rigorosa para operações, entradas e saídas; entre outros.

O objetivo principal para o IntLab é produzir resultados confiáveis, cobrindo erros de arredondamento e outros tipos de erros. Além disso, o IntLab utiliza ampla- mente rotinas BLAS (Basic Linear Algebra Subroutines), garantindo tempos de computação mais rápidos quando comparados à computações em aritmética de ponto flutuante, priorizando a velocidade de execução. Atualmente, o IntLab é software proprietário, assim como o Matlab.

Além destes, outros pacotes destinados ao trabalho científico com dados intervala- res podem ser encontrados, por exemplo: PyInterval (GRIGOLETTI; DIMURO; BAR- BOZA, 2007), Maple Intervalar (CAMPOS et al., 2002), INTLIB (KEARFOTT et al., 1994), Fortran-XSC (WALTER, 1993) e alguns outros. É importante salientar que para todos os pacotes e ambientes apresentados e citados, a aritmética implementada é a de Moore, SIA. Na literatura é possível encontrar referências de pacotes desenvolvidos para outras aritméticas, porém estes são obsoletos ou foram descontinuados, como por exemplo, uma implementação de POPOVA (1994) para a aritmética de Kaucher na linguagem Pascal.

Documentos relacionados