UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
U NIVERSIDADE F EDERAL DO R IO G RANDE DO N ORTE
D EPARTAMENTO DE I NFORMÁTICA E M ATEMÁTICA A PLICADA
P ROGRAMA DE P ÓS -G RADUAÇÃO EM S ISTEMAS E C OMPUTAÇÃO
JAVA-XSC: Módulo Complexo Intervalar
Marciano Lourenço da Silva Gonçalves
Orientador: Prof. Dr. Regivan Hugo Nunes Santiago
Dissertação de Mestrado apresentada ao
Programa de Pós-Graduação em Sistemas e
Computação da UFRN (área de concentração: Teoria da Computação) como parte dos
requisitos para obtenção do título de Mestre
em Sistemas e Computação.
Natal, RN, fevereiro de 2012
Divisão de Serviços Técnicos
Catalogação da publicação na fonte. UFRN / Biblioteca Central Zila Mamede
Pereira, Fulano dos Anzóis.
Sobre a Preparação de Propostas de Tema, Dissertações e Teses no Programa
de Pós-Graduação em Engenharia Elétrica da UFRN / Fulano dos Anzóis Pereira
- Natal, RN, 2006
23 p.
Orientador: Sicrano Matosinho de Melo
Co-orientador: Beltrano Catandura do Amaral
Tese (doutorado) - Universidade Federal do Rio Grande do Norte. Centro de
Tecnologia. Programa de Pós-Graduação em Engenharia Elétrica.
1. Redação técnica - Tese. 2. LATEX- Tese. I. Melo, Sicrano Matosinho de. II.
Amaral, Beltrano Catandura do. III. Título.
RN/UF/BCZM
CDU 004.932(043.2)
Java-XSC: Módulos Complexo e Complexo
Intervalar
Marciano Lourenço da Silva Gonçalves
Dissertação de Mestrado aprovada em 15 de fevereiro de 2012 pela banca examinadora
composta pelos seguintes membros:
Prof. Dr. Regivan Hugo Nunes Santiago (orientador) . . . . . . . . . DIMAp/UFRN
Prof. Dr. Benjamin Rene Callejas Bedregal . . . . . . . . . . . . . . . . . . DIMAp/UFFN
Prof. Dr. Gibeon Soares de Aquinho Júnior . . . . . . . . . . . . . . . . . . DIMAp/UFRN
Este trabalho é dedicado aos meus
pais pela confiança que depositaram
em mim e por seu imenso carinho.
Agradecimentos
Ao meu orientador, professor Regivan Hugo Nunes Santiago, sou grato por suas observações, empenho e dedicação com que me orientou, tornando possível a realização desta
dissertação.
Aos colegas Regina Parente Rosa, pelo apoio nos momentos difíceis. Emannuely Monteiro e Fabrício Costa pelas intermináveis horas estudando lógica.
Aos demais colegas de pós-graduação, pelas críticas e sugestões.
Aos amigos Reginaldo Aquino, Joafran Paiva e Leonardo Mozer, pelos momentos de
descontração que me mantiveram são diante de tanto estudo.
À minha família pelo apoio durante esta jornada.
À CAPES, pelo apoio financeiro.
Resumo
Este trabalho tem por finalidade desenvolver módulos que venham aumentar o poder computacional da biblioteca JAVA-XSC, sendo XSC1 um acrônimo para “Language
Extensions for Scientific Computation”. Essa biblioteca é na verdade uma extensão da linguagem de programação JAVA que possui rotinas elementares e funções padrão úteis da
matemática intervalar. Neste trabalho foram acrescentados dois módulos à biblioteca; a
saber: o módulo dos números complexos e o módulo dos números complexos intervalares
que em conjunto com os módulos originais visam possibilitar que aplicações numéricas,
como por exemplo na área da engenharia, possam ser usadas em dispositivos que executam programas JAVA.
Palavras-chave: JAVA, JAVA-XSC, Matemática Intervalar, Números Complexos,
Números Complexos Intervalares.
1 http://www.xsc.de/
Abstract
This work aims to develop modules that will increase the computational power of the
Java-XSC library, and XSC an acronym for "Language Extensions for Scientific Computation”. This library is actually an extension of the Java programming language that
has standard functions and routines elementary mathematics useful interval. in this study
two modules were added to the library, namely, the modulus of complex numbers and
complex numbers of module interval which together with the modules original numerical
applications that are designed to allow, for example in the engineering field, can be used
in devices running Java programs.
Keywords: JAVA, JAVA-XSC, Interval Mathematics, Complex Numbers, Complex
Numbers Interval.
Sumário
Sumário
i
Lista de Figuras
iv
Lista de Tabelas
v
1
Introdução
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
3
4
4
2
Números complexos
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Os Números Complexos . . . . . . . . . . . . . . . . . . . .
2.2.1 Representação Algébrica . . . . . . . . . . . . . . . .
2.2.2 Representação Polar . . . . . . . . . . . . . . . . . .
2.2.3 Funções Complexas Elementares . . . . . . . . . . .
2.3 Números complexos intervalares . . . . . . . . . . . . . . . .
2.3.1 Aritmética Intervalar Real . . . . . . . . . . . . . . .
2.3.2 Aritmética Complexa Intervalar Retangular . . . . . .
2.3.3 Aritmética Complexa Intervalar Circular . . . . . . .
2.3.4 Aritmética Complexa Intervalar Usando a Forma Polar
2.3.5 Funções Complexas Intervalares Elementares . . . . .
2.4 Considerações . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Algumas ferramentas para cálculo numérico
3.1 Introdução . . . . . . . . . . . . . . . . .
3.2 CLN (Class Library for Numbers) . . . .
3.2.1 Tipos Numéricos . . . . . . . . .
3.2.2 Números Exatos . . . . . . . . .
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
8
9
11
14
16
16
18
19
20
22
24
.
.
.
.
26
26
26
27
27
3.2.3 Números de Ponto-Flutuante . . . . . . . .
3.2.4 Números Complexos . . . . . . . . . . . .
3.2.5 Funções de Arredondamento . . . . . . . .
3.3 GNU MP (GMP) . . . . . . . . . . . . . . . . . .
3.3.1 Números Racionais . . . . . . . . . . . . .
3.3.2 Ponto-Flutuante . . . . . . . . . . . . . . .
3.4 MPFR (Multiple Precision Floating-Point Reliable)
3.4.1 Modos de Arredondamento . . . . . . . . .
3.4.2 Ponto-Flutuante . . . . . . . . . . . . . . .
3.5 MPFI (Multiple Precision Floating-Point Interval)
3.5.1 Modos de Arredondamento . . . . . . . . .
3.6 MPC (Multiple Precision Complex) . . . . . . . .
3.6.1 Modos de Arredondamento . . . . . . . . .
3.6.2 Funções Complexas . . . . . . . . . . . .
3.7 INTLIB . . . . . . . . . . . . . . . . . . . . . . .
3.7.1 Simulação de Arredondamento Direcionado
3.8 COMMONS MATH . . . . . . . . . . . . . . . .
3.8.1 Organização . . . . . . . . . . . . . . . .
3.8.2 Números Complexos . . . . . . . . . . . .
3.9 Linguagens XSC . . . . . . . . . . . . . . . . . .
3.9.1 PASCAL-XSC . . . . . . . . . . . . . . .
3.9.2 C-XSC . . . . . . . . . . . . . . . . . . .
3.10 JAVA-XSC . . . . . . . . . . . . . . . . . . . . .
3.10.1 A Linguagem de Programação JAVA . . . .
3.10.2 Desenvolvimento da Biblioteca . . . . . .
3.10.3 Pacote IAMath . . . . . . . . . . . . . . .
3.10.4 Modo de Arredondamento . . . . . . . . .
3.11 Resumo Comparativo . . . . . . . . . . . . . . . .
3.12 Considerações . . . . . . . . . . . . . . . . . . . .
4
Módulos Complexo e Complexo Intervalar
4.1 Objetivos . . . . . . . . . . . . . . . .
4.2 Os Módulos . . . . . . . . . . . . . . .
4.2.1 Módulo Complexo . . . . . . .
4.2.2 Módulo Complexo Intervalar . .
4.3 Comparação entre C-XSC e JAVA-XSC
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
29
30
30
31
32
33
33
34
35
36
36
36
37
37
40
40
41
42
47
48
52
58
58
59
60
61
62
64
.
.
.
.
.
65
65
66
66
69
72
4.4
5
Considerações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conclusão
74
75
Referências bibliográficas
77
A Modos de Arredondamento
A.1 Tipos de Arredondamento . . . . . . . . . . . . . .
A.2 Arredondamento com o Incremento Pré-Determinado
A.3 Arredondamento para Inteiro . . . . . . . . . . . . .
A.4 Regras de Desempate . . . . . . . . . . . . . . . . .
A.5 Arredondamento Escalado . . . . . . . . . . . . . .
A.6 Arredondamento em Ponto-Flutuante . . . . . . . . .
81
81
82
82
83
85
86
B Código Fonte da biblioteca JAVA-XSC
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
87
C Código Fonte da Classe Complex
111
D Código Fonte da Classe Cinterval
125
E Complexos Intervalares Utilizados no Teste T
193
Lista de Figuras
2.1
2.2
Interpretação geométrica dos números complexos . . . . . . . . . . . . .
Forma algébrica e polar do complexo c = 5 + i3 . . . . . . . . . . . . . .
12
13
3.1
3.2
3.3
3.4
Hierarquia dos tipos numéricos em CLN . .
Tamanho de uma variável do tipo dotprecision
Formato de um ponto-flutuante . . . . . . . .
Complexo Intervalar [3.0,4.5] + i[1.0,2.0] . .
.
.
.
.
28
51
54
56
4.1
Interface gráfica da ferramenta GraphPad . . . . . . . . . . . . . . . . .
73
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lista de Tabelas
3.1
3.2
3.3
3.4
3.5
3.6
3.7
Módulos do INTLIB: Aritmética elementar para intervalos
Módulos do INTLIB: Funções padrões para intervalos . . .
Módulos do INTLIB: Funções úteis . . . . . . . . . . . .
Métodos da classe Complex . . . . . . . . . . . . . . . . .
Métodos da classe ComplexFormat . . . . . . . . . . . . .
Modos de Arredondamento . . . . . . . . . . . . . . . .
Resumo comparativo entre as ferramentas . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
38
39
42
46
63
63
4.1
4.2
Métodos da classe Complex . . . . . . . . . . . . . . . . . . . . . . . .
Métodos da classe Cinterval . . . . . . . . . . . . . . . . . . . . . . . .
67
70
E.1 Complexos Intervalares Utilizados no Teste T . . . . . . . . . . . . . . . 193
v
Capítulo 1
Introdução
No surgimento dos primeiros computadores, e por alguns anos mais, o principal objetivo dos pesquisadores era obter ganhos de tempo com ferramentas que automatizassem
os cálculos matemáticos e que tais cálculos retornassem uma resposta o mais rápido possível. Na medida em que surgem novas tecnologias e as antigas vão sendo aperfeiçoadas,
chegou-se um ponto em que a velocidade do processamento das informações deixou de
ser uma preocupação. A preocupação agora é representar essas informações de forma
cada vez mais precisa.
Além disso, segundo [Santiago et al. 2006], um dos principais problemas encontrados
na computação numérica eram os erros de arredondamento. Observe este exemplo de
Rump [Muller et al. 2009] que calcula
y = 333.75b6 + a2 (11a2 b2 − b6 − 121b4 − 2) + 5.5b8 + a/(2b)
Para a = 77617.0 e b = 33096.0.
Esta função foi computada por Rump em um IBM S/370 e ele usou três tipos de
precisão: simples (com resultado y = 1.172603...), dupla (y = 1.1726039400531...) e estendida (y = 1.172603940053178...). Apesar de aparentemente o resultado estar correto,
ele está errado. O resultado correto encontra-se no intervalo −0.82739605994682135 ±
5 × 10−17 , pode-se observar que inclusive o sinal está errado. Este exemplo foi revisado
e computado em outras máquinas, mas o resultado permanecia errado.
Uma das propostas desenvolvidas para controlar os erros computacionais foi a matemática intervalar. Em 1966, Moore propôs uma aritmética intervalar que possibilitou um
grande avanço nas pesquisas sobre o controle de erros computacionais. Esta aritmética
tem por objetivos solucionar problemas que se concentram fundamentalmente em dois
CAPÍTULO 1. INTRODUÇÃO
2
aspectos: na criação de um modelo computacional que reflita sobre o controle e análise
dos erros que ocorrem no processo computacional, e na escolha de técnicas de programação adequadas para desenvolvimento de softwares científicos buscando minimizar os
erros nos resultados [Moore 1966].
A necessidade de ferramentas que dessem suporte a essa aritmética fez com que surgissem algumas bibliotecas e também as linguagens com extensões científicas, conhecidas
como XSC (Language Extensions Scientific Computation). Essas ferramentas favorecem
o controle automático de erros através de métodos que se encarregam de verificar e garantir a exatidão dos cálculos efetuados [Garrozi & Albuquerque 2009].
Algumas bibliotecas como a MPFI e INTLIB (Capítulo 3), apresentam módulos específicos para o uso da aritmética intervalar. Nestes módulos foram desenvolvidos tanto
operações elementares; como: adição, subtração, divisão e multiplicação, quanto funções
mais elaboradas, tais como funções trigonométricas.
As linguagens XSC permitem que desenvolvedores de softwares numéricos possam
criar seus aplicativos através de uma linguagem bastante rica que tem como características
fundamentais: controle de arredondamento, tipos de dados com exatidão após a vírgula,
bibliotecas com as principais rotinas matemáticas, arrays dinâmicos, a utilização dos tipos complexo e intervalo, entre diversas outras [Dutra 2000]. Ao longo do tempo várias
linguagens XSC foram sendo desenvolvidas a partir de algumas linguagens de programação, é o caso da PASCAL-XSC e C-XSC, que serão apresentadas no Capítulo 3.
JAVA-XSC foi desenvolvida no Departamento de Informática e Matemática Aplicada
da Universidade Federal do Rio Grande do Norte e dá suporte a intervalos de extremos reais à linguagem JAVA. Ela é composta por seis módulos: operações básicas, funções entre
conjuntos, funções geométricas, funções elementares, funções trigonométricas e funções
de conversão entre tipos e definição de constantes. Apesar de estar em um nível avançado, JAVA-XSC ainda não está completa. Uma das necessidades atuais da linguagem é
um módulo que possa trabalhar tanto com números complexos quanto com uma aritmética intervalar complexa.
Os números complexos são na verdade uma extensão dos números reais. Eles sugiram
da necessidade de se obter soluções em raízes quadradas negativas, pois os matemáticos
representavam os números reais como pontos em uma reta, onde cada ponto corresponde
CAPÍTULO 1. INTRODUÇÃO
3
um único número real. Com isso surgiu um grande problema, já que raízes quadradas de
números negativos não podem ser representados nesta reta.
O matemático alemão Karl Friedrich Gauss propôs uma associação entre números
imaginários e pontos sobre uma reta perpendicular à reta real, passando pelo ponto zero,
e assim surgiu um sistema de coordenadas cartesianas, onde os números reais são postos
sobre o eixo horizontal (eixo real) e os números imaginários sobre a reta perpendicular
√ √
√
(eixo imaginário). Sendo assim, podemos representar −a como sendo −1 a onde
√
a parte imaginária seria exatamente −1 e são colocados no eixo imaginário como seus
múltiplos. Desta forma surgiram os números complexos, onde não só os imaginários são
representados, mas as possíveis combinações entre reais e imaginários [Menochi 2004].
Com a ajuda da matemática intervalar, é possível representar os números complexos
de uma forma mais precisa. Isto associado à uma ferramenta numérica, poderá facilitar a
criação de novos aplicativos científicos. E esta é a proposta deste trabalho, o desenvolvimento de um módulo complexo intervalar para a biblioteca JAVA-XSC.
1.1
Motivação
Neste trabalho foi tido como motivação a escassez de ferramentas de cálculo numérico desenvolvido para a linguagem de programação JAVA, principalmente em se tratando
de uma ferramenta que dê suporte a complexos intervalares. Existem algumas ferramentas como MPFI (Multiple Precision Floating-Point Interval) e MPC (Multiple Precision
Complex), que trabalham respectivamente com intervalos e números complexos, mas ambas foram desenvolvidas para serem usadas com o compilador C ou C++ e a ferramenta
Commons Math que é específica para JAVA, mas não apresenta funções que trabalhem
com complexos em sua forma polar.
A linguagem C-XSC possui módulos específicos para trabalhar com complexos intervalares, como os tipos complexo (complex), intervalo (interval) e complexo intervalar
(cinterval), mas como o próprio nome sugere, ela também foi desenvolvida para ser usada
com C e C++.
JAVA-XSC é uma biblioteca desenvolvida especificamente para a linguagem Java que
provê a utilização de cálculos numéricos com controle dos erros. Segundo [Dutra 2000],
para JAVA-XSC, existe a necessidade de serem elaborados módulos que venham a traba-
CAPÍTULO 1. INTRODUÇÃO
4
lhar com matrizes, vetores intervalares e aritmética intervalar complexa.
Por estas deficiências, tem-se por motivação a criação de dois módulos em JAVA-XSC
que venham a trabalhar com números complexos e números complexos intervalares, que
no caso corresponderiam aos tipos complex e cinterval da C-XSC. Estes módulos serão
compostos por rotinas de aritmética elementares, além de funções padrões e outras funções úteis.
1.2
Objetivo
Este trabalho tem como pretensão, através do desenvolvimento destes módulos, dar
continuidade ao trabalho que já vem sendo desenvolvido pelo Departamento de Informática e Matemática Aplicada da Universidade Federal do Rio Grande do Norte desde 2000,
à JAVA-XSC. Esta ferramenta é uma extensão de suporte à computação de alta exatidão
para a linguagem de programação JAVA [da Silva 2007]. Nesta nova versão da ferramenta
é dado um módulo específico que provê meios para trabalhar com números complexos intervalares.
Sendo assim, o objetivo principal deste trabalho está na construção de módulos para
JAVA-XSC que irá aumentar, o já enorme, espectro de aplicação da linguagem JAVA,
possibilitando que instrumentos como tablets e smartphones possam conter aplicações de
engenharia baseados na aritmética retangular complexa.
1.3
Organização
A presente dissertação se desenvolve em 5 Capítulos, organizados conforme descrito
a seguir.
No Capítulo 2 é apresentada uma breve introdução aos números complexos e números
complexos intervalares, com seus históricos, conceitos, operações e funções básicas.
No Capítulo 3 são apresentadas algumas ferramentas que dão suporte ao cálculo numérico. Neste capítulo serão descritas as características, funções e operações de algumas
linguagens XSC, como PASCAL-XSC e C-XSC, que são linguagens apropriadas para
CAPÍTULO 1. INTRODUÇÃO
5
computação científica, além da biblioteca JAVA-XSC.
No Capítulo 4 mostram-se o desenvolvimento dos módulos complexo e complexo intervalar para a ferramenta JAVA-XSC.
No Capítulo 5 são apresentados as considerações finais.
Além disso o trabalho apresenta anexos contendo todos os códigos fontes utilizados
no desenvolvimento dos módulos, além de um anexo específico sobre modos de arredondamento.
Capítulo 2
Números complexos
2.1
Introdução
De acordo com [Cerri & Monteir 2001], na primeira metade do século XVII os matemáticos franceses Pierre de Fermat e René Descartes construíram a Geometria Analítica.
Com o domínio dessa nova linguagem da geometria, Descartes estudou, entre outras coisas, as equações algébricas. Descartes mencionou em seu texto Discurso do Método a
seguinte afirmação: “Nem sempre as raízes verdadeiras ou falsas de uma equação são
√
reais. Às vezes elas são imaginárias”. Com isto, até hoje o número −1 é chamado de
número imaginário.
Alguns personagens contribuíram no desenvolvimento da teoria dos números complexos, mas quem fez o trabalho mais importante e decisivo sobre o assunto foi Leonhar
Euler. Muitas das notações que conhecemos hoje foram introduzidas por ele, inclusive a
√
substituição de −1 por i.
Euler passou a estudar números da forma z = a + bi onde a e b são números reais e
= -1. Esses números são chamados de números complexos. Segundo [Ezequias 1998],
diversas aplicações foram surgindo através do conceito de tais números.
i2
A partir dos números complexos os matemáticos tiveram a possibilidade de criar novas álgebras. Gauss, em 1801, estendeu os inteiros (números da forma a + bi em que
a e b são inteiros e i2 = -1) na sua álgebra das congruências (aritmética modular). Em
1843, Hamilton introduziu uma multiplicação de vetores no espaço de quatro dimensões,
construindo a álgebra, não comutativa, dos Quatérnions. O grupo dos quatérnions foi
importante no desenvolvimento da álgebra abstrata e na construção da Física moderna
[Boyer 1974], [Baumgart 1969] e [Felzenszwalb 1979].
CAPÍTULO 2. NÚMEROS COMPLEXOS
7
Na aerodinâmica, os complexos também tiveram sua utilidade. Em 1906, Joukowski
utilizando transformações geométricas, construiu uma curva fechada no plano complexo
que representa o perfil de uma asa de avião (aerofólio de Joukowski) e, usando o princípio de Bernoulli e a teoria das funções complexas, deduziu a fórmula F = x + yi =
−ieiα (VkLp), que permite calcular a força de levantamento responsável pela sustentação
do voo de um avião.
Na eletrônica e na eletricidade, a análise de circuitos de corrente alternada é feita com
a ajuda de números complexos. Grandezas como a impedância (em ohms) e a potência
aparente (em volt-ampere) são exemplos de quantidades complexas.
Os algoritmos recursivos no plano complexo criaram na maioria das vezes figuras
invariantes por escala denominadas fractais. Estas formas geométricas de dimensão fracionária servem como ferramenta para: descrever as formas irregulares da superfície da
terra; modelar fenômenos, aparentemente imprevisíveis ( teoria do caos ), de natureza
meteorológica, astronômica, econômica, biológica, entre outras.
Antes de iniciar a definição completa sobre números complexos é necessário fazer
uma breve explanação da evolução do conceito de número.
Os números no qual têm-se contato pela primeira vez são os chamados números naturais. Eles são representados pela letra N, como no formato abaixo:
N = {0,1,2,...,n,...}
No intuito de expandir este conjunto de números,para admitir que a subtração de dois
números naturais seja possivel, surgiram os números inteiros que são representados pela
letra Z:
Z = {..., -n, ..., -2, -1, 0, 1, 2, ..., n,...}
Motivado pela imperfeição [da Justa Medeiros 1972], pois a divisão não é bem definida em Z, ou seja, dados dois inteiros, a e b (b 6= 0), nem sempre é possível encontrar
o quociente de a por b em Z. Para incluir a divisão de dois números naturais quaisquer,
faz-se necessário a criação dos números racionais, representados por Q.
CAPÍTULO 2. NÚMEROS COMPLEXOS
8
Mas em Q ainda existem certas imperfeições, como por exemplo, a solução da equação x2 = 3 não pode ser encontrada em Q. Desta maneira para construir um conjunto
mais amplo que permitisse uma solução a este tipo de equação, surgiram os números reais, representado por R. Desta forma pode-se dizer que os números naturais seriam um
subconjunto dos números inteiros, que por consequente seria um subconjunto dos racionais e este um subconjunto dos reais.
Mas este sistema já mencionado ainda não é suficiente, pois não permite encontrar
a solução para a equação x2 + 4 = 0. Neste caso não é possível encontrar uma solução
dentro dos conjuntos citados. É aí que entra a definição de números complexos.
2.2
Os Números Complexos
As definições contidas neste capítulo estão mencionadas em [Dias & Dantas 2006],
[Santos 2001], [Lohner et al. 1985],[Alefeld & Herberger 1983], [Petkovic & Petkovic
1998], [Candu et al. 2006] e [Blomquist et al. 2005a].
Seja R o conjunto dos números reais e o produto cartesiano
R2 ={(a,b) | a ∈ R e b ∈ R}
Ou seja, R2 é o conjunto dos pares ordenados (a,b) em que a e b são números reais.
O conjunto dos números complexos consiste no conjunto de todos os pares ordenados
de números reais (a, b) ∈ R2 , juntamente com as regras pelas quais estes serão igualados,
adicionados, multiplicados e assim por diante. Este conjunto é representado pela letra C.
Para exemplificar serão levados em consideração os dois pares ordenados (a,b) e (c, d) de
R2 , como segue abaixo:
1. Igualdade: dois pares ordenados são iguais se, e somente se, seus primeiros e
últimos termos forem iguais.
(a, b) = (c, d) <=> a = c e b = d
2. Adição: para obter um novo par ordenado a partir da soma dos dois primeiros, é
necessário fazer a soma dos primeiros e últimos termos dos pares fornecidos.
(a, b) + (c, d) = (a + c, b + d)
CAPÍTULO 2. NÚMEROS COMPLEXOS
9
3. Multiplicação: para obter o primeiro elemento do novo par ordenado é necessário
fazer a diferença entre o produto dos primeiros termos e o produto dos últimos
termos fornecidos e para obter o segundo elemento é preciso somar os produtos do
primeiro termo de cada par pelo segundo termo do outro.
(a, b) · (c, d) = (ac − bd, ad + bc)
4. Subtração: pode-se subtrair dois pares ordenados fazendo as diferença entre primeiros e últimos termos.
(a, b) − (c, d) = (a − c, b − d)
5. Divisão: obtêm-se um novo par ordenado a partir de uma operação de divisão fazendo uma multiplicação entre dois pares ordenados. Sendo que o primeiro par
desta multiplicação é o primeiro par fornecido, o primeiro termo do segundo par
é composto pela divisão do primeiro termo do segundo par informado pela soma
dos quadrados destes termos e o segundo termo do novo par é composto pela diferença da divisão entre o segundo termo do segundo par informado pela soma dos
quadrados destes termos. a
b
ca + db da − cb
(c, d)
= (c, d) 2
,−
=
,
(a, b)
a + b2 a2 + b2
a2 + b2 a2 + b2
Exemplos:
1 - Adição (2,5) + (3,7) = (2 + 3, 5 + 7)=(5,12)
2 - Multiplicação (1,2).(3,5) = (1.3 - 2.5, 1.5 + 2.3)=(-7, 11)
3 - Subtração (4,6) - (3,1) = (4 - 3,6 - 1)=(1,5)
3
4
11 2
4
3
(1, 2)
= (1, 2) · 2
,−
= (1, 2) ·
,−
=
,
4 - Divisão
(3, 4)
3 + 42 32 + 42
25 25
25 25
Dessa forma, o conjunto dos números complexos podem ser vistos como uma estrutura algébrica da forma R =< R2 , +, −, ·, / >.
Apesar de um número complexo ser um par ordenado (r, g) ∈ R2 , pode-se representálos ainda de duas formas distintas, chamadas: forma algébrica e forma polar.
2.2.1
Representação Algébrica
Um número complexo c = (a, b) pode ser representado como c = a + ib, com a e
b ∈ R, onde a é chamada parte real e b parte imaginária. Essa representação chama-se
CAPÍTULO 2. NÚMEROS COMPLEXOS
10
representação algébrica.
O segundo componente de um complexo c = (a, b) chama-se parte imaginária. Observe que c = (a, b) pode ser representado como c = a(1, 0) + b(0, 1). (0,1) chama-se
unidade imaginária e é representado pela letra i. A representação algébrica c = a + ib na
verdade expressa a combinação linear c = a(1, 0) + b(0, 1).
Um complexo c é dito um número real se, somente se, sua parte imaginária for igual
a zero, é dito imaginário puro quando sua parte real é igual a zero e é chamado de nulo
quando ambas as partes são iguais a zero.
Sendo assim, observe que i2 = (0, 1).(0, 1) = (0.0 − 1.1, 0.1 + 1.0) = (−1, 0), que
corresponde ao número real -1. Portanto, é possível escrever
i2 = −1
√
Logo, −1 = i.
Uma noção importante que ajuda a operacionalidade dos números complexos é a de
conjugado. Chamamos conjugado de um complexo c = a + ib, o complexo c = a − ib.
Dessa maneira, a forma algébrica z = a + ib torna-se muito mais operacional que a de
par ordenado (a, b) como representação de números complexos. A seguir serão novamente apresentadas as definições de igualdade, adição e multiplicação de complexos,
agora usando a representação algébrica.
1. Igualdade: Dois números complexos são iguais se tanto suas partes reais quanto
suas partes imaginárias são iguais.
a + ib = c + id <=> a = c e b = d
2. Adição: Obtêm-se um novo complexo a partir de uma adição realizando uma soma
onde sua parte real é composta pela soma das partes reais das parcelas e sua parte
imaginária é formada pela soma das partes imaginárias da parcela.
(a + ib) + (c + id) = (a + c) + (b + d)i
3. Multiplicação: Um novo complexo obtido a partir de uma multiplicação é o resultado do desenvolvimento de (a + ib)(c + id), encarando ib e id como se fossem
números reais, aplicando a propriedade distributiva e levando em consideração que
i2 = −1. Tem-se o seguinte:
(a + ib)(c + id) = a(c + id) + ib(c + id) = ac + iad + ibc + ibd 2 =
(ac − bd) + i(ad + bc).
CAPÍTULO 2. NÚMEROS COMPLEXOS
11
4. Divisão: A divisão agora é bem mais simples de ser obtida. Basta multiplicar o
numerador, c1 = c + id e denominador pelo conjugado do denominador c2 = a + ib,
com c2 6= 0 + 0i.
c + id(a − ib)
ca + db da − cb
c1
=
= 2
+
i
c2 (a + ib)(a − ib)
a + b2 a2 + b2
Exemplos:
1 - Adição: (5 + i3) + (3 + i4) = (8 + i7)
2 - Conjugado: c = 6 + i9 → c = 6 − i9
3 - Multiplicação: (2 + i3).(5 + i4) = 2(5 + i4) + i3(5 + i4) = 10 + i8 + i15 + i2 12 =
10 + i8 + i15 − 12 = −2 + i23
4 - Divisão:
2.2.2
(3 + i)(4 − i2)
14 − i2
(3 + i)
=
=
(4 + i2) (4 + i2)(4 − i2) 12 + i16
Representação Polar
É possível associar um ponto P = (a, b) no plano cartesiano ao número complexo
c = a + ib, onde pode-se representar a parte real por um ponto no eixo real e a parte
imaginária por um ponto no eixo imaginário. A Figura 2.1 representa a interpretação
geométrica de um número complexo.
Figura 2.1: Interpretação geométrica dos números complexos
√
Pode-se perceber que a distância entre P e O é o módulo de c, ou seja, OP = a2 + b2 =
|c|, e o ângulo composto por OP com o eixo real é θ, logo θ é o argumento principal de c.
Isso dá origem as seguintes definições:
CAPÍTULO 2. NÚMEROS COMPLEXOS
12
1. Norma: A norma de um número complexo c = a + ib é definida por N(c) = a2 + b2 ;
2. Módulo ou valor absoluto: O módulo de um número complexo é representado pela
√
p
raiz quadrada da sua norma; ou seja: |c| = N(c) = a2 + b2 . Geralmente usa-se
a letra grega ρ para representar |c|;
3. Argumento: O argumento de um número complexo c = a + ib, denotado por arg(c)
é o ângulo θ, medido em radianos, 0 ≤ θ ≤ 2π, formado pelo vetor com o eixo real,
b
a
e senθ = .
tal que, cos θ =
|c|
|c|
A forma polar de um número complexo c = a + ib é o par (ρ, θ) associado a C.
A Figura 2.2 apresenta a representação polar do número complexo c = 5 + i3 no plano
de Argand-Gauss.
Figura 2.2: Forma algébrica e polar do complexo c = 5 + i3
A representação polar de um número complexo pode ser convertida para a representação algébrica e vice-versa, como é determinado a seguir através dos exemplos:
1. Transformação do número complexo algébrico c = 2 + i2 na forma polar:
CAPÍTULO 2. NÚMEROS COMPLEXOS
13
√
√
√
√
22 + 22 = 4 + 4 = 8 = 2 2.
2
1
1
cos θ = √ = √ . Portanto θ = arcsin cos θ = arcsin √ = 45.
2 2
2
2
√
Logo a representação polar para c = 2 + i2 é o par (2 2, 45) = (2.828417, 45).
|c| =
2. Transformação do número complexo polar (4.47, 26.57o ) na forma algébrica:
a
a
= cos 26, 57o =
. Portanto a ∼
= 4.
|c|
4, 47
b
b
sin θ =
= sin 26, 57o =
Portanto b ∼
= 2.
|c|
4, 47
cos θ =
Logo a representação algébrica do número complexo polar (4.47, 26.57o ) é 4 + i2.
2.2.3
Funções Complexas Elementares
Além da aritmética complexa, existem operações sobre C que são elementares. Nesta
seção expomos algumas funções sobre C:
Função multiplicação por complexo na forma polar
Seja A = r0 (cosθ0 + isenθ0 ) e z = r(cosθ + isenθ), então Az = rr0 [cos(θ + θ0 ) +
sen(θ + θ0 ))], ou seja, o cumprimento de z é multiplicado pelo cumprimento de A e seu
ângulo θ é modificado para θ + θ0 .
Função quadrática
Sendo z = r(cosθ + isenθ), então z2 = r2 (cos2θ + isen2θ). Neste caso, z2 dobra o
ângulo de z. Sendo assim, quando 0 ≤ θ ≤ π2 , então 0 ≤ 2θ ≤ π.
Função inversão
Esta função é definida por w = 1z .
Algumas observações devem ser levadas em consideração:
• Quando |z| = 1, então |w| =
1
= 1.
|z|
CAPÍTULO 2. NÚMEROS COMPLEXOS
• Quando |z| < 1, então |w| =
14
1
> 1, ou seja, w leva o interior do círculo unitário
|z|
em seu exterior.
1
• Quando |z| > 1, então |w| =
< 1, ou seja, w leva o exterior do círculo unitário
|z|
no seu interior.
1
z̄
= 2 . Então w leva primeiro z no seu complexo conjugado z̄ e em seguida
z
|z|
1
multiplica-o pelo inverso do quadrado do seu comprimento 2 .
|z|
w=
Função exponencial
0
0
Na função exponencial real f , sabe-se que f (x + x0 ) = ex+x = ex ex , onde e é a base
do logaritmo natural e vale aproximadamente 2,718281828459045. Ou seja, f (x + x0 ) =
f (x) f (x0 ) e f (0) = 1. Estendendo este conceito para números complexos, toma-se a função g(y) = cos y + i sin y. Logo g(y)g(y0 ) = g(y + y0 ) e g(0) = 1. Ou seja, ela tem a mesma
propriedade que a exponencial real. Sendo assim pode-se definir eiy = cos y + i sin y, onde
y ∈ R.
Mantendo esta propriedade, para z = x + iy, então ez = ex+iy = ex .eiy . Como eiy =
cos y + i sin y então ez = ex (cos y + i sin y), z ∈ C.
Observação 1: Como a exponencial leva o número complexo z = x + iy no número
w = ρeiθ , em que ρ = ex e θ = y, então todo número complexo na forma z = x + iy pode
ser expresso na forma z = ρeiy , chama-se forma polar de z, que, como foi visto, pode ser
resumido como o par (ρ, y)
A função exponencial leva o número z = x + iy ao número w = ex .eiy transformando
coordenadas cartesianas em coordenadas polares.
Se z e z0 são dois números complexos, então temos as seguintes propriedades da exponencial complexa:
•
•
•
•
•
Propriedade 1:
Propriedade 2:
Propriedade 3:
Propriedade 4:
Propriedade 5:
e0 = 1;
0
0
ez+z = ez ez ;
z
0
ez−z = ez0 ;
e
ez 6= 0;
ez+2πi = ez ;
CAPÍTULO 2. NÚMEROS COMPLEXOS
15
A demonstração destas propriedades podem ser vistas em [Dias & Dantas 2006].
Funções trigonométricas
Em números complexos as funções trigonométricas são definidas por: cosz =
e senz =
eiz − e−iz
.
2i
eiz + e−iz
z
Função logarítmica
São definidas log z através das seguintes equivalências: log z = w se, somente se,
Determinando w = u+iv, então |ew | = |eu+iv | = |eu ||eiv | = eu . Escrevendo z = reiθ ,
de ew = z, segue-se que |ew | = |z|, ou seja, eu = r, o que dá u = lnr, onde ln é o logaritmo
natural de r.
ew = z.
Mas ew = z também pode ser visto como eu eiv = reiθ , como eu = r então eiv = eiθ ,
donde v = θ + 2kπ, k ∈ Z. Substituindo estes dados na equação original, obtêm-se log z =
lnr + i(θ + 2kπ), k ∈ Z. Sendo r = |z| e θ + 2kπ = argz, então log z = ln|z| + iargz.
Desta forma, é possível observar que existem diversos valores do logaritmo para um
mesmo número complexo. Para obter apenas um resultado é preciso tomar como valor
do argumento de z, seu argumento principal, 0 ≤ argz < 2π, resultando no logaritmo
principal de z denotado por log z = ln|z| + iargz. Caso z = reiθ então log z = lnr + iθ.
2.3
Números complexos intervalares
A matemática intervalar foi uma das soluções propostas para reduzir o custo dos erros de uma computação numérica e aumentar a informação com respeito a exatidão dos
cálculos matemáticos. Criada paralelamente por Moore e Sunaga na década de 50, ela
usa intervalos fechados como forma de representar dados de entrada inexatos ou que não
podem ser representados finitamente numa máquina e que causam erros de truncamento
ou arredondamento durante a execução de um programa [Santos 2001].
Segundo [Lohner et al. 1985], na aritmética complexa intervalar existem três diferentes tipos de intervalos: retangulares, circulares e setoriais. Neste capítulo serão apresentados e definidos os números complexos intervales, em conjunto com suas aritméticas. Mas
antes é preciso entender como é desenvolvida uma aritmética intervalar no conjunto dos
CAPÍTULO 2. NÚMEROS COMPLEXOS
16
números reais, pois assim como um número complexo é obtido a partir de números reais, espera-se que os números complexos intervalares sejam obtidos a partir de intervalos
reais. É o que será visto nas próximas seções.
2.3.1
Aritmética Intervalar Real
Aqui serão apresentadas a aritmética intervalar de Moore, algumas propriedades referentes às operações, bem como relações que são definidas sobre intervalos reais.
Definição 2.3.1.1 (Intervalo real) Um intervalo [a, b] é definido como sendo um conjunto de números reais da forma
[a, b] = {x ∈ R |a ≤ x ≤ b}
O conjunto de todos os intervalos é definido por
I(R) = {[a, b] ∈ R|a ≤ b}
Definição 2.3.1.2 (Igualdade) Dados X = [x1 , x2 ] e Y = [y1 , y2 ]. Então X = Y se, e
somente se x1 = y1 e x2 = y2 .
Definição 2.3.1.3 (Interseção) Dados os intervalos X = [x1 , x2 ] e Y = [y1 , y2 ]. A interseção dos intervalos é dado por
X ∩Y = [max{x1 , y1 }, min{x2 , y2 }], se max{x1 , y1 } ≤ min{x2 , y2 }]. Se max{x1 , y1 } >
min{x2 , y2 }], então X ∩Y não está definida.
Definição 2.3.1.4 (União) Sejam X = [x1 , x2 ] e Y = [y1 , y2 ]. Se X ∪ Y 6== 0, então a
união entre os intervalos X e Y é definida por
X ∪Y = [min{x1 , y1 }, max{x2 , y2 }]
Aritmética de Moore
Uma aritmética intervalar é um conjunto de operações compostas por soma, diferença,
multiplicação e divisão sobre o conjunto I(R). No que segue, apresenta-se a aritmética
intervalar proposta por Moore.
(Soma) Dados X = [x1 , x2 ] e Y = [y1 , y2 ]. A soma X +Y é dada por
CAPÍTULO 2. NÚMEROS COMPLEXOS
17
X +Y = [x1 + y1 , x2 + y2 ] = {x + y | (x ∈ X)&(y ∈ Y )}
(Pseudo inverso Aditivo) Seja X = [x1 , x2 ]. Então
−X = [−x2 , −x1 ] = {−x | x ∈ X}
(Intervalo simétrico) Seja X um intervalo. Diz-se que X é um intervalo simétrico se
X = −X
(Subtração) Sejam X = [x1 , x2 ] e Y = [y1 , y2 ]. A subtração X −Y é dada por
X −Y = [x1 − y2 , x2 − y1 ] = {x − y | (x ∈ X)&(y ∈ Y )}
(Multiplicação) Sejam X = [x1 , x2 ] e Y = [y1 , y2 ]. Então
X.Y = {x.y | (x ∈ X)&(y ∈ Y )} =
[min{x1 y1 , x1 y2 , x2 y1 , x2 y2 }, max{x1 y1 , x1 y2 , x2 y1 , x2 y2 }
(Pseudo inverso multiplicativo) Seja X = [x1 , x2 ] tal que 0 ∈
/ X. Então
X −1 = [ x12 , x11 ] = { 1x | x ∈ X}
(Divisão) Sejam X = [x1 , x2 ] e Y = [y1 , y2 ] tal que 0 ∈
/ Y . Então
X/Y = {x/y | (x ∈ X)&(y ∈ Y )} =
[min{x1 /y2 , x1 /y1 , x2 /y2 , x2 /y1 }, max{x1 /y2 , x1 /y1 , x2 /y2 , x2 /y1 }
As subseções 2.3.2 a 2.3.4 apresentam três abordagens para a representação de números complexos intervalares. Este trabalho implementará apenas a primeira abordagem.
2.3.2
Aritmética Complexa Intervalar Retangular
Sejam A e B ∈ I(R). Então o conjunto de números complexos
Z = {z1 + iz2 |z1 ∈ A, z2 ∈ B}
é chamado intervalo complexo.
Os intervalos complexos constituem retângulos no plano complexo com lados paralelos aos eixos das coordenadas e, portanto, assim como os números complexos pode ser
representado como o par (A,B), ou na forma algébrica A + iB, para A e B ∈ I(R). O
conjunto desses retângulos é denotado por I(C), onde C é o conjunto dos números complexos. Assim, um número complexo z = z1 + iz2 é portanto, um elemento de intervalo
CAPÍTULO 2. NÚMEROS COMPLEXOS
18
complexo Z = [a, b] + i[c, d] ∈ I(C), onde z1 ∈ [a, b] e z2 ∈ [c, d].
Seja A = A1 + iA2 e B = B1 + iB2 dois membros de I(C). Diz-se que A e B são iguais
se, somente se,
A1 = B1 e A2 = B2
De acordo com [Alefeld & Herberger 1983], a relação de igualdade entre elementos
de I(C) proposta anteriormente é: reflexiva, simétrica e transitiva.
Sejam as seguintes operações binárias definidas sobre os elementos de I(C) operações
que sejam as conhecidas na literatura como aritmética retangular [Petkovic & Petkovic
1998]:
1. A + B = (A1 + B1 ) + i(A2 + B2 );
2. A − B = (A1 − B1 ) − i(A2 − B2 );
3. A.B = (A1 B1 − A2 B2 ) + i(A1 B2 + A2 B1 );
4. A : B =
2.3.3
A1 B1 + A2 B2 iA2 B1 − A1 B2
+
, onde 0 ∈
/ (B1 )2 + (B2 )2 .
(B1 )2 + (B2 )2 (B1 )2 + (B2 )2
Aritmética Complexa Intervalar Circular
Seja c ∈ C um número complexo e r ∈ R, tal que r ≥0. [Petkovic & Petkovic 1998]
define o conjunto
Z = {z ∈ C | |z − c| ≤ r}
como sendo um intervalo circular ou disco. O conjunto de intervalos circulares é representado por K(C). Um disco com centro c e raio r é escrito como Z = (c; r).
Dois discos A = (c1 , r1 ) e B = (c2 , r2 ) são iguais se, e somente se,
c1 = c2 e r1 = r2
Esta relação de igualdade é reflexiva, simétrica e transitiva.
Sejam {+, −, ., :} operações binárias sobre os números complexos. Se A = (a; r1 ) e
B = (b; r2 ) pode-se definir as seguintes operações:
CAPÍTULO 2. NÚMEROS COMPLEXOS
19
1. A + B = (a + b; r1 + r2 );
2. A − B = (a − b; r1 + r2 );
3.
1
B
=
r2
b̄
,
|b|2 −(r2 )2 |b|2 −(r2 )2
para 0 ∈
/ B;
4. A.B = (ab; |a|r2 + |b|r1 + r1 r2 );
/ 0.
5. A : B = A. B1 para B ∈
Dado um complexo arbitrário w ∈ C, tem-se alguns casos especiais de adição, subtração e multiplicação de discos:
1. w + (c; r) = (w + c; r);
2. w − (c; r) = (w − c; r);
3. w.(c; r) = (wc; |w|r);
Sendo W = (c; r) ∈ K(C), então
(a) |W | = |c| + r é chamado de valor absoluto de W e
(b) d(A) = 2r é chamado de amplitude de W .
2.3.4
Aritmética Complexa Intervalar Usando a Forma Polar
Esta subseção é baseada no artigo "Complex Interval Arithmetic Using Polar Form"[Candu
et al. 2006].
Definição
Sejam ρ− , ρ+ , θ− , θ+ ∈ R+ e os intervalos de extremos reais [ρ] = [ρ− , ρ+ ] e [θ] =
[θ− , θ+ ] . O conjunto definido por
Z = {z ∈ C|z = ρeiθ , ρ ∈ [ρ], θ ∈ [θ]}
CAPÍTULO 2. NÚMEROS COMPLEXOS
20
é chamado intervalo complexo polar ou setor intervalar e é denotado por ([ρ], [θ]) 1
Os intervalos [ρ] e [θ] são as representações intervalares, respectivamente, do módulo
e do ângulo de um complexo z ∈ Z. Para garantir a exclusividade da representação,
sempre é possível escolher os limites do último intervalo (θ+ − θ− ≤ 2π, 0 ≤ θ− < 2π e
0 ≤ θ+ < 4π). O conjunto de todos os setores intervalares é denotado por S(C).
Aritmética de intervalos polares
Sejam Z1 e Z2 dois setores de S(C) e * uma das quatro operações aritméticas em C.
Como o conjunto de intervalos reais é fechado com relação à adição e multiplicação, é
possível observar que o produto de dois setores intervalares é também um setor intervalar:
• Z1 ∗ Z2 = {z1 ∗ z2 |z1 ∈ Z1 , z2 ∈ Z2 }
i(θ +θ )
• {ρ1 ρ2 1 2 |ρ1 ∈ [ρ1 ], ρ2 ∈ [ρ2 ], θ1 ∈ [θ1 ], θ2 ∈ [θ2 ]}
• {[ρ1 ] ∗ [ρ2 ], [θ1 ] + [θ2 ]}.
No caso da divisão obtêm-se:
Z1 /Z2 = ([ρ1 ]/[ρ2 ], [θ1 ] − [θ2 ]).
Nestas operações, os intervalos [θ1 ] + [θ2 ] e [θ1 ] − [θ2 ], embora computados pela aritmética intervalar, já não podem ser verificadas pelas condições citadas anteriormente. No
entanto, como todos os ângulos não possuem valores de módulo 2π, pode-se ajustar adicionando ou subtraindo 2π do seus limites inferiores e superiores até que as condições
sejam cumpridas.
O conjunto
Z1 ⊕ Z2 = {z1 + z2 |z1 ∈ Z1 , z2 ∈ Z2 },
conhecido como soma de Minkowski, não é um setor mas possui uma forma complexa.
Para definir adição como uma operação em S(C) é preciso determinar alguns elementos
de S(C) que contém este conjunto. Z1 + Z2 é definido como o menor setor contendo
Z1 ⊕ Z2 :
Z1 + Z2 = ∩Z, Z ∈ S(C), Z1 ⊕ Z2 ⊂ Z
1 Lembre-se
que z = ρeiθ é outra forma de representação de um complexo. Ver Observação 1.
CAPÍTULO 2. NÚMEROS COMPLEXOS
21
A subtração é definida da mesma maneira.
Caracterização da soma de setores
Seja Z1 = ([ρ1 ], [θ1 ]) e Z2 = ([ρ2 ], [θ2 ]) dois setores e Z sua soma, então os limites ρ−
e ρ+ de [ρ] devem verificar:
ρ− = min|z|, z ∈ Z1 ⊕ Z2
ρ+ = max|z|, z ∈ Z1 ⊕ Z2
Da mesma forma, os limites de [θ] são soluções de:
θ− = minA(z), z ∈ Z1 ⊕ Z2
θ+ = maxA(z), z ∈ Z1 ⊕ Z2
onde A(z), o ângulo de um complexo z, é definido sobre Z1 ⊕ Z2 tal que A(z) ∈
[θ− , θ+ ].
2.3.5
Funções Complexas Intervalares Elementares
A seguir serão apresentadas as definições formais de cada uma das funções complexas
intervalares elementares, na representação polar, elas estendem as suas respectivas funções reais [Blomquist et al. 2005a].
Função quadrada (Z 2 )
Seja Z = X +Yi ∈ I(C)
Z 2 = (X −Y ) · (X +Y ) + i.(2.X.Y ).
(2.1)
As funções potência, raiz quadrada e logaritmo assumem Z = ([ρ], [θ]), onde [ρ] =
e [θ] = [θ− ; θ+ ].
[ρ− ; ρ+ ]
Função potência (Z n )
Para n = -1, 0, 1 e 2 as funções para Z n são implementadas como 1/Z, 1, Z, e Z 2 ,
respectivamente. Para n ≤ −2 ou n ≥ 3 ver [Blomquist et al. 2005b].
CAPÍTULO 2. NÚMEROS COMPLEXOS
22
√
Raiz quadrada ( Z)
Seja
sqrt(z) =
√
ρ{cos(θ/2) + i. sin(θ/2)}, −π < θ ≤ +π.
(2.2)
Podemos definir sqrt(Z) como:
sqrt(Z) = {sqrt(z)|z ∈ Z ∈ I(C)}.
(2.3)
ln(Z) = ln(abs(Z)) + i.arg(Z).
(2.4)
Função logaritmo
Funções Trigonométricas
De acordo com [da Silva 2007], a forma de onda das funções seno e cosseno são responsáveis pela grande utilidade nas aplicações matemáticas. A seguir serão apresentadas
algumas funções trigonométricas.
Função seno
sen(Z) = sen(X).cosh(Y ) + i.cos(X).senh(Y ).
(2.5)
cos(Z) = cos(X).cosh(Y ) − i.sen(X).senh(Y ).
(2.6)
Função cosseno
Função tangente
tan(Z) =
sin(2X)
sinh(2Y )
+ i.
.
cos(2X) + cosh(2Y )
cos(2X) + cosh(2Y )
(2.7)
Função co-tangente
cot(Z) = tan
π
2
−Z .
(2.8)
CAPÍTULO 2. NÚMEROS COMPLEXOS
23
Funções Trigonométricas Inversas
Função arco cosseno
arccos(Z) = tan
π
2
− arcsen(Z) .
(2.9)
Função arco tangente
1
1 + iZ
arctan(Z) = tan
.Ln
.
2i
1 − iZ
(2.10)
Função arco co-tangente
1
.
arccot(Z) = arctan
Z
(2.11)
senh(Z) = senh(X).cos(Y ) + i.cosh(X).sen(Y )
(2.12)
Funções Hiperbólicas
Função seno hiperbólico
Função cosseno hiperbólico
cosh(Z) = cosh(X).cos(Y ) + i.senh(X).sen(Y ).
(2.13)
Função tangente hiperbólico
tanh(Z) = −i.tan(iZ).
(2.14)
Função co-tangente hiperbólico
coth(Z) = i.cot(iZ).
(2.15)
CAPÍTULO 2. NÚMEROS COMPLEXOS
2.4
24
Considerações
Este capítulo apresentou os números complexos com suas representações e aritméticas. Pôde-se observar que a escolha entre a representação retangular e a polar vai depender
da aplicação que está sendo desenvolvida.
As principais funções foram incluídas no trabalho com o intuito de nortear o leitor ao
se deparar com a proposta do mesmo, já que tais funções, tanto as complexas quanto as
complexas intervalares, serão implementadas para JAVA-XSC. No módulo complexo foi
implementado tanto a forma retangular, quanto funções de conversão para a forma polar.
Já no módulo complexo intervalar apenas a forma retangular foi implementada.
Foi visto também que os números complexos intervalares são obtidos a partir de intervalos reais, sendo assim este capítulo apresentou a aritmética intervalar real e logo em
seguida a aritmética complexa intervalar em suas representações retangular e polar.
No próximo capítulo serão vistas algumas ferramentas que auxiliam na resolução de
problemas matemáticos. Algumas delas, como CLN e MPC, trabalham com números
complexos, ambas na forma retangular. Além disso, serão apresentadas algumas linguagens XSC que também implementam funções complexas.
Capítulo 3
Algumas ferramentas para cálculo
numérico
3.1
Introdução
Neste capítulo serão apresentadas algumas das bibliotecas desenvolvidas para o aperfeiçoamento do cálculo numérico computacional, em especial, as que trabalham com a
matemática intervalar. Estas ferramentas utilizam diversos modos de arredondamento
para tratar a forma como seus resultados serão exibidos. Os modos de arredondamento
são melhores esclarecidos no Anexo A.
Para cada ferramenta/biblioteca serão informados dados gerais de sua criação, os tipos
numéricos implementados e os modos de arredondamento implementados.
3.2
CLN (Class Library for Numbers)
As informações contidas nesta seção foram baseadas no Manual da CLN ([Haible
2005]).
CLN1 é uma biblioteca eficiente para computação que contém todos os tipos de números com precisão arbitrária. Ela foi escrita por Bruno Haible e sua versão atual é mantida
por Richard Kreckel. A biblioteca é distribuída sobre a GNU General Public License
[Brent & Zimmermann 2009]. CLN foi escrita em C++ e as motivações para isto é que
a linguagem provê eficiência (compilada em código de máquina), segurança (C++ não
permite que uma variável de um tipo assuma um valor que não seja daquele tipo) e uma
1 http://www.ginac.de/CLN/
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
26
sintaxe algébrica.
Esta biblioteca tem por principais características:
• Rico conjunto de classes numéricas: Inteiro(precisão ilimitada), racional, float (short,
single, double e long), complexo, inteiro modular, polinomial univariada.
• Funções elementares (+, -, *, /, sqrt, comparações, ...), lógicas(and, or, not, ...) e
transcendentais(exponencial, logaritmo, trigonometria, funções hiperbólicas e suas
funções inversas).
• Eficiência de Memória.
• Eficiência de velocidade: O kernel da CLN foi escrito em linguagem assembly para
algumas CPUs e ela usa divisão binária para avaliação rápida da série de números
racionais à medida que ocorrem na avaliação de funções elementares e algumas
constantes.
• Interoperabilidade: Apresenta coleta de lixo sem qualquer obrigação para a aplicação principal e ganchos para alocação de memória e exceções.
3.2.1
Tipos Numéricos
A CLN implementa as classes númericas presentes na hierarquia ilustrada na Figura
3.1.
A classe base cl_number é uma classe abstrata, sendo assim, não pode ser usada para
declarar uma variável. A classe cl_N compreende aos tipos real e números complexos.
A classe cl_R também é uma classe abstrata e compreende os números reais de diferentes tipos. A classe cl_RA corresponde exatamente aos números reais: números racionais, incluindo inteiros. A classe cl_F é uma classe abstrata que implementa aproximações de ponto-flutuante para números reais.
3.2.2
Números Exatos
Alguns números são apresentados como números exatos, ou seja, não há perda de
informações quando os números são convertidos de um valor matemático para sua representação interna. Em CLN os números exatos são: números racionais (incluindo inteiros)
e os números complexos no qual as partes real e imaginária são números racionais.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
27
Figura 3.1: Hierarquia dos tipos numéricos em CLN
Os números racionais são sempre normalizados na forma numerador/denominador
onde ambos são inteiros comprimidos e o denominador é positivo, se o resultado do denominador for 1, o número racional é convertido para inteiro.
3.2.3
Números de Ponto-Flutuante
Como nem todos os números podem ser representados de forma exata, algumas aproximações são necessárias. CLN implementa números de ponto-flutuante com mantissa e
expoente. Os números de ponto-flutuante podem ser de quatro tipos distintos:
• Flutuantes curtos (cl_SF): possui 1 bit de sinal, 8 bits de expoente (incluindo o sinal
do expoente) e 17 bits de mantissa (incluindo o bit ’oculto’).
• Flutuantes simples (cl_FF): possui 1 bit de sinal, 8 bits de expoente (incluindo o sinal do expoente) e 24 bits de mantissa (incluindo o bit ’oculto’). São representados
como os pontos-flutuantes de precisão simples da IEEE e corresponde ao tipo float
da C/C++.
• Flutuantes duplos (cl_DF): possui 1 bit de sinal, 11 bits de expoente (incluindo o
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
28
sinal do expoente) e 53 bits de mantissa (incluindo o bit ’oculto’). São representados como os pontos-flutuantes de precisão dupla da IEEE e corresponde ao tipo
double da C/C++.
• Flutuantes longos (cl_LF): possui 1 bit de sinal, 32 bits de expoente (incluindo o
sinal do expoente) e n bits de mantissa (incluindo o bit ’oculto’), onde n >= 64. Sua
precisão é ilimitada, mas uma vez criada, um flutuante longo tem uma precisão fixa.
CLN não implementa recursos como NaNs, números desnormalizados e estouro (underflow). Se o alcance do expoente de alguns tipos de pontos-flutuantes é limitado para
alguma aplicação, então é necessário optar por outro com o expoente maior.
3.2.4
Números Complexos
Os números complexos implementados na classe cl_N possuem uma parte real e uma
imaginária, ambos números reais. Um número complexo cuja parte imaginária é o número exato 0 será automaticamente convertido para um número real.
Números complexos podem originar-se apenas de números reais. A classe cl_N define
a seguinte operação:
• cl_N complex (const cl_R& a, const cl_R& b)
Retorna o número complexo a + bi, onde a é a parte real e b a parte imaginária.
Cada uma das classes cl_N e cl_R definem as seguintes operações:
• cl_R realpart (const type& x)
Retorna a parte real de x.
• cl_R imagpart (const type& x)
Retorna a parte imaginária de x.
• type conjugate (const type& x)
Retorna o complexo conjugado de x.
3.2.5
Funções de Arredondamento
Quando um número real é convertido para um inteiro, não há um arredondamento
melhor. A forma de arredondamento varia de aplicação para aplicação. The Common
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
29
Lisp e o padrão ISO LISP fornece quatro funções de arredondamento:
•
•
•
•
3.3
floor(x): maior inteiro;
ceiling(x): menor inteiro;
truncate(x): inteiros entre 0 e x (inclusive) o mais próximo de x.
round(x): o mais próximo de x. Se x está exatamente na metade entre dois inteiros
escolhe-se um deles.
GNU MP (GMP)
As informações contidas nesta seção foram baseadas no Manual da GMP ([Granlund
& the GMP development team 2010]).
GMP 2 é uma biblioteca escrita em C com uma aritmética de precisão arbitrária para
inteiros, números racionais e números de ponto flutuante [Granlund & the GMP development team 2010]. Ela foi desenvolvida por Torbjorn Granlund e outros contribuintes no
ano de 1993, sendo que uma versão preliminar foi criada em 1991. A biblioteca é distribuída sobre a GNU LGPL (esta licença torna a biblioteca livre para usar, compartilhar e
melhorar, e permite o repasse do resultado).
As aplicações mais interessadas na GNP são aplicações para criptografia e pesquisas, segurança na Internet, sistemas algébricos, pesquisa algébrica computacional, entre
diversas outras. Algumas aplicações usam apenas poucas centenas de bits na precisão
mas outras podem precisar de milhares de bits. A GNP foi desenvolvida para trabalhar
em ambas as situações com bom desempenho, podendo escolher algoritmos baseados no
tamanho dos operadores. Essa é uma vantagem em relação a JAVA-XSC pois a mesma
está presa a extensão do tamanho por não termos inteiros não sinalizados.
Existem várias categorias de funções em GMP:
• Inteiro (mpz): esta categoria apresenta cerca de 140 funções aritméticas e lógicas.
• Racional (mpq): esta categoria contém cerca de 35 funções, mas todas as funções
da aritmética de inteiros podem ser utilizadas aqui também.
• Ponto Flutuante (mpf): Esta categoria é utilizada quando o tipo double de C não
fornece precisão suficiente para uma aplicação. Aqui encontram-se cerca de 65
funções.
2 http://gmplib.org/
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
30
• Funções de baixo nível que operam com números naturais. Aqui existe cerca de 30
funções.
• Funções diversas: funções para criação de atribuições e funções personalizadas para
a geração de números aleatórios.
• Suporte externo: Funções aritméticas de ponto-flutuante com arredondamento preciso (MPFR). A partir do GMP 4.2, MPFR é distribuído separadamente do GMP.
3.3.1
Números Racionais
Os números racionais são armazenados em objetos do tipo mpq_t.
De acordo com [Granlund & the GMP development team 2010], todas as funções da
aritmética racional assumem operandos na forma padrão. Forma padrão quer dizer que
o denominador e o numerador não possuem fatores em comum e que o denominador é
0
positivo. Zero tem uma representação única .
1
3.3.2
Ponto-Flutuante
Ainda segundo [Granlund & the GMP development team 2010], a mantissa de cada
f loat tem uma precisão determinada pelo usuário, limitada somente pela capacidade de
memória. Cada variável possui sua própria precisão que pode ser incrementada ou decrementada a qualquer momento.
O expoente de cada f loat é uma precisão fixa, uma palavra de máquina na maioria
dos sistemas. Na versão mais recente (5.0.1), o expoente é uma contagem de membros,
por exemplo, sobre um sistema de 32-bit, significa um intervalo de cerca de 2−68719476768
a 268719476736 . Sobre um sistema de 64-bit isto será maior.
Cada variável mantém os dados do tamanho da mantissa atualmente em uso. Isso significa que se o f loat é representado exatamente em apenas poucos bits então apenas esses
bits serão usados no cálculo, mesmo se a precisão selecionada for alta.
Todos os cálculos são realizados com precisão da variável de destino. Cada função
é definida para calcular com ’precisão infinita’ seguida pelo truncamento da precisão de
destino. A precisão selecionada para a variável possui um valor mínimo.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
31
A mantissa é armazenada em binário. Uma consequência disto é que frações decimais
como 0.1 não podem ser representadas de forma exata, o mesmo também ocorre no IEEE
double f loats.
Funções ’mpf’ e variáveis não possuem uma notação especial para infinito ou NaN, e
as aplicações devem tomar cuidado para não sobrecarregar o expoente ou os resultados se
tornarão imprevisíveis.
As funções mp f não são extensões do IEEE-754, sendo assim, os resultados obtidos
em um computador, muitas vezes diferem dos resultados em um computador com uma
palavra de tamanho diferente.
Esta ferramenta não possui funções para se trabalhar com números complexos.
3.4
MPFR (Multiple Precision Floating-Point Reliable)
As informações contidas nesta seção foram baseadas no Manual da MPFR ([Hanrot
et al. 2011]).
A MPFR3 é uma biblioteca que trabalha com uma aritmética altamente precisa sobre
números de ponto flutuante. Escrita em C e baseada na biblioteca GNU MP vista anteriormente, ela provê uma classe de ponto flutuante com semântica precisa. Suas principais
características são:
• Apresenta um código portável, ou seja, o resultado da operação não depende da
máquina na qual esta sendo executada.
• a precisão em bits pode ser definida exatamente para qualquer valor válido para
cada variável.
• MPFR oferece cinco modos de arredondamento do padrão IEEE 754-2008 (provê
arredondamento correto e exceções).
Com isto, a biblioteca MPFR provê operações de aritmética básica, algumas funções
elementares e várias funções especiais, com arredondamento correto a qualquer precisão.
3 http://www.mpfr.org/
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
3.4.1
32
Modos de Arredondamento
Em MPFR são suportados cinco tipos de arredondamento [Hanrot et al. 2011]:
• MPFR_RNDN: Arredondamento para o mais próximo (roundTiesToEven no IEEE
754-2008);
• MPFR_RNDZ: Arredondamento para o zero (roundTowardZero no IEEE 7542008);
• MPFR_RNDU: Arredondamento em direção ao infinito positivo (roundTowardPositive no IEEE 754-2008);
• MPFR_RNDD: Arredondamento em direção ao infinito negativo (roundTowardNegative no IEEE 754-2008);
• MPFR_RNDA: Arredondamento distante do zero (experimental).
O arredondamento para o mais próximo trabalha tal qual o padrão IEEE 754, ou seja,
no caso do número estar arredondado exatamente entre dois números representáveis, ele
é arredondado para aquele com o bit menos significativo de zero. Por exemplo, o número
2.5, que é representado por 10.1 em binário, é arredondado para 10.0 = 2 com precisão de
dois bits e não para 11.0 = 3.
A maioria das funções em MPFR utilizam três argumentos, o primeiro é a variável de
destino, o segundo são as variáveis de entrada e por último um modo de arredondamento.
Estas funções retornam um valor do tipo inteiro, chamado de valor ternário. O valor armazenado na variável de destino é corretamente arredondado, ou seja, MPFR comporta-se
como se ela computasse os resultados com uma precisão infinita, então arredonda para a
precisão desta variável.
Em consequência, no caso de um resultado de arredondamento diferente de zero, o
1
erro no resultado é menor ou igual a ulp (unit in the last place), que é o peso do úl2
timo bit significativo representado no resultado após o arredondamento, resultando em
um arredondamento para o mais próximo, e menos que 1 ulp resultando nos modos de
arredondamento direcionado.
Se o valor do resultado de arredondamento for zero, o valor armazenado na variável de
destino é o resultado exato da função matemática correspondente. Se o valor for positivo
(negativo), o valor armazenado na variável de destino é maior (menor) que o resultado
exato. No caso de um resultado infinito, o resultado é considerado como inexato quando
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
33
obtido por overflow e exato caso contrário. Um resultado NaN sempre corresponde a um
valor de retorno exato.
3.4.2
Ponto-Flutuante
De acordo com [Fousse et al. 2007], um número de ponto-flutuante x em MPFR é
representado por uma mantissa m, um sinal s e um expoente sinalizado e. O tamanho (em
bits) da mantissa será de acordo com a precisão, p, de x. Neste caso a mantissa terá p bits
1
significantes e é interpretada como ≤ m < 1.
2
A MPFR utiliza uma estratégia onde cada parte de um número de ponto flutuante
apresenta uma precisão local. Segundo [Muller et al. 2009], esta estratégia é muito eficiente, pois o usuário pode alocar grandes precisões somente para variáveis que realmente
necessitam delas e pequenas precisões para as outras.
Esta ferramenta não possui funções para se trabalhar com números complexos nem
intervalos. Mas algumas ferramentas foram construídas baseadas nela, entre elas temos
a MPFI, que possui funções específicas para o uso de intervalos, e a MPC, que trabalha
com números complexos.
3.5
MPFI (Multiple Precision Floating-Point Interval)
As informações contidas nesta seção foram baseadas no Manual da MPFI ([Revol
2002]).
MPFI4 é uma biblioteca para aritmética intervalar com precisão múltipla desenvolvida
por [Revol & Rouillier 2002]. Esta biblioteca foi escrita em C e desenvolvida seguindo os
conceitos da MPFR e GNP. Por ser um software livre ela pode ser adquirida gratuitamente
através do site do projeto.
Segundo [Revol & Rouillier 2002], múltipla precisão significa que a precisão computada não é limitada à precisão simples ou dupla da máquina dos números de pontoflutuante, no contrário, precisões arbitrárias devem estar disponíveis. Além disso, esta
4 http://perso.ens-lyon.fr/nathalie.revol/software.html
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
34
’computação precisa’ deve ser ajustada dinamicamente para cumprir a exatidão necessária. Uma das exigências mais requeridas pela aritmética intervalar é facilitar o arredondamento: isso garante que para cada operação, o intervalo computado usando aritmética
de ponto-flutuante contenha o intervalo obtido se a aritmética real exata está sendo usada.
Ainda mais desejável é um arredondamento direcionado exato para evitar perda de acurácia.
No MPFI os intervalos são implementados usando seus extremos que são números de
pontos-flutuantes MPFR seguros.
3.5.1
Modos de Arredondamento
De acordo com [Revol 2002], apenas dois modos de arredondamento são usados no
manuseio de intervalos representados por seus extremos:
• MPFI_RNDU: Arredondamento em direção ao infinito positivo;
• MPFI_RNDD: Arredondamento em direção ao infinito negativo.
A MPFI ainda está em fase de desenvolvimento, no futuro, planeja-se incrementar a
biblioteca com novas facilidades tais como diferenciação automática e álgebra linear.
3.6
MPC (Multiple Precision Complex)
As informações contidas nesta seção foram baseadas no Manual da MPC ([team
2011]).
MPC5 , desenvolvida por [Enge et al. 2011], é uma biblioteca também escrita em C
que apresenta uma aritmética precisa sobre números complexos provendo um arredondamento correto. Ela foi escrita baseando-se nas bibliotecas GNU MP e na GNU MPFR.
Todas as declarações necessárias para usar MPC estão no arquivo ’mpc.h’, que pode trabalhar tanto com o compilador C quando com C++.
Esta biblioteca utiliza a representação cartesiana: o número complexo x + iy é armazenada como um par (x, y) de dois números de ponto-flutuante de precisão arbitrária (pares
5 http://www.lix.polytechnique.fr/Labo/Andreas.Enge/Mpc.html
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
35
real e imaginária). A precisão é o número de bits usados para representar a mantissa das
partes real e imaginária.
3.6.1
Modos de Arredondamento
O modo de arredondamento especifica a maneira de arredondar o resultado de uma
operação complexa, no caso o resultado exato não pode ser representado exatamente na
mantissa de destino. O modo de arredondamento de complexos é um par de dois modos
de arredondamento: um para a parte real e outra para a parte imaginária.
Um modo de arredondamento complexo é da forma MPC_RNDxy, onde x e y pertencem a N (mais próximo), Z (direção ao zero), U (direção ao infinito positivo) ou D
(direção ao infinito negativo). O primeiro refere-se ao modo de arredondamento da parte
real e o segundo da parte imaginária. Por exemplo: MPC_RNNZ indica que a parte real
usará o arrendondamento para o mais próximo e a parte imaginária utilizará o arredondamento em direção ao zero.
O arredondamento para o mais próximo trabalha como no padrão IEEE P754, ou seja,
no caso do número estar arredondado exatamente no meio de dois números representáveis,
ele é arredondado de forma que o último bit significante seja igual a zero. Por exemplo:
o número 5 (101 em binário), é arredondado para 4 (100) com uma precisão de dois bits
e não para 6 (110).
3.6.2
Funções Complexas
As funções ponto-flutuante MPC possuem uma interface que é similar às funções inteiras GMP. O prefixo da função para operações sobre números complexos é mpc_.
A computação da precisão acontece da seguinte forma: calcula-se exatamente a operação solicitada (com precisão infinita) e arredonda o resultado na variável de destino com
o modo de arredondamento informado.
As funções complexas MPC foram desenvolvidas conforme o padrão IEEE P754. O
resultado obtido em uma máquina pode ser diferente do resultado que foi executado em
outra máquina.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
36
Existem diversas funções divididas em módulos, tais como: funções de atribuição,
funções de conversão, funções de comparações, funções de projeções e decomposições,
funções aritméticas básicas, funções de potência e logaritmo, funções trigonométricas,
funções diversas e funções avançadas.
3.7
INTLIB
INTLIB é uma biblioteca desenvolvida para a linguagem Fortran 77 que oferece um
padrão nas operações com intervalos, facilitando desta forma, a utilização da aritmética
intervalar. Ela alcança portabilidade com arredondamento e pode ser utilizada tanto por
Fortran 77 quanto por Fortran 90. A INTLIB tem como principais características [Kearfott
et al. 1994]:
• Portabilidade. Desta forma os usuários conseguem transferir programas de aplicação de uma máquina para outra e o programa executará eficazmente sem nenhuma
alteração, e apresenta uma rigorosa aritimética intervalar para a comunidade Fortran.
• Apresenta uma grande quantidade de documentos para as diversas versões disponíveis.
• A biblioteca suporta sobrecarga de operador em Fortran 90.
• Apresenta um paradigma de teste razoável.
• Sinalização de erros simples mas eficiente.
As rotinas desta biblioteca são consideradas significativamente legíveis para os usuários, sendo precisas e sem grande número de funções desnecessárias, ou que gerem ambiguidade de interpretação matemática. A INTLIB é dividida em cinco módulos, que são:
módulo para aritmética intervalar elementar (Tabela 3.1), módulo de funções intervalares
elementares (Tabela 3.2), módulo de funções úteis (Tabela 3.3), módulo de impressão de
erros e módulo de constantes matemáticas de programas que é utilizada para inicializar
parâmetros e constantes globais.
Tabela 3.1: Módulos do INTLIB: Aritmética elementar para intervalos
Nome
Função
ADD
Adição
SUB
Subtração
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
MULT
Multiplicação
IDIV
Divisão
RNDOUNT
Arredondamento
SCLADD
Adição de intervalos e números reais
SCLMLT
Multiplicação de escalar
Tabela 3.2: Módulos do INTLIB: Funções padrões para intervalos
Nome
Função
IEXP
Exponencial
ISQRT
Raiz quadrada
POWR
Potência inteira
HIIPOWR
Potência para um intervalo não negativo
ILOG
Logaritmo
ISIN
Seno
ICOS
Co-seno
IASIN
Arco seno
IACOS
Arco co-seno
IATAN
Arco tangente
IACOT
Arco co-tangente
ISINH
Seno hiperbólico
Tabela 3.3: Módulos do INTLIB: Funções úteis
Nome
Função
ICAP
Interseção
IDISJ
Dois intervalos disjuntos
IHULL
União convexa
IILEI
Inclusão no fechamento do intervalo
37
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
3.7.1
IILTI
Inclusão no interior
IINF
Retorna a esquerda do ponto final
IMID
Ponto médio de um intervalo
IMIG
Magnitude
IRLEI
Inclusão de ponto no fechamento do
intervalo
IRLTI
Inclusão de ponto no interior do intervalo
ISUP
Retorna o ponto final direito
IVL1
Constroi intervalo para um ponto
IVLABS
Construção de um intervalo a partir
de outro
IVLI
Atribuir um intervalo a outro
IWID
Diâmetro de um intervalo
38
Simulação de Arredondamento Direcionado
O arredondamento direcionado simulado é uma forma com a qual fechamentos rigorosos para resultados de pontos-flutuantes podem ser obtidos em FORTRAN 77 e outras
linguagens e máquinas que não possuem acesso ao arredondamento direcionado verdadeiro. A única exigência é que os parâmetros aritméticos, tais como a exatidão de uma
operação elementar, sejam conhecidos. Para mais detalhes ver [Kearfott 1995].
3.8
COMMONS MATH
Commons Math é uma biblioteca desenvolvida em JAVA composta de um pequeno
conjunto de utilitários com objetivo de resolver alguns problemas de programação, como
os citados abaixo:
• Variâncias e estatísticas de resumo para uma lista de números;
• Ajuste de uma reta a um conjunto de pontos por meio de regressão linear;
• Encontrar uma curva suave que passe através de uma coleção de pontos (interpolação);
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
39
• Colocação de um modelo paramétrico para um conjunto de medidas usando métodos de mínimos quadrados;
• Resolução de equações envolvendo funções reais
• Resolução de sistemas de equações lineares;
• Solução de equações diferenciais ordinárias;
• Minimização de funções multi-dimensional;
• Geração de números aleatórios com mais restrições (por exemplo, a distribuição
gama), do que é possível usar no JDK;
• Realização de testes de significância estatística;
• Diversas funções matemáticas tais como fatoriais, coeficientes binomial e "funções
especiais".
3.8.1
Organização
Commons Math é dividido em catorze sub-pacotes, com base na funcionalidade fornecida. Estes sub-pacotes são:
1. org.apache.commons.math.stat - estatísticas, testes estatísticos.
2. org.apache.commons.math.analysis - integração, interpolação, polinômios.
3. org.apache.commons.math.random - números aleatórios, cordas e de geração de
dados.
4. org.apache.commons.math.special - funções especiais (Gama, Beta).
5. org.apache.commons.math.linear - matrizes, resolução de sistemas lineares.
6. org.apache.commons.math.util - matemática comum/ funções estendendo java.lang.Math.
7. org.apache.commons.math.complex - números complexos.
8. org.apache.commons.math.distribution - distribuições de probabilidade.
9. org.apache.commons.math.fraction - números racionais.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
40
10. org.apache.commons.math.transform - métodos de transformação (Fast Fourier).
11. org.apache.commons.math.geometry - geometria (espaços euclidianos e Particionamento Espacial Binária).
12. org.apache.commons.math.optimization - maximização ou minimização da
função.
13. org.apache.commons.math.ode - equações diferenciais ordinárias integração.
14. org.apache.commons.math.genetics - algoritmos genéticos.
3.8.2
Números Complexos
O pacote org.apache.commons.math.complex é responsável pela criação do tipo número complexo e pela implementação das suas funções.
Este pacote é composto pelas seguintes classes:
Complex
Esta classe é responsável pela representação do número complexo, ou seja, um número com uma parte real e uma parte imaginária.
As implementações de operações aritméticas lidam com NaN e valores infinitos de
acordo com as regras para o tipo Double, ou seja, equals (java.lang.Object) é uma relação
de equivalência para todas as instâncias que têm um NaN, na parte real ou imaginária, por
exemplo, são considerados iguais:
• 1 + NaNi
• NaN + i
• NaN + NaNi
Construtores:
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
41
1. Complex(double real): Cria um número complexo dado sua parte real.
2. Complex(double real, double imaginaria): Cria um número complexo dado sua
parte real e imaginária.
Métodos:
A Tabela 3.4 apresenta todos os métodos implementados na classe Complex:
Tabela 3.4: Métodos da classe Complex
Método
Função
abs()
Retorna o valor absoluto de um número complexo
acos()
Calcula o arco-cosseno de um número complexo
add(Complex c)
Retorna o complexo cujo valor é (this + c)
add(double d)
Retorna o complexo cujo valor é (this + d)
asin()
Calcula o arco-seno de um número complexo
atan()
Calcula o arco-tangente de um número complexo
cosh()
Calcula o cosseno hiperbólico de um número
complexo
createComplex(double r, double i)
Cria um número complexo dado sua parte real
e imaginária
divide(Complex divisor)
Retorna um número complexo cujo valor é (this
/ divisor)
Divide(double divisor)
Retorna um número complexo cujo valor é (this
/ divisor)
equals(java.lang.Object outro)
Testa se dois Complexos são iguais
exp()
Calcula a função exponencial de um número
complexo
getArgument()
Calcula o argumento de um número complexo
getField()
Obtem o campo ao qual a instância pertence.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
42
getImaginary()
Retorna aparte imaginária de um número complexo
getReal()
Retorna a parte real de um número complexo
hasCode()
Obter um hashCode para o número complexo
isInfinity()
Verifica se ambas as partes de um número complexo tem um valor infinito
isNaN()
Verifica se uma ou ambas as partes de um número complexo é NaN.
log()
Calcula o logaritmo natural de um número complexo
multiplay(Complex f)
Retorna um número complexo cujo valor é (this
* f)
multiplay(double f)
Retorna um número complexo cujo valor é (this
* f)
multiplay(int f)
Retorna um número complexo cujo valor é (this
* f)
negate()
Retorna um número complexo cujo valor é (this)
nthRoot(int n)
Calcula as n raízes de um número complexo
pow(Complex x)
Retorna um número complexo elevado à x
pow(double x)
Retorna um número complexo elevado à x
reciprocal()
Retorna o inverso multiplicativo
sin()
Calcula o seno de um número complexo
sinh()
Calcula o seno hiperbólico de um número complexo
sqrt()
Calcula a raiz quadrada de um número complexo
sqrt1z()
Calcula a raiz quadrada de (this -1)
substract(Complex s)
Retorna um número complexo cujo valor é (this
-s)
substract(double s)
Retorna um número complexo cujo valor é (this
-s)
tan()
Calcula a tangente de um número complexo
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
43
tanh()
Calcula a tangente hiperbólica de um número
complexo
toString()
Complex valueOf(double realPart) Cria um número complexo dado a parte real
valueOf(double r, double i)
Cria um número complexo dado ambas as partes
ComplexField
Esta classe é responsável pela representação dos números complexos. É composta
pelos seguintes métodos:
getInstance(): Obtém uma instância única retornando um ComplexField;
getOne(): Obtém a identidade multiplicativa e retorna um Complex;
getRuntimeClass(): Retorna a classe runtime do FieldElement e
getZero(): Obtém a identidade aditiva e retorna um Complex;
ComplexFormat
Esta classe é responsável pelo formato de um número complexo, Re(c) + Im(c)i. i
pode ser substituído por j (ou qualquer outra coisa), e o formato de número de peças reais
e imaginárias podem ser configurados.
Construtores:
1. ComplexFormat (): Cria uma instância com a parte imaginária padrão, i, e o formato de número padrão para ambas as partes reais e imaginárias.
2. ComplexFormat (formato java.text.NumberFormat): Cria uma instância com um
formato de número personalizado para as partes reais e imaginárias.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
44
3. ComplexFormat (java.text.NumberFormat realFormat, java.text.NumberFormat imaginaryFormat): Cria uma instância com um formato de número personalizado para a parte
real e um formato de número personalizado para a parte imaginária.
4. ComplexFormat (imaginaryCharacter java.lang.String): Cria uma instância com
um carácter personalizado imaginário, e no formato de número padrão para ambas as partes reais e imaginárias.
5. ComplexFormat (imaginaryCharacter java.lang.String, formato java.text.NumberFormat):
Cria uma instância com um carácter personalizado imaginário, e um formato de número
personalizado para as partes reais e imaginárias.
6. ComplexFormat (imaginaryCharacter java.lang.String, java.text.NumberFormat realFormat, java.text.NumberFormat imaginaryFormat): Cria uma instância com um carácter personalizado imaginário, um formato de número personalizado para a parte real, e
um formato de número personalizado para a parte imaginária.
Métodos:
A Tabela 3.5 apresenta todos os métodos implementados na classe ComplexFormat:
Tabela 3.5: Métodos da classe ComplexFormat
Método
Função
format(Complex c)
Este
método
chama
mat(Object,StringBuffer,FieldPosition).
format(Complex complexo,
StringBuffer sb, FieldPosition pos)
Formata um objeto complexo para produzir uma
string.
format(Double c)
Esse
método
chama
mat(Object,StringBuffer,FieldPosition).
format(Object obj, StringBuffer sb, FieldPosition pos)
Formata um objeto para produzir uma string
getAvailableLocales()
Obtêm um conjunto de localidades para as quais formatos complexos estão disponíveis.
for-
for-
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
45
getImaginaryCharacter()
Acessa o ImaginaryCharacter
getImaginaryFormat()
Formata o imaginaryFormat
getInstance()
Retorna o formato padrão complexo para o local
atual.
getInstance(Locale locale)
Retorna o formato padrão complexo para a determinada localidade.
getInstance(String
ginaryCharacter,
locale)
Retorna o formato padrão complexo para a determinada localidade.
imaLocale
getRealFormat()
Acessa o realFormat
parse(String source)
Analisa uma string para produzir um objeto complexo.
parse(String source, ParsePosition pos)
Analisa uma string para produzir um objeto complexo.
3.9
Linguagens XSC
Há cinco décadas que estão sendo desenvolvidas pesquisas com o intuito de possibilitar que máquinas suportem uma aritmética mais poderosa que a do ponto flutuante. A
partir daí surgiram as linguagens XSC (eXtended Scientific Computing) que são linguagens para computação científica com algoritmos precisos carregando seu próprio controle
de precisão.
No final da década de setenta, mais precisamente entre 1976 e 1979, duas universidades alemãs a Universidade Karlshure e Kaiserlautern se uniram para desenvolver uma
extensão do PASCAL, que ficou conhecida como PASCAL-SC. Nos anos seguintes, juntamente com a IBM, foi lançada uma versão do FORTRAN 77 implementada em computadores IBM/370 chamada ACRITH-SC.
A primeira geração das linguagens científicas foram as linguagens SC. As primeiras
linguagens desenvolvidas foram FORTRAN-SC e PASCAL-SC, sendo esta última bastante citada na literatura sobre computação intervalar. Diversos pacotes foram criados
para estas linguagens tanto para tarefas numéricas usuais quanto para resolução de sis-
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
46
temas lineares. Uma grande desvantagem desta linguagem é que só estavam disponíveis
para uma variedade limitada de computadores [Kearfott 1996].
O desenvolvimento de novas linguagens de programação, como C++ e JAVA, tornaram mais fácil a portabilidade das linguagens, ou seja, C++ e JAVA são capazes de se
adaptar a hardwares e softwares. Deste fato surgiram as linguagens XSC, uma segunda
geração de linguagens com maior exatidão com suporte a operações intervalares.
De acordo com [Dutra 2000], estas novas linguagens para computação científica têm
como características principais:
•
•
•
•
•
•
•
Sobrecarga de operadores,
Agrupamento das funções em módulos específicos,
Vetores dinâmicos,
Arredondamento direcionado,
Tipos numéricos primitivos simples, como real, complexo e intervalo;
Operadores aritméticos de maior exatidão para os tipos numéricos e
Funções elementares de maior exatidão para os tipos numéricos.
Nas próximas subseções serão apresentadas duas destas linguagens: PASCAL-XSC e
C-XSC.
3.9.1
PASCAL-XSC
A linguagem de programação PASCAL-XSC6 é uma ferramenta desenvolvida para
solucionar problemas numéricos. Esta nova versão, diferente da PASCAL-SC, tem a
vantagem de ser portável para outros hardwares e possui tipos de dados específicos para
intervalos, números complexos e matrizes.
PASCAL-XSC foi desenvolvida na linguagem e programação C e seus compiladores
são utilizados por uma variedade de computadores tais como computadores pessoais, estações de trabalho, mainframes e supercomputadores.
Os principais conceitos de Pascal-XSC são [Klatte et al. 1999]:
• Padrão ISO do PASCAL;
6 http://www2.math.uni-wuppertal.de/wrswt/xsc/pxsc.html
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
•
•
•
•
•
•
•
•
•
•
•
•
•
47
Conceito de operador universal;
Funções e operadores com tipo de resultado arbitrário;
Sobrecarga de procedimentos;
Rotinas de leitura e escrita;
Conceito de módulo;
Arrays dinâmicos, acesso e subarrays;
Conceito de string;
Arredondamento controlado;
Produto escalar ótimo;
Tipo de padrão dotprecision e tipos aritméticos adicionais;
Aritmética de alta-exatidão para todos os tipos;
Funções de alta-exatidão e avaliação exata de expressões;
Funções e operadores.
Esta linguagem pode implementar aplicações em módulos, cuja função é simplificar
um programa (código) grande em pequenos blocos de códigos, para resolver problemas
numéricos comuns, tais como:
•
•
•
•
•
•
•
•
•
•
Sistemas de equações lineares e não-lineares;
Inversão de matrizes;
Autovalores e Autovetores;
Avaliação de expressões aritméticas;
Avaliação de polinômios e busca de zeros de polinômios;
Quadratura numérica;
Equações diferenciais;
Equações integrais;
Diferenciação automática;
Otimização.
Descrição dos tipos básicos
PASCAL-XSC é baseado na linguagem de programação PASCAL. Aqui serão apresentados os tipos básicos de PASCAL e as alterações que foram necessárias durante o
desenvolvimento de PASCAL-XSC. Os tipos básicos em Pascal são os tipos integer,
boolean, char, tipos de enumeração e subtipos. A seguir eles são definidos: [Klatte
et al. 1999]
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
48
Integer: Uma constante literal do tipo integer é uma sequência de dígitos (decimais)
com ou sem um sinal de + ou -. Em PASCAL-XSC, um valor do tipo inteiro pode também
ser escrito como uma constante hexadecimal inicializada com o caractere $ e seguido por
uma sequência de dígitos hexadecimais composto pelos dígitos 0, 1, ..., 9 e as letras A, B,
..., F e a, b, ..., f.
Real: Uma constante literal do tipo real tem a seguinte representação:
± mantissa E expoente.
A mantissa é uma sequência de dígitos com o sem ponto decimal e o expoente é um
valor inteiro. A notação ’± mantissa’, onde o expoente é omitido, também é permitida.
Em Pascal-XSC, para realizar a conversão de constantes literais real dentro do formato de dados internos de maneira controlada, é necessária uma notação adicional para
estas constantes. Enquanto a notação de real em PASCAL implica na conversão com
arredondamento para o numero de ponto-flutuante mais próximo, ela possibilita a especificação de constantes reais que são convertidas com arredondamento para o número de
ponto-flutuante menor mais próximo ou para o maior mais próximo com notações ’(< ±
mantissa E expoente)’ e ’(> ± mantissa E expoente)’ respectivamente. O E e o expoente
podem ser omitidos mas os parênteses são obrigatórios.
Boolean: Este tipo é composto pelas constantes lógicas true e false, onde false < true.
Char: Estas constantes são fechadas entre aspas simples. A ordem de relação é a
seguinte:
’0’ < ’1’ < ... < ’9’ e ’a’ < ’b’ < ... < ’z’.
Tipos e enumeração: Este tipo consiste de constantes listadas na definição de tipos.
A relação de ordem é definida pela ordem da enumeração. Um tipo de enumeração é
definido pelo programador em uma definição de tipos. As constantes literais que são os
elementos de uma enumeração não podem colidir com nenhum valor de outra enumeração.
Subtipos: Subtipos podem ser definidos pela especificação limite inferior e do limite
superior (constante ... constante). O conjunto dos valores de um subtipo consiste em todos os valores que estão entre esses limites.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
49
Dotprecision: PASCAL-XSC introduz esse novo tipo que é baseado no tipo real e
permite a representação de produtos de dois números reais arbitrários e a adição de um
número arbitrário de tais produtos em um formato de ponto-flutuante fixo de tamanho
adequado. Se o formato real interno é fixado pela mantissa de tamanho l e os expoentes máximo (emax) e mínimo (emin) então uma variável dotprecission ocupa espaço de
armazenamento da forma
Figura 3.2: Tamanho de uma variável do tipo dotprecision
O tamanho total é: L = g + 2emax + 2|emin| + 2l dígitos, onde g denota o número de
dígitos guardados na acumulação de carga durante a adição.
Valores do tipo dotprecision tipicamente ocorrem durante a multiplicação de vetores
e matrizes.
Os Tipos Intervalo e Complexo
PASCAL-XSC provê uma aritmética adicional para os tipos complex, interval e cinterval. Eles não possuem constantes nem operadores como sua linguagem, portanto, também não há expressões. O uso de operadores e funções padrões requer o uso dos módulos
aritméticos correspondentes (C_ARI, I_ARI e CI_ARI, respectivamente).
O tipo complex: O número complexo z = x + iy, com x sendo a parte real e y a parte
imaginária podem ser declaradas em PASCAL como:
type complex = record re, im: real end;
Em PASCAL-XSC, este tipo é um tipo pré-definido. A declaração da variável
var z:complex;
especifica uma variável complexa z. As partes real e imaginária de z podem ser acessadas por z.re e z.im, respectivamente.
O tipo interval: Para intervalos reais
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
50
a = [a, a] := {x ∈ R|a ≤ x ≤ a}
com a sendo o limite inferior e a o limite superior, PASCAL-XSC provê um tipo
interval pré-definido, declarado da seguinte forma:
type interval = record inf, sup: real end;
A declaração de variável
var a: interval;
especifica uma variável a do tipo intervalo. Os limites superior e inferior podem ser
acessados por a.inf e a.sup, respectivamente.
O tipo cinterval: Intervalos complexos são retângulos com lados paralelos aos eixos
no plano complexo. O tipo pré-definido cinterval é definido por:
type cinterval: record re, im: interval end;
As partes de um complexo intervalar c, declarado como
var c: cinterval;
podem ser acessados por c.re (um intervalo para a parte real) e c.im (um intervalo para
a parte imaginária). Os seus limites podem ser acessados por c.re.inf, c.re.sup, c.im.inf e
c.im.sup.
3.9.2
C-XSC
Segundo [Hofschuster & Krämer 2010], a linguagem C-XSC7 é uma ferramenta bastante poderosa e fácil de ser manuseada. Esta linguagem tem como principal objetivo
auxiliar no desenvolvimento de algoritmos numéricos que necessitam de alta precisão.
As características, ou tipos, mais importantes em C-XSC são os tipos real, complexo, intervalo e complexo intervalar.
A escolha da linguagem de programação C++ ao invés de C se dá pelo fato que esta
segunda não ser apropriada para programar algoritmos numéricos, já que não fornece as
estruturas de dados numéricas básicas como vetores e matrizes e não faz a checagem da
indexação em arrays [Wiethoff 1996]. Já a linguagem C++, que é uma extensão da C
7 http://www2.math.uni-wuppertal.de/wrswt/xsc/cxsc.html
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
51
orientada à objetos, fornece várias facilidades que suprem as deficiências da C, já que
agora a linguagem apresenta o conceito de classes e sobrecarga de operadores.
As características básicas da C-XSC são:
• Tipos de dados real (real), complexos (complex), intervalo (interval) e complexo
intervalar (cinterval);
• Fornece uma notação específica para manipular subarrays de vetores e matrizes
tornando-os tipos dinâmicos;
• Dotprecision, ou seja, tipos com precisão após a vírgula;
• Maior precisão em operadores aritméticos pré-definidos;
• Funções padrões de alta ocorrência;
• O controle de arredondamento durante operações de entrada e saída de dados se
dá pelo conceito de sobrecarga dos operadores << e >> da C++. Sendo assim, é
possível especificar o número de casas decimais do valor impresso.
• Fornece uma aritmética dinâmica de múltipla precisão, como o real longo (l_real)
e o intervalo longo (l_interval), bem como também são implementados vetores
dinâmicos correspondentes a matrizes, incluído operações vetoriais.
• Fornece uma biblioteca para resolução de problemas, que nada mais é do que uma
coleção de rotinas de problemas padrões para análises numéricas, com isto, garante
resultados de alta precisão.
Descrição dos tipos básicos
C-XSC provê os tipos de dados numéricos simples como real, interval, complex e
cinterval. Cada um com suas próprias aritméticas, operadores relacionais e funções aritméticas padrão. Todos os operadores aritméticos pré-definidos fornecem resultados com
uma precisão de pelo menos 1 ulp(unidade na última casa decimal), desta forma é possível ter a máxima precisão na computação científica nos seus tipos.
O arredondamento dos operadores aritméticos pode ser controlado usando os tipos
interval e cinterval. Funções estão disponíveis para todas as combinações matematicamente úteis. Constantes literais podem ser convertidas com a máxima exatidão. Todas as
funções matemáticas padrão para os tipos de dados numéricos podem ser chamados por
seus nomes genéricos e fornecem resultados com garantia de alta precisão para argumentos arbitrários admissíveis.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
52
Os tipos em C-XSC são definidos da seguinte forma:
Real: De acordo com [C-XSC 2010], a aritmética de C-XSC é baseada no padrão
IEEE para aritmética binária de ponto-flutuante. O tipo de dados real consiste de todos
os tipos de ponto-flutuante e valores especiais especificados pelo padrão para números de
ponto-flutuante com mantissa de tamanho duplo. Portanto, um número do tipo real tem
64-bit, e a base b do sistema de ponto-flutuante, R = R(b, l, emin , emax ), é 2.
Se o compilador de C de um computador não está conforme o padrão, o tipo real utiliza sua própria aritmética IEEE de ponto flutuante. Portanto, a introdução de um novo
tipo de dados é necessário para que se tenha a portabilidade.
Estrutura: Um esboço de um ponto-flutuante é observado na Figura abaixo:
Figura 3.3: Formato de um ponto-flutuante
O bit mais significativo o bit de sinal e é denotado por s. Se ele é um, o número de
ponto-flutuante não zero é negativo, caso contrário é positivo. Os outros 63 bits são divididos entre a mantissa e o expoente.
Mantissa: O tamanho da mantissa, l, de um número real contém 53 bits. O bit 53 não
é explicitamente armazenado. Este valor depende da normalização ou desnormalização na
representação de um ponto-flutuante. Com este tamanho de mantissa, números decimais
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
53
com um máximo de 15 dígitos fracionários podem ser representados com alta exatidão.
Uma vez que um formato binário de ponto-flutuante é usado, é impossível armazenar todos os números decimais precisamente. No entanto, pode-se ter constantes decimais com
arredondamento controlado dentro de uma variável do tipo real.
Expoente: O expoente e de um ponto-flutuante é armazenado em um campo de 11
bits. Um valor de 1023 é subtraído do valor armazenado para obter o valor do expoente real. Isto produz emin = −1022 e emax = 1023. Convertendo para o sistema decimal
−308 ≤ e ≤ 308.
Complex: Este tipo é utilizado para armazenar números complexos z = x + iy ∈ C,
√
onde x denota a parte real, y a parte imaginária e i denota a unidade imaginária −1.
Interval: Este tipo é utilizado para representar intervalos sobre os números reais de
ponto-flutuante:
[a] = [a, a] = {x ∈ R|a ≤ x ≤ a ∈ R}
ou seja, a representa o conjunto de todos os números fechados entro dos limites
a, a ∈ R. A notação a o limite inferior e a denota o limite superior do intervalo [a].
Cinterval: Este tipo de dado é utilizado para armazenar complexos intervalares. Eles
são definidos como retângulos da forma z = [x] + i[y] ∈ C, onde a parte real [x] ∈ C e a
parte imaginária [y] ∈ C, com partes paralelas aos eixos no plano complexo, como indica
a Figura 3.4.
Figura 3.4: Complexo Intervalar [3.0,4.5] + i[1.0,2.0]
Dotprecision: Os tipos dotprecision, idotprecision, cdotprecision e cidotprecision são
baseados nos tipos de dados real, interval, complex e cinterval respectivamente. Variáveis
destes tipos permitem a representação exata de produtos de dois números arbitrários e a
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
54
soma exata de um número arbitrário de tais produtos em um acumulador dotprecision, ou
seja, em um formato de ponto fixo de tamanho adequado.
Subarrays de vetores e matrizes
C-XSC provê uma notação especial para manipular subarrays de vetores e matrizes.
Subarrays são partes arbitrárias retangulares de arrays. Os operadores pré-definidos também podem ser usados como operadores em subarrays. Um subarray de um vetor ou
matriz é acessado usando os operadores ( ) ou [ ]. O operador ( ) especifica um subarray
de um objeto do mesmo tipo do objeto original.
Avaliação de expressões com alta precisão
Quando são avaliadas expressões aritméticas, a precisão desenvolve um papel decisivo em muitos algorítimos numéricos. Até mesmo se todos os operadores aritméticos e
funções padrões sejam de precisão máxima, expressões compostas de vários operandos
e funções necessariamente não fornecem resultados com precisão máxima. Então, foram
desenvolvidos métodos para avaliar expressões numéricas com alta precisão e matematicamente garantida.
Um tipo especial destas expressões é chamado de ’dot product expressions’, que são
definidas como somas de expressões simples. Cada expressão simples possui uma variável, uma constante ou o produto simples de dois objetos. A variável pode ser do tipo
escalar, vetor ou matriz. Somente os operadores matematicamente relevantes são permitidos na adição e multiplicação. O resultado de uma expressão será um escalar, vetor ou
matriz.
Para obter uma avaliação com precisão de 1 ulp, C-XSC fornece os tipos de dados
de precisão dotprecision, cdotprecision, idotprecision e cidotprecision, citados anteriormente.
Aritmética dinâmica de múltipla precisão
Além das classes real e interval, em C-XSC existem classes dinâmicas de maior precisão ou reais longos (I_real) e intervalo longo (I_interval), além de vetores e matrizes
dinâmicos, com toda a aritmética, operadores relacionais e funções padrões de múltiplaprecisão.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
55
Entrada e saída em C-XSC
Usando o conceito de fluxo e de sobrecarga dos operadores << e >> de C++, CXSC fornece arredondamento e controle de formatação durante a Entrada/Saída (I/O)
para todos os novos tipos de dados, até para os tipos dotprecision e precisão múltipla.
Os parâmetros de I/O assim como no arredondamento direcionado, também usam a sobrecarga dos operadores de I/O para manipular os dados de I/O. Se um novo conjunto
de parâmetros de I/O está sendo usado, as definições dos parâmetros antigos podem ser
salvos numa pilha interna. Novos valores de parâmetros podem então serem definidos.
Depois de usar as novas definições, as antigas podem ser restauradas da pilha.
Erro de manipulação
C++ fornece características intrínsecas de segurança como checagem de tipo e funções
prototipadas. C-XSC dá suporte a características adicionais para segurança na programação como uma checagem do índice dos vetores e matrizes e checagem dos erros numéricos
como overflow, underflow, perda de exatidão, argumentos ilegais, entre outros. C-XSC
provê ao usuário várias possibilidades de modificação para manipular as reações do erro
de manipulação.
Biblioteca com rotinas para a resolução de problemas
A biblioteca para resolução de problemas de C-XSC é uma coleção de rotinas para
problemas de análises numérica padrão produzindo resultados garantidos de alta precisão.
As seguintes áreas estão cobertas:
•
•
•
•
•
•
•
Avaliação de zeros de polinômios;
Inversão de matrizes, sistemas lineares;
Autovalores e autovetores;
Transformações rápidas de Fourier;
Zeros de uma equação não-linear;
Sistemas de equações não-linear;
Problemas de valores iniciais em equações diferenciais ordinárias.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
3.10
56
JAVA-XSC
A medida que novas linguagens foram sendo desenvolvidas, surgiu a necessidade de
implementação de uma ferramenta de computação numérica específica para tais linguagens. Isto em conjunto com o sucesso das linguagens XSC motivaram o desenvolvimento
da JAVA-XSC8 , que é uma biblioteca baseada nas linguagens XSC. Um dos grandes atrativos em JAVA é a sua independência de plataformas e a sua grande utilização em dispositivos móveis.
3.10.1
A Linguagem de Programação JAVA
Em JAVA há a presença de máquinas virtuais que são implementadas, através de software, executando programas como se fosse um computador real. Desta forma os programas JAVA são compilados, convertendo os bytecodes em código executável de máquina.
Sendo assim, não há em JAVA qualquer referência específica de hardware.
As principais características da linguagem JAVA são:
Orientada a objetos: Tudo em JAVA pode ser tratado como um objeto. Seus programas são organizados em classes, que ao serem instanciadas produzem estes objetos.
Distribuído: JAVA apresenta uma grande biblioteca de rotinas para serem utilizadas
facilmente com protocolos TCP/IP como por exemplo o HTTP. Programas JAVA podem
abrir e acessar objetos através da rede com a mesma facilidade que os programadores
usam quando acessam um sistema de arquivo local.
Compilado e interpretado: Os aplicativos em JAVA são compilados e interpretados
ao mesmo tempo. Ao ser compilado é gerado um código binário, bytecode, com extensão
.class, sendo então executado.
Independente de arquitetura: Com a utilização da máquinas virtuais, JAVA torna
seus aplicativos independentes de hardware, fazendo com que esta linguagem seja portável.
8 http://www.dimap.ufrn.br/
java-xsc
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
57
Multitarefa: JAVA pode construir aplicações com múltiplos eventos. Desta forma é
possível executar diversos segmentos de códigos simultaneamente.
Dinâmica: A linguagem de programação JAVA foi projetada para se adaptar ao meio
envolvido. É possível fazer uma conexão com bibliotecas não nativas de forma totalmente
dinâmica.
Robusta: A JAVA escreve programas que são confiáveis em uma variedade de hipóteses. Ela coloca bastante ênfase no princípio de checar possíveis problemas e eliminar
situações inclinadas para a ocorrência de erros.
Segurança: Devido sua característica de ser distribuída, JAVA trata muito bem a
questão da segurança. Ela possibilita o desenvolvimento de sistemas que estejam livres
de adulterações e de vírus.
Simples: JAVA é uma linguagem fácil de ser manuseada e bastante intuitiva. Foi desenvolvida de forma a ficar semelhante a C++, com o intuito de ser bem aceita no mundo
do desenvolvimento OO, mas não herdando suas complexidades.
Compacta: Por ocupar pouco espaço na memória, JAVA permite o desenvolvimento
de aplicativos para palmtops e celulares.
3.10.2
Desenvolvimento da Biblioteca
Diante de tantas vantagens, o Departamento de Informática e Matemática aplicada da
Universidade Federal do Rio Grande do Norte desenvolveu uma biblioteca de suporte a
computação de alta exatidão para a linguagem Java, esta foi denominada de JAVA-XSC.
JAVA-XSC foi desenvolvida para trabalhar com operações intervalares e foi agrupada em
módulos de acordo com a natureza de suas operações [Dutra 2000], conforme segue:
Operações Básicas: Este módulo contém a definição do intervalo real e as operações
aritméticas de adição, subtração, multiplicação e divisão, que servem de base a todos os
demais módulos.
Funções entre conjuntos: Neste módulo são apresentados métodos que tratam de
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
58
operações como intersecção, união e união convexa entre intervalos.
Funções geométricas: Aqui se encontram as funções que calculam particularidades
geométricas dos intervalos, como por exemplo distância, diâmetro e ponto médio.
Funções elementares: São funções elementares tais como raiz quadrada, logaritmo,
exponencial, entre outras.
Funções trigonométricas: São funções específicas, como seno, cosseno, tangente, as
hiperbólicas, entre outras.
Funções de transferência e constantes: Este módulo apresenta funções que convertem reais ou inteiros em intervalos e vice-versa. Aqui também encontra-se funções que
são capazes de recuperar os limites inferior e superior de um intervalo.
JAVA-XSC necessitava de alguns ajustes e a criação de novos módulos que não foram
desenvolvidos inicialmente, tais como módulos que venham a trabalhar com aritmética
intervalar complexo e a introdução de um mecanismo de arredondamento direcionado.
3.10.3
Pacote IAMath
Este pacote, Interval Arithmetic Mathematics, foi baseado na classe que trabalha com
números reais em JAVA (JAVA.lang.Math). IAMath contém três classes básicas:
1 - IAException: É uma classe utilizada por alguns métodos quando há a necessidade de parar o programa caso algum erro tenha ocorrido ou em alguma situação fora do
comum.
2 - RealInterval: Esta classe representa o intervalo de números reais. Ela define as
estruturas do intervalo e contém as seguintes variáveis, construtores e métodos:
Atributos:
double lo: armazena o extremo inferior do intervalo;
double hi: armazena o extremo superior do intervalo;
string Err: armazena erros que ocorrem durante a execução da classe IAMath.
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
59
Construtores:
RealInterval(double,double): Constrói o intervalo real a partir de duas variáveis que contém os extremos inferior e superior;
RealInterval(double): Constrói um intervalo degenerado ( lo = hi), a partir de apenas uma
variável.
RealInterval(): Constrói um intervalo contendo como extremo inferior - infinito e + infinito.
Método: Nesta classe há o método toString que imprime o intervalo com colchetes e
o ponto e vírgula.
IAMath: esta classe contém 52 métodos para executar operações e funções intervalares baseados no módulo I_ARI da linguagem PASCAL-XSC.
3.10.4
Modo de Arredondamento
Como linguagem JAVA não provê suporte nativo ao arrendamento direcionado nas
operações de ponto flutuante e a matemática intervalar necessita desse arredondamento
para garantir a corretude dos resultados, em JAVA-XSC foi preciso adotar o inflacionamento nos extremos, que embora atenda o princípio da corretude, em alguns casos provoca o alargamento desnecessário dos limites do intervalo.
JAVA arredonda para o número par mais próximo apesar da biblioteca JAVA-XSC
necessitar dos arredondamentos para cima e para baixo para o aumento da exatidão das
operações intervalares.
A solução seria fazer com que JAVA pudesse dar suporte ao arredondamento direcionado. Com esta motivação surgiu a biblioteca JFloat, desenvolvida por José Frank Viana
da Silva, em sua dissertação de mestrado pela Universidade Federal do Rio Grande do
Norte. JFloat é uma biblioteca escrita em JAVA que implementa o padrão IEEE-754.
Esta biblioteca suporta todos os modos de arredondamento exigidos pelo padrão e suas
características principais são [da Silva 2007]:
• Compatibilidade entre versões Java: Qualquer computador habilitado com Java
pode usar a biblioteca;
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
60
• Independência de máquina: JFloat representa números em ponto-flutuante com variáveis internas, sendo assim, assegura o mesmo comportamento em qualquer plataforma;
• Precisão: A versão atual trabalha somente com precisão simples;
• Operações: Estão disponíveis as operações de adição, subtração, multiplicação,
divisão, raiz quadrada, resto e comparação entre números;
• Funções de conversão;
• Disponíveis todos os modos de arredondamento: JFloat oferece todos os modos de
arredondamento requeridos pelo padrão IEEE-754;
• Suporte a NaN e flags de exceção;
• Coleta de lixo mínima: Para evitar a limpeza de memória, as funções da biblioteca
evitam alocação de objetos, o que contribui para velocidade e diminuição dos gastos
de memória.
O problema da ausência em JAVA de inteiros não sinalizados para a implementação
de ponto flutuante de precisão simples foi sanado por JFloat. Cada variável inteira nãosinalizada (32 bits de largura) é armazenada nos bits menos significantes de uma variável
inteira longa sinalizada (64 bits de largura). Os 32 bits mais significantes da variável longa
sinalizada sempre é zero. Apesar disso, o problema tem sido solucionado para ponto flutuante de precisão simples, o mesmo é ainda um limitante quando se pensa em dotar a
biblioteca com ponto flutuante de precisão maior que a simples.
3.11
Resumo Comparativo
Como pode-se perceber na Tabela 3.7, poucas das ferramentas citadas trabalham com
funções complexas intervalares. Sendo assim uma motivação para a construção do módulo complexo intervalar proposto neste trabalho.
Tabela 3.6: Modos de Arredondamento
Número
Descrição
1
Para o mais próximo
2
Para o zero
3
Em direção ao infinito positivo
4
Em direção ao infinito negativo
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
5
Distante do zero
6
Mais próximo de x
7
Arredondamento direcionado simulado
61
Tabela 3.7: Resumo comparativo entre as ferramentas
Linguagem
Suporte à intervalos
Suporta à complexos
Modo de arredondamento
CLN
Não
Sim
1, 3, 4 e 6
GMP
Não
Não
1a5
MPFR
Não
Não
1a5
MPFI
Sim
Não
3e4
MPC
Não
Sim
1a4
INTLIB
Sim
Não
7
COMMONS MATH
Não
Sim
1a4
PASCAL-XSC
Sim
Sim
1a4
C-XSC
Sim
Sim
1a4
JAVA-XSC
Sim
Não
1a4
Apesar das bibliotecas que implementam números complexos (CLN, MPC, PascalXSC e C-XSC) possuírem uma quantidade considerável de funções complexas, as mesmas não implementam funções específicas para se trabalhar com números complexos na
forma polar, não apresentando assim métodos de conversão para ambas as formas, fazendo com que o módulo Complexo do JAVA-XSC se torne uma ferramenta mais completa, já que a mesma implementa métodos específicos para manusear um complexo polar
além de apresentar funções de conversão.
3.12
Considerações
A necessidade de resultados mais precisos está presente em todas as áreas científicas. Por este motivo surgiram inúmeros softwares que utilizam algoritmos intervalares
CAPÍTULO 3. ALGUMAS FERRAMENTAS PARA CÁLCULO NUMÉRICO
62
[Malavazi 2004], como por exemplo, Mathemática e MatLab (IntLab).
Surgiram também as linguagens XSC, tais como PASCAL-XSC e C-XSC, que são
linguagens que suportam intervalos e que proveem características indispensáveis para o
desenvolvimento de alguns softwares numéricos e aplicações científicas. Além disso existem várias bibliotecas intervales conforme [Macedo 2004] e [de Mesquita 2004].
Este Capítulo apresentou algumas ferramentas e linguagens com suas características,
tipos numéricos e modos de arredondamento implementados. No final do capítulo foi
feito uma comparação entre tais ferramentas, onde pode-se observar como elas atendem
a necessidade do usuário.
Capítulo 4
Módulos Complexo e Complexo
Intervalar
4.1
Objetivos
Esta dissertação tem por objetivo desenvolver na linguagem de programação JAVA
dois módulos adicionais para a ferramenta JAVA-XSC, que é na verdade uma extensão
cuja característica principal é facilitar aplicações da computação científica. Algumas funçãos tiveram sua implementação baseadas na biblioteca C-XSC. Os módulos foram gerados a partir do desenvolvimento da caracterização matemática das operações e funções
complexas e complexas intervalares. Foram acrescentadas novas funções complexas em
JAVA-XSC não existentes na biblioteca C-XSC, como por exemplo a função de conversão
da forma algébrica para polar e vice-versa.
Para testar e verificar estes módulos, foi feita uma comparação entre a mesma e os
resultados obtidos pela biblioteca C-XSC. Foram executados um conjunto de dados em
ambas as ferramentas e a partir daí pôde-se observar a amplitude dos intervalos gerados.
Existem diversas vantagens em acrescentar à JAVA uma computação de complexos
e complexos intervalares. Uma característica, dentre as mais importantes, é de ser uma
linguagem de programação totalmente independente de plataforma. Linguagens onde há
dependência de plataforma geralmente conduzem a resultados diferentes, já que diferentes plataformas possuem diferentes precisões. Além disso, aplicativos desenvolvidos em
JAVA, geralmente, ocupam pouco espaço na memória, podendo ser utilizada por dispositivos móveis, tais como celulares, palmtops, smartphones e tablets. Sendo assim, com o
uso dos complexos intervalares em seu celular, um engenheiro pode realizar cálculos de
um projeto diretamente em campo.
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
4.2
64
Os Módulos
Neste trabalho foram desenvolvidos dois módulos adicionais; a saber: Complex (Complexo) e Cinterval (Complexo Intervalar). As subseções a seguir irão apresentar tais módulos com suas características, variáveis, construtores e métodos.
4.2.1
Módulo Complexo
Esta subseção introduz a classe Complex (código fonte em Anexo C) que representa
e define a estrutura dos números complexos e apresentando suas variáveis, construtores e
métodos. Um exemplo de aplicação desta classe também será visto nesta seção.
Variáveis
float a: armazena a parte real de um número complexo;
float b: armazena a parte imaginária de um número complexo;
float modulo: armazena o módulo de um número complexo;
float angulo: armazena o ângulo de um número complexo;
char forma: armazena a representação do número complexo, ou seja, algébrica ou
polar.
Construtores
1. Complex(float, float, char): Constrói um número complexo a partir da parte real
(ou módulo), da parte imaginária (ou ângulo) e da sua representação (algébrica ou polar).
2. Complex(float, char): Constrói um número complexo a partir da parte real e da sua
representação. Neste caso a parte imaginária é igual a zero.
3. Complex(char): Constrói um número complexo onde suas partes real (ou módulo)
e imaginária (ou ângulo) são iguais a zero.
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
65
Métodos
A Tabela 4.1 apresenta todos os métodos implementados na classe Complex.
Tabela 4.1: Métodos da classe Complex
Método
Retorno
Função
add
Complex
Calcula a soma de dois números Complexos
adddown
Complex
Calcula a soma de dois números Complexos com arredondamento para baixo
addup
Complex
Calcula a soma de dois números Complexos com arredondamento para cima
sub
Complex
Calcula a subtração de dois números Complexos
subdown
Complex
Calcula a subtração de dois números Complexos com
arredondamento para baixo
subup
Complex
Calcula a subtração de dois números Complexos com
arredondamento para cima
mult
Complex
Calcula a multiplicação de dois números Complexos
multdown
Complex
Calcula a multiplicação de dois números Complexos
com arredondamento para baixo
multup
Complex
Calcula a multiplicação de dois números Complexos
com arredondamento para cima
multEscalar
Complex
Calcula a multiplicação de um número Complexo por
um escalar
div
Complex
Calcula a divisão de dois números Complexos
divdown
Complex
Calcula a divisão de dois números Complexos com
arredondamento para baixo
divup
Complex
Calcula a divisão de dois números Complexos com
arredondamento para cima
conj
Complex
Calcula o conjugado de um número Complexos
norma
double
Calcula a norma de um número Complexo
modulo
double
Calcula o módulo de um número Complexo
setRe
Complex
Modifica o valor da parte real de um número Complexo
setIm
Complex
Modifica o valor da parte imaginária de um número
Complexo
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
66
seno
double
Calcula o seno de um número Complexo
cosseno
double
Calcula o cosseno de um número Complexo
conv
Complex
Converte um número Complexo da forma algébrica
para a forma polar e vice-versa
pot
Complex
Calcula a potência de um número Complexo elevado
an
sqrt
Complex
Calcula a raiz quadrada de um número Complexo
log
Complex
Calcula o logaritmo de um número Complexo
Neste módulo foram desenvolvidas funções que recebem como parâmetro complexos
na forma algébrica. Após o resultado podem ser convertidas para a forma polar. A única
função que recebe por parâmetro um complexo na forma polar é a função e conversão de
polar para algébrica. Para instanciar um objeto do tipo Complexo é necessário informar
três parâmetros. Na forma algébrica, o usuário informa a parte real, a parte imaginária
e o char “a” para reforçar que o número complexo está na forma algébrica. Já se for a
forma polar o usuário informa o módulo, o ângulo e o char “p” para reforçar que o número
complexo está na forma polar.
Por exemplo, um complexo na forma algébrica é criado da seguinte forma:
1
import ia_math . Complex ;
3
public class Testes {
5
public static void main ( String [] args ) {
7
Complex c= new Complex (5 ,7 , ’a ’); /* Instanciando o objeto */
System . out . println ("c = "+c);
/* c = 5.0 + i7 .0
*/
}
9
11
}
Um número complexo na forma polar é criado da seguinte forma:
1
import ia_math . Complex ;
3
public class Testes {
5
public static void main ( String [] args ) {
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
Complex c= new Complex (2 ,30 , ’p ’); /* Instanciando o objeto
*/
System . out . println ("c = "+c);
/* c = 2.0( cos 30.0 + i. sen 30.0)
*/
}
7
9
11
67
}
4.2.2
Módulo Complexo Intervalar
Esta subseção introduz a classe Cinterval (código fonte em Anexo D) que representa
e define a estrutura dos números complexos intervalares, na representação algébrica, e
contém as seguintes variáveis, construtores e métodos:
Variáveis
RealInterval r1: armazena o intervalo contendo a parte real de um número complexo
intervalar;
RealInterval r2: armazena o intervalo contendo a parte imaginária de um número
complexo intervalar;
Construtores
1. Cinterval(RealInterval, RealInterval): Constrói um número complexo intervalar
a partir de dois intervalos contendo suas partes real e imaginária.
2. Cinterval(RealInterval): Constrói um número complexo intervalar onde suas partes real e imaginária possuem o mesmo valor.
3. Cinterval (): Constrói um número complexo intervalar onde suas partes real e
imaginária são iguais a zero.
4. Cinterval(Complex): Constrói um número complexo intervalar onde sua parte real
é um intervalo obtido a partir da parte real de um número complexo e sua parte imaginária
é um intervalo obtido a partir da parte imaginária de um número complexo.
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
68
Métodos
Na classe Cinterval temos método toString que faz o layout do número complexo colocando o símbolo “+” entre as partes real e imaginária e o símbolo “i” na parte imaginária
e os colchetes para representar os intervalos. A Tabela 4.2 apresenta os métodos desenvolvidos na classe Cinterval.
Tabela 4.2: Métodos da classe Cinterval
Método
Retorno
Função
add
Cinterval
Calcula a soma de dois números Complexos intervalares
sub
Cinterval
Calcula a subtração de dois números Complexos intervalares
mult
Cinterval
Calcula a multiplicação de dois números Complexos
intervalares
div
Cinterval
Calcula a divisão de dois números Complexos intervalares
equals
Boolean
Verifica se dois Complexos intervalares são iguais ou
não
conj
Cinterval
Calcula o conjugado de um número Complexo intervalar
diam
Complex
Calcula o diâmetro de um número Complexo intervalar
mod
RealInterval
Calcula o módulo de um número Complexo intervalar
dist
double
Calcula a distância entre dois números Complexos intervalares
arg
RealInterval
Calcula o argumento de um número Complexo intervalar
mid
Complex
Retorna um número Complexo a partir de um Complexo intervalar
sqr
Cinterval
Calcula o quadrado de um número Complexo intervalar
exp
Cinterval
Calcula o exponencial de um número Complexo intervalar
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
69
power
Cinterval
Calcula a potência de um número Complexo intervalar elevado a n
ln
Cinterval
Calcula o logaritmo de um número Complexo intervalar
sqrt
Cinterval
Calcula a raiz quadrada de um número Complexo intervalar
sen
Cinterval
Calcula o seno de um número Complexo intervalar
cos
Cinterval
Calcula o cosseno de um número Complexo intervalar
sinh
Cinterval
Calcula o seno hiperbólico de um número Complexo
intervalar
cosh
Cinterval
Calcula o cosseno hiperbólico de um número Complexo intervalar
tan
Cinterval
Calcula a tangente de um número Complexo intervalar
cot
Cinterval
Calcula a cotangente de um número Complexo intervalar
tanh
Cinterval
Calcula a tangente hiperbólica de um número Complexo intervalar
coth
Cinterval
Calcula a cotangente hiperbólica de um número Complexo intervalar
asin
Cinterval
Calcula o arco seno de um número Complexo intervalar
asinh
Cinterval
Calcula o arco seno hiperbólico de um número Complexo intervalar
acos
Cinterval
Calcula o arco cosseno de um número Complexo intervalar
acosh
Cinterval
Calcula o arco cosseno hiperbólico de um número
Complexo intervalar
atan
Cinterval
Calcula o arco tangente de um número Complexo intervalar
acot
Cinterval
Calcula o arco cotangente de um número Complexo
intervalar
atanh
Cinterval
Calcula o arco tangente hiperbólico de um número
Complexo intervalar
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
acoth
4.3
Cinterval
70
Calcula arco cotangente hiperbólico de um número
Complexo intervalar
Comparação entre C-XSC e JAVA-XSC
Para realizar a comparação entre C-XSC e JAVA-XSC foi necessário executar um conjunto de dados nas duas ferramentas utilizando as mesmas entradas. Para tal foi gerado
mil números complexos intervalares aleatórios (Anexo E). A partir destes números, foi
executado, para cada um deles, as funções contidas em ambas as ferramentas.
Na comparação foi realizado o teste T Student, que, segundo [Pocinho 2009], tem por
objetivo comparar a quantidade da variabilidade devida às diferenças prevista nos resultados entre dois grupos. A Estatística T representa o tamanho da diferença entre as médias
para os dois grupos, tomando em consideração a variância total. Diante disto foi utilizada
a calculadora de teste T da GraphPad 1 para comparar cada intervalo gerado nas duas
ferramentas.
Para executar a comparação neste ferramenta é necessário informar dados em duas
colunas, como ilustra a Figura 4.1. No caso desta comparação, a primeira coluna recebeu
dados de C-XSC e a segunda coluna de JAVA-XSC.
Ao aplicar os dados na calculadora, em quase todas as funções testadas, a ferramenta
apresentou que a diferença entre as duas entradas (um intervalo de C-XSC e outro de
JAVA-XSC) é considerada não estatisticamente significante, sendo assim a saída de forma
geral são iguais na duas ferramentas.
A única função que mostrou diferença foi a divisão. De acordo com [Lohner & Wolff
1985], existem três formas distintas de representar a divisão de um número complexo
intervalar, uma delas utiliza aritimética de alta exatidão, que ainda não foi implementada
em JAVA-XSC. Daí que surge tal diferença.
1
http://www.graphpad.com/quickcalcs/ttest1.cfm?Format=C
CAPÍTULO 4. MÓDULOS COMPLEXO E COMPLEXO INTERVALAR
71
Figura 4.1: Interface gráfica da ferramenta GraphPad
4.4
Considerações
Diante da comparação feita entre as duas ferramentas utilizando o teste estatístico T
Student, é possível dizer que JAVA-XSC é comparável em qualidade a uma ferramenta já
consolidada, a C-XSC.
Os benefícios adicionais da ferramenta em estudo, é que a mesma apresenta métodos
não presentes no C-XSC, tais como as de conversão de um número complexo polar para
um complexo algébrico e vice-versa.
Capítulo 5
Conclusão
Ao falar-se em computação numérica, a forma como os dados são processados e apresentados se torna de suma importância, daí a preocupação com a exatidão desses cálculos
que é imprescindível para se obter uma solução satisfatória. Sendo assim, a matemática
intervalar, é uma perfeita abordagem para assegurar tal feito, uma vez que a análise de
erros já vem incluída no próprio resultado da computação.
JAVA-XSC surgiu como uma alternativa a mais para o desenvolvimento e aperfeiçoamento de softwares que necessitam de um cálculo numérico mais preciso, através do uso
da matemática intervalar. Esta biblioteca é composta por diversas funções que auxiliam o
usuário a desenvolver aplicativos mais eficientes e precisos. Neste trabalho foram desenvolvidos e apresentados dois módulos adicionais a JAVA-XSC, ambos relacionados com
os números complexos. O primeiro módulo trabalha com operações sobre os números
complexos. Já no segundo módulo foi feita uma junção entre o poder computacional da
matemática intervalar e os números complexos.
Ao realizar uma comparação com a C-XSC, uma ferramenta já consolidada, foi possível observar que ambas retornam valores semelhantes. Sendo assim, JAVA-XSC se torna
uma ferramenta computacional mais confiável.
Aliando as vantagens da linguagem de programação JAVA com o valor computacional da matemática intervalar e dos números complexos, os usuários agora possuem uma
ferramenta poderosa ao mesmo tempo que compacta e portável, fazendo com que aplicativos, como pro exemplo na área da engenharia, possam ser utilizados em dispositivos
móveis tais como smatphones e tablets.
Uma desvantagem de JAVA-XSC em relação há algumas ferramentas de cálculo nu-
CAPÍTULO 5. CONCLUSÃO
73
mérico, é o uso de inteiros sinalizados da linguagem de programação JAVA. Isso faz com
que a biblioteca apenas trabalhe com precisão simples, diferentemente da ferramenta GNP
onde o usuário escolhe a quantidade de bits destinada a precisão dos cálculos.
Outra atual desvantagem de JAVA-XSC, mais especificamente em relação a C-XSC,
é que a mesma ainda não possui uma aritmética de alta exatidão. De acordo com [Úrsula
Adriane Lisboa Fernandes 2001], a aritmética de alta exatidão possibilita que os cálculos
sejam efetuados com máxima exatidão, sendo assim, o resultado gerado difere do valor
exato no máximo em um arredondamento. Para se ter uma aritmética de alta exatidão são
necessários os seguintes requisitos:
• O uso de arredondamento direcionado (para baixo e para cima);
• As quatro operações aritméticas (+,-,*,/) com máxima exatidão e
• O produto escalar ótimo.
Em conjunto com a matemática intervalar, o uso da aritmética de alta exatidão gera
resultados confiáveis e com máxima exatidão, onde o resultado está contido em um intervalo cujos extremos diferem por apenas um arredondamento do valor real, pois os cálculos
intermediários são feitos em registradores específicos, de forma a simular a operação nos
reais, sendo o arredondamento para baixo e para cima feito apenas no final. JAVA-XSC
possui os dois primeiros requisitos citados anteriormente para se obter uma aritmética de
alta exatidão. Mas o terceiro ainda não foi implementado.
Como etapas futuras, existe a necessidade de se elaborarem módulos que venham a
trabalhar com:
•
•
•
•
•
Matrizes e vetores intervales;
Avaliação de zeros de polinômios;
Transformações rápidas de Fourier;
Sistemas de equações não-linear e
Produto escalar ótimo, um dos requisitos da aritmética de alta exatidão.
Outra sugestão de pesquisa, é desenvolver o tipo inteiro não sinalizado em Java, desta
forma seria possível reescrever a biblioteca JFloat para possuir múltiplas precisões. Uma
última proposta seria o estudo da viabilidade de se implementar outras aritméticas complexas intervalares, tais como a circular e a setorial, além da implementação de outras
aritméticas sobre os intervalos reais, como aritmética modal, aritmética afim e suas respectivas extensões para complexos.
Referências Bibliográficas
Alefeld, Gotz & Junger Herberger (1983), Introduction to Interval Computations, Academic Press, Ney York.
Baumgart, John K (1969), ‘Tópicos de história da matemática para uso em sala de aula
(álgebra)’, São Paulo, Editora Atual .
Blomquist, F., W. Hofschuster, W. Kramer & M. Neher (2005a), ‘Complex interval functions in c-xsc’, Wissenschaftliches Rechnen/Softwaretechnologie .
Blomquist, F., W. Hofschuster, W. Kramer & M. Neher (2005b), ‘Complex interval functions in c-xsc’, Wissenschaftliches Rechnen/Software Technologie .
Boyer, C. (1974), ‘História da matemática’, São Paulo, Edgar Blücher .
Brent, Richard P. & Paul Zimmermann (2009), ‘Modern computer arithmetic’, Creative
Common .
C-XSC, Team (2010), ‘Class reference’. [Online; accessed 06-Maio-2011].
URL:http://www2.math.uni-wuppertal.de/~xsc/xsc/cxsc/apidoc/html/
classcxsc_1_1real.html
Candu, Yves, Tarek Raissi & Nacim Ramdani (2006), ‘Complex interval arithmetic using
polar form’, Reliable Computing .
Cerri, Cristina & Martha S. Monteir (2001), ‘História dos números complexo’, CAEM Centro de Aperfeiçoamento de Ensino de Matemática .
da Justa Medeiros, Luiz Adauto (1972), Funções de uma Variável Complexa, Editora
McGraw-Hill do Brasil e Editora da Universidade de Brasília, São Paulo, SP.
da Silva, José Frank Viana (2007), Jfloat: Uma biblioteca de ponto flutuante para a linguagem java com suporte a arredondamento direcionado, Dissertação de mestrado,
Universidade Federal do Rio Grande do Norte. UFRN. PPGSC, Natal, RN.
74
REFERÊNCIAS BIBLIOGRÁFICAS
75
de Mesquita, Marcos Paulo (2004), ‘Matemática intervalar: princípios e ferramentas
c-xsc’. [Online; accessed 11-Abril-2011].
URL:http://www.comp.ufla.br/curso/ano2002/Matematica_intervalar_
principios_e_ferramentas_C_XSC.pdf
Dias, Cláudio Carlos & Neura Maria Dantas (2006), Geometria analítica e números complexos. Funções complexas elementares, EDUFRN, Natal, RN.
Dutra, José Enéas Montenegro (2000), Java-xsc: Uma biblioteca java para computações intervalares, Dissertação de mestrado, Universidade Federal do Rio Grande
do Norte. UFRN. PPGSC, Natal, RN.
Enge, Andreas, Mickaël Gastineau, Philippe Théveny & Paul Zimmermann (2011), ‘mpc
— a library for multiprecision complex arithmetic with exact rounding’, INRIA .
http://mpc.multiprecision.org/.
Ezequias (1998), ‘Para que servem os números complexos?’. [Online; accessed 15Setembro-2011].
URL:http://www.profezequias.net/complexo.html
Felzenszwalb, Bernardo (1979), ‘Álgebras de dimensão finita’, Rio de Janeiro, IMPA CNPq .
Fousse, Laurent, Guillaume Hanrot, Vincent Lefèvre, Patrick Pélissier & Paul Zimmermann (2007), ‘Mpfr: A multiple-precision binary floating-point library with correct
rounding’, ACM Trans. Math. Softw .
Garrozi, Cícero & Jones Albuquerque (2009), ‘A aritmética intervalar como ferramenta
para a solução de problemas de computação científica’, UFLA - Universidade Federal de Lavras .
Granlund, Torbjorn & the GMP development team (2010), ‘The gnu multiple precision
arithmetic library’, A GNU Manual .
Haible, Bruno (2005), ‘Cln, a class library for numbers’, Manual CLN .
Hanrot, Guillaume, Vincent Lefèvre, Patrick Pélissier, Philippe Théveny & Paul Zimmermann (2011), ‘Gnu mpfr: The multiple precision floating-point reliable library’, A
MPFR Manual .
REFERÊNCIAS BIBLIOGRÁFICAS
76
Hofschuster, Werner & Walter Krämer (2010), ‘C-xsc 2.0. library for extended scientific
computing’, Bergische Universität Wuppertal, Scientific Computing/Software Engineering .
Kearfott, Baker, Milind Dawande, Kaisheng Du & Chenyi Hu (1994), ‘Intlib: A portable
fortran-77 elementary function library’, ACM Trans. Math. Software .
Kearfott, R. (1996), ‘Rigorous global seach: Continuous problems’, Dordrecht: Kluwer
Academics Publishers .
Kearfott, R. Baker (1995), ‘Usage notes for intlib and fortran 90 access to it’, University
of Southwestern Louisiana .
Klatte, R., U. Kulish, M. Neaga, D. Ratz & Ch. Ullrich (1999), PASCAL-XSC. Language
Reference with examples, Spring-Verlag, Alemanha.
Lohner, R. & J. Wolff (1985), ‘Complex interval division with maximum accuracy’, Institute for Applied Mathematics, University of Karlsruhe .
Lohner, R., J. Wolff & V. Gudenberg (1985), ‘Complex interval division with maximum
accuracy’, Institute for Applied Mathemathics, University of Karlsruhe .
Macedo, F. Wolfango (2004), ‘Análise de erros’. [Online; accessed 11-Abril-2011].
URL:http://home.utad.pt/~wmacedo/publicacoes/excerto_analise_
erros.PDF
Malavazi, Mazílio Coronel (2004), ‘Aritimética intervalar: Histórico, topologia e algoritmos’, Universidade do Estado de Mato Grosso, Curso de Licenciatura Plena em
Ciência da Computação .
Menochi, Gisele (2004), ‘Números complexos’. [Online; accessed 05-Abril-2011].
URL:http://www.somatematica.com.br/coluna/gisele/29032004.php
Moore, Ramon E. (1966), ‘Interval analysis’, Englewood Cliffs: Prentice-Hall .
Muller, Jean-Michel, Nicolas Brisebarre, Florent de Dinechin, Claude-Pierre Jeannerod,
Vincent Lefèvre, Guillaume Melquiond, Nathalie Revol, Damien Stehlé & Serge
Torres (2009), Handbook of Floating-Point Arithmetic, Birkhäuser, Boston.
Petkovic, Miodrag S. & Ljiljana D. Petkovic (1998), Complex Interval Arithmetic and Its
Applications, Wiley-VCH, Berlin.
REFERÊNCIAS BIBLIOGRÁFICAS
77
Revol, N. & F. Rouillier (2002), ‘Motivations for an arbitrary precision interval arithmetic
and the mpfi library’, Reliable Computing pp. 23–25.
Revol, Nathalie (2002), ‘Mpfi 1.0’. [Online; accessed 29-Abril-2011].
URL:http://perso.ens-lyon.fr/nathalie.revol/mpfi.html
Úrsula Adriane Lisboa Fernandes (2001), Núcleo de aritmética de alta exatidão da biblioteca intervalar libavi.al, Dissertação de mestrado, Universidade Federal do Rio
Grande do Sul, Curso de Pós-Graduação em Ciência da Computação, Porto Alegre.
Santiago, Regivan H. Nunes, Benjamín Callejas Bedregal & Benedito Melo Acioly
(2006), ‘Formal aspects of correctness and optimality of interval computations’,
Formal Aspects of Computing .
Santos, J. M. (2001), Em direção a uma representação para equações algébricas: uma lógica equacional local, Dissertação de mestrado, Universidade Federal do Rio Grande
do Norte. UFRN. PPGSC, Natal, RN.
team, The MPC (2011), ‘The multiple precision complex library’, A MPC Manual .
Wiethoff, Andreas (1996), ‘C-xsc. a c++ class library for extended scientific computing’,
Institut für Angewandte Mathematik. Universität Karlsruhe .
Wikipedia (2008), ‘Rounding’. [Online; accessed 14-Junho-2011].
URL:http://en.wikipedia.org/wiki/Rounding#Types_of_rounding
Anexo A
Modos de Arredondamento
Este Anexo foi baseado em [Wikipedia 2008].
Arredondamento é a forma de simplificar números, onde é feita a redução do número
mas ao mesmo tempo tentando manter o seu valor aproximado. O resultado se torna menos preciso, mas por outro lado, torna-se mais fácil de ser manuseado. O arredondamento
é quase inevitável em muitos cálculos, principalmente quando dividimos dois números
inteiros ou quando computamos funções matemáticas, tais como raízes quadradas e logarítmos. Os erros de arredondamento se acumulam geralmente, e em certos casos mal
condicionados, podem induzir um resultado sem sentido.
A.1
Tipos de Arredondamento
Geralmente problemas de arredondamento envolvem:
• Aproximação de um número irracional para uma fração, por exemplo π para 22
7;
• Aproximação de uma fração com expansão decimal periódica em uma fração decimal finita, por exemplo 53 para 1, 6667;
• substituição de um número racional por uma fração de menor numerador e denominador, por exemplo, 3122/9417 para 03/01;
• substituição de um número fracionário decimal por um com menos dígitos, por
exemplo, 2,1784 dólares, 2,18 dólares;
• substituição de um número inteiro decimal por um número inteiro, com mais zeros
à direita, por exemplo, 23.217 pessoas, 23.200 pessoas, ou, em geral,
• substituição de um valor por um múltiplo de um determinado montante, por exemplo, 27,2 segundo por 30 segundos (um múltiplo de 15).
ANEXO A. MODOS DE ARREDONDAMENTO
A.2
79
Arredondamento com o Incremento Pré-Determinado
O tipo mais comum de arredondamento é arredondar para um número inteiro ou para
um múltiplo inteiro de algum incremento, como o arredondamento para todo décimos de
segundos, centésimos de dólar, entre outros.
Em geral, o arredondamento para um número x de um múltiplo de algum m incremento especificado inclui as seguintes etapas:
1. Dividir x por m, com o resultado igual a y;
2. Arredondar y para um valor inteiro, chamando de q;
3. Multiplicar q por m para obter o valor arredondado z.
z = round(x, m) = round(x/m).m
Por exemplo, arredondando x = 5, 1236 centavos de reais para inteiro (ou seja para
um múltiplo de 0,01) ficaria da seguinte forma: y = x/m = 5, 1236/0, 01 = 512, 36. Arredondando y para um número inteiro q = 513 e assim z = q ∗ m = 513 ∗ 0, 01 = 5, 13.
O incremento m é normalmente uma fração finita.
A.3
Arredondamento para Inteiro
A forma mais simples de arredondamento é a substituição de um número arbitrário
por um número inteiro. Todos os seguintes modos de arredondamento são implementações concretas da função round vista anteriormente.
Existem diversas maneiras de arredondar um número y para um número q. As mais
comuns são:
• Arredondamento para baixo (ou arredondamento para o infinito negativo): q é o
maior inteiro que não exceda y, ou seja, q = f loor(y) = byc = −d−ye;
• Arredondamento para cima (ou arredondamento para o infinito positivo): q é o
menor inteiro que não é menor que y, ou seja, q = ceil(y) = dye = −b−yc;
ANEXO A. MODOS DE ARREDONDAMENTO
80
• Arredondamento para o zero: q é a parte inteira de y sem os dígitos de sua fração,
ou seja, q = truncate(y) = sgn(y)b|y|c = −sgn(y)d−|y|e;
• Arredondamento distante do zero: se y é um inteiro, q recebe y. Caso contrário, q é
um inteiro mais proximo de zero, onde y fica entre zero e q, ou seja sgn(y)d|y|e =
−sgn(y)b−|y|c;
• Arredondamento para o mais próximo: q é o número inteiro mais próximo de y,
seguindo algumas regras de desempate que serão vistas a seguir.
Os primeiros quatro métodos são chamados de arredondamento direcionado.
A.4
Regras de Desempate
O arredondando um número y para o número inteiro mais próximo exige algumas
regras de desempate para os casos em que y está exatamente entre dois inteiros, ou seja,
quando a parte fracionária de y é exatamente 0,5, vejamos a seguir algumas destas regras:
Arredondamento para cima
Esta regra é amplamente utilizada. Aqui os valores de meio caminho de y são sempre
arredondados para cima. Se a fração de y é exatamente 0,5, então q = y + 0, 5.
q = [y + 0, 5] = −[y − 0, 5]
Por exemplo, por esta regra o valor 12,5 é arredondado para 13, mas -12,5 é arredondado para -12.
Se não fosse frações de 0,5, os erros introduzidos pelo método de arredondamento
para o mais próximo seria simétrico: para cada fração que é arredondada para cima
(como 0,328), há uma fração complementar (ou seja 0,672) que fica arredondada para
baixo. Quando há arredondamento de um grande conjunto de números aleatórios com
partes fracionárias, esses erros de arredondamento que estatisticamente compensam-se
mutuamente e o valor (médio) esperado dos números arredondados são iguais ao valor
esperado do número original.
Contudo, as regras de arredondamento para cima não são simétricas. Como as frações
são exatamente 0,5 obtem-se então sempre arredondamento para cima. Esta assimetria
introduz um viés positivo nos erros de arredondamento. Por exemplo, se a fração de y
é composto por três dígitos decimais aleatórios, então o valor esperado de q será 0,0005
ANEXO A. MODOS DE ARREDONDAMENTO
81
superior ao valor esperado de y. Por esta razão, arredondamento para o mais próximo
com a regra de arredondamento para cima é também conhecida como arredondamento
assimétrico.
Uma das razões para arredondar usando de 0,5 é que apenas um dígito precisa ser
examinado. Ao ver 17,50000, por exemplo, os três primeiros dígitos, 17.5, determina
que o valor seria arredondado para 18. Se a regra oposta for usada (arredondamento
para baixo), então todas as casas com zeros decimais precisariam ser examinadas para
determinar se o valor é exatamente 17,5.
Arredondamento para baixo
Esta regra é o oposto da regra anterior. Se a fração de y é exatamente 0,5, então
q = y − 0, 5.
q = [y − 0, 5] = −[−y + 0, 5]
Por exemplo, por esta regra o valor 12,5 é arredondado para 12, mas -12,5 é arredondado para -13. Esta regra não é simétrica, as frações que são exatamente 0,5 sempre serão
arredondadas para baixo.
Arredondamento longe de zero
Se a fração de y é exatamente 0,5, então q = y + 0, 5 se y é positivo e q = y − 0, 5 se y
é negativo.
q = sgn(y)[|y| + 0, 5] = −sgn(y)[−|y| − 0, 5]
Por exemplo, por esta regra o valor 12,5 é arredondado para 13, mas -12,5 é arredondado para -13. Este método trata valores positivos e negativos simetricamente.
Arredondamento para zero
Se a fração de y é exatamente 0,5, então q = y − 0, 5 se y é positivo e q = y + 0, 5 se y
é negativo.
q = sgn(y)[|y| − 0, 5] = −sgn(y)[−|y| + 0, 5]
Por exemplo, por esta regra o valor 12,5 é arredondado para 12, mas -12,5 é arredondado para -12. Este método também trata valores positivos e negativos simetricamente.
ANEXO A. MODOS DE ARREDONDAMENTO
82
Arredondamento para par
É uma regra de desempate menos tendenciosa. Se a fração de y é exatamente 0,5,
então q é o inteiro par mais próximo de y.
Por exemplo, por esta regra o valor +13,5 é arredondado para +14, +12,5 é arredondado para +12, -13,5 é arredondado para -14, -12,5 é arredondado para -12. Este método
também trata valores positivos e negativos simetricamente.
Arredondamento para ímpar
Se a fração de y é exatamente 0,5, então q é o inteiro ímpar mais próximo de y.
Por exemplo, por esta regra o valor +13,5 é arredondado para +13, +12,5 é arredondado para +13, -13,5 é arredondado para -13, -12,5 é arredondado para -13. Este método
também trata valores positivos e negativos simetricamente.
A.5
Arredondamento Escalado
Este tipo de arredondamento que é também chamado de arredondamento para uma escala logarítimica, é uma variante do arredondamento com o incremento pré-determinado,
mas o incremento é modificado dependendo da escala e magnitude do resultado. A intenção é limitar o número de dígitos significantes, arredondando o valor de modo que dígitos
não significantes sejam eliminados. Este tipo de arredondadamento ocorre implicitamente
com números computados com valores de ponto-flutuante com pecisão limitada (como o
float e double do IEEE-754), mas eles são usados mais geralmente para arredondadar alguns valores reais como números positivos de dígitos significantes e base real estritamente
positiva.
Este tipo de arredondamento é baseado em uma escala logaritma definida pela fixação
de valor de escala real não-zero s (em casos gerais s=1), uma base fixa b>1 e um numero
inteiro fixo n>0 de dígitos significantes na base.
O número do principal argumento é primeiro representado em notação exponencial
x = s.a.m.bc , onde o sinal s ou é +1 ou -1, a mantissa a é restrita ao intervalo semi-aberto
positivo [1/b, 1) e o expoente c é um inteiro (positivo ou negativo). Se o número de
ANEXO A. MODOS DE ARREDONDAMENTO
83
origem (ou número arredondado) é 0, a mantisssa a é definida como 0, o expoente c é
fixado em um valor arbitrário e o sinal s pode ser escolhido arbitrariamente entre -1 e +1.
A.6
Arredondamento em Ponto-Flutuante
Na aritmética de ponto-flutuante, o arredondamento tem por objetivo transformar um
determinado valor x em um valor z com um número específico de dígitos significantes. Em
outras palavras, z será um múltiplo de um número m que depende da maginute de z. O número m é uma potência da base (usualmente 2 ou 10) da representação do ponto-flutuante.
Para obter resultados onde o valor arredondado estouraria o valor de um arredondamento direcionado, é adequado utilizar ou um infinito sinalizado ou o maior número
positivo representável finito (ou o menor número positivo representável finito se x é negativo), dependendo da direção do arredondamento. Em um estouro para o arredondamento
para o próximo par é utilizado o infinito.
Além disso, se ocorrer underflow, ou seja, se o expoente exceder o menor valor inteiro representável, o resultado efetivo pode ser zero, ou o menor número positivo finito
representável finito (ou o maior número negativo finito se x é negativo).
Anexo B
Código Fonte da biblioteca JAVA-XSC
1
package ia_math ;
3
/* *
* A classe Reallnterval representa um intervalo fechado de números
reais
*/
public class RealInterval implements Cloneable {
public double lo , hi ;
public String Err ;
5
7
9
11
13
15
17
19
21
23
25
27
public RealInterval ( double lo , double hi ) {
if ( lo <= hi ) {
this . lo = lo ;
this . hi = hi ;
this . Err = "";
} else {
System . out . println (" Interval ( Inferior =" + lo + " , Superior =" +
hi
+ "):" + " incorreto o extremo Inferior <= Superior ");
}
}
public RealInterval ( double x) {
if (( Double . NEGATIVE_INFINITY < x) && (x < Double .
POSITIVE_INFINITY )) {
this . lo = x;
this . hi = x;
this . Err = "";
} else {
System . out . println (" Intervalo (x): deve ser -inf <x < inf ");
}
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
29
}
31
/* *
* construct the interval [- infty . infty ]
*/
public RealInterval () {
this . lo = java . lang . Double . NEGATIVE_INFINITY ;
this . hi = java . lang . Double . POSITIVE_INFINITY ;
this . Err = "";
}
33
35
37
39
public double lo () {
return this . lo ;
}
41
43
public double hi () {
return this . hi ;
}
45
47
public String toString () {
String temp = new String () ;
temp = "[" + this . lo + " ; " + this . hi + "]";
return temp ;
}
49
51
53
private String doubleToString ( double x) {
StringBuffer s = new StringBuffer (( new Double (x)). toString () );
int i = s. length () ;
int j;
for (j = 1; j < 20 - i; i ++)
s. append ( ’ ’);
return (s. toString () );
}
55
57
59
61
public Object clone () {
return new RealInterval ( this .lo , this . hi );
}
63
65
}
2
4
/*
* IAException . java
*/
package ia_math ;
85
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
6
public class IAException extends RuntimeException {
private String e;
8
public IAException () {
super () ;
}
10
12
public IAException ( String s) {
super (s);
e = s;
}
14
16
public String toString () {
return e;
}
18
20
}
1
package ia_math ;
3
public class IAMath {
/* *
* BIBLIOTECA JAVA - XSC - CLASSE IA_MATH - MÉTODOS INTERVALARES
* ( BASEADO NAS DESCRIÇÕES DE OPERAÇÕES E FUNÇÕES INTERVALARES )
*/
5
7
9
11
/* *
* MÓDULO 1 - Operações básicas .
*/
13
15
17
19
21
23
/* *
* 1) Método add
*
Calcula a soma de Intervalos
*/
public static RealInterval add ( RealInterval x , RealInterval y) {
RealInterval z = new RealInterval () ;
z. lo = (x. lo + y. lo );
z. hi = (x. hi + y. hi );
return (z);
}
25
27
/* *
* 2) Método uminus
86
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
29
*
*
*/
87
Calcula o intervalo recíproco ou
Pseudo inverso aditivo intervalar
31
33
35
37
39
41
public static RealInterval uminus ( RealInterval x) {
RealInterval z = new RealInterval () ;
z. lo = -x. hi ;
z. hi = -x. lo ;
return (z);
}
/* *
* 3) Método sub
*
Calcula a subtração de Intervalos
*/
43
45
47
49
51
53
public static RealInterval sub ( RealInterval x , RealInterval y) {
RealInterval z = new RealInterval () ;
z. lo = (x. lo - y. hi );
z. hi = (x. hi - y. lo );
return (z);
}
/* *
* 4) Método mul
* Calcula a multiplicação de Intervalos
*/
55
57
59
61
63
65
67
public static RealInterval mul ( RealInterval x , RealInterval y) {
RealInterval z = new RealInterval () ;
if ( Math . min (( x. lo * y. lo ) , (x. lo * y. hi )) > Math . min (( x. hi * y.
lo ) ,
(x. hi * y. hi ))) {
z. lo = Math . min (( x. hi * y. lo ) , (x. hi * y. hi ));
} else {
z. lo = Math . min (( x. hi * y. lo ) , (x. hi * y. hi ));
}
if ( Math . max (( x. lo * y. lo ) , (x. lo * y. hi )) > Math . max (( x. hi * y.
lo ) ,
(x. hi * y. hi ))) {
z. hi = Math . max (( x. lo * y. lo ) , (x. lo * y. hi ));
} else {
z. hi = Math . max (( x. hi * y. lo ) , (x. hi * y. hi ));
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
}
return (z);
69
71
}
73
/* *
* 5) Método invmul
* Calcula o intervalo recíproco ou
*
Pseudo inverso multiplicativo intervalar
*/
public static RealInterval invmul ( RealInterval x) {
RealInterval z = new RealInterval () ;
if (( x. lo <= 0.0) && (x. hi >= 0.0) ) {
z. Err = " invmul : Os valores assumidos do intervalo não devem
conter zero ";
} else {
z. lo = 1 / x. hi ;
z. hi = 1 / x. lo ;
}
return (z);
}
75
77
79
81
83
85
87
89
91
93
95
97
99
101
103
105
107
109
88
/* *
* 6) Método sclmul
* Calcula a multiplicação de um escalar
*
por um intervalo
*/
public static RealInterval sclmul ( double d , RealInterval x) {
RealInterval z = new RealInterval () ;
z. lo = Math . min (d * x.lo , d * x. hi );
z. hi = Math . max (d * x.lo , d * x. hi );
return z;
}
/* *
* 7) Método mdiv
* Calcula a divisão de Intervalos
*/
public static RealInterval div ( RealInterval x , RealInterval y) {
RealInterval z = new RealInterval () ;
if (( y. lo <= 0.0) && (y. hi >= 0.0) ) {
z. Err = " div : A divisão não aceita um intervalo contendo zero "
;
} else if ( Math . min (( x. lo / y. hi ) , (x. lo / y. lo )) > Math . min (
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
89
(x. hi / y. hi ) , (x. hi / y. lo ))) {
z. lo = Math . min (( x. hi / y. hi ) , (x. hi / y. lo ));
} else {
z. lo = Math . min (( x. lo / y. hi ) , (x. lo / y. lo ));
}
if ( Math . max (( x. lo / y. hi ) , (x. lo / y. lo )) > Math . max (( x. hi / y.
hi ) ,
(x. hi / y. lo ))) {
z. hi = Math . max (( x. lo / y. hi ) , (x. lo / y. lo ));
} else {
z. hi = Math . max (( x. hi / y. hi ) , (x. hi / y. lo ));
}
return (z);
111
113
115
117
119
121
}
123
125
/* *
* MÓDULO 2 - Funções entre conjuntos .
*\
127
129
131
/**
* 8) Método union
*
Calcula a união de intervalos
*/
133
135
137
139
141
143
145
147
149
public static RealInterval union ( RealInterval x , RealInterval y)
throws IAException {
RealInterval z = new RealInterval () ;
if (( x. hi < y. lo ) || (y. hi < x. lo )) {
z. Err = " union : A intesseção é vazia !";
} else if (x. lo <= y. lo )
// se o extremo inferior x. lo for menor que o extremo inferior y
. lo
{
z. lo = x. lo ;
z. hi = Math . max (x.hi , y. hi );
} else {
z. lo = y. lo ;
z. hi = Math . max (x.hi , y. hi );
}
return z;
}
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
151
153
155
157
159
161
163
165
90
/* *
* 9) Método hull
*
União Convexa , faz concatenação de
*
dois intervalos
*/
public static RealInterval hull ( RealInterval x , RealInterval y) {
RealInterval z = new RealInterval () ;
z. lo = Math . min (x.lo , y. lo );
z. hi = Math . max (x.hi , y. hi );
return z;
}
/* *
* 10) Método intersect
*
Calcula a interseção de intervalos
*/
167
169
171
173
175
177
public static RealInterval intersect ( RealInterval x , RealInterval
y)
throws IAException {
RealInterval z = new RealInterval () ;
if ((( x. lo <= y. hi ) && (y. hi <= x. hi ))
|| (( y. lo <= x. hi ) && (x. hi <= y. hi ))) {
z. lo = Math . max (x.lo , y. lo );
z. hi = Math . min (x.hi , y. hi );
} else
z. Err = " intersect : Não há interseção !";
return z;
}
179
181
/*
* MÓDULO 3 - Funções geométricas .
*\
183
185
187
189
191
/**
* 11) Método dist
*
Calcula a distância entre intervalos
*/
public static double dist ( RealInterval x , RealInterval y) {
return ( Math . max ( Math . abs (x. lo - y. lo ) , Math . abs (x. hi - y. hi )));
}
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
193
195
197
199
201
203
205
207
209
211
91
/* *
* 12) Método diam
*
Calcula o diâmetro de um intervalos
*/
public static double diam ( RealInterval x) {
return (x. hi - x. lo );
}
/* *
* 13) Método midpoint
*
Calcula o ponto médio de um intervalo
*/
public static double lmidpoint ( RealInterval x) {
return (x. lo + x. hi ) / 2.0;
}
/* *
* MÓDULO 4 - Funções elementares .
*\
213
215
217
219
221
223
225
/**
* 14) Método abs
*
Calcula o valor absoluto de um intervalo
*/
public static RealInterval abs ( RealInterval x) throws IAException
{
RealInterval z = new RealInterval () ;
if (( x. lo <= 0.0) && (x. hi >= 0.0) )
z = new RealInterval (0.0 , Math . max ( Math . abs (x. lo ) , Math . abs (x.
hi )));
else
z = new RealInterval ( Math . min ( Math . abs (x. lo ) , Math . abs (x. hi )) ,
Math . max ( Math . abs (x. lo ) , Math . abs (x. hi )));
return z;
}
227
229
231
233
/* *
* 15) Método sqr
*
Calcula o quadrado de um intervalo
*/
public static RealInterval sqr ( RealInterval x) {
RealInterval z = new RealInterval () ;
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
if (( x. lo < 0) && (x. hi > 0) ) {
z. lo = 0;
z. hi = x. hi * x. hi ;
} else {
z. lo = Math . min (x. lo * x.lo , x. hi * x. hi );
z. hi = Math . max (x. lo * x.lo , x. hi * x. hi );
}
return (z);
235
237
239
241
}
243
245
247
249
251
253
255
257
259
261
263
265
267
269
271
273
275
/* *
* 16) Método sqrt
*
Calcula a raiz quadrada de um intervalo
*/
public static RealInterval sqrt ( RealInterval x) {
RealInterval z = new RealInterval () ;
if (x. lo < 0.0)
z. Err = " sqrt : 0 intervalo não pode possuir raízes
imaginárias ";
z. lo = Math . sqrt (x. lo );
z. hi = Math . sqrt (x. hi );
return (z);
}
/* *
* 17) Método exp
*
Calcula o exponencial de um intervalo
*/
public static RealInterval exp ( RealInterval x) {
RealInterval z = new RealInterval () ;
double hi , lo = 0;
z. lo = Math . pow ( Math .E , x. lo );
z. hi = Math . pow ( Math .E , x. hi );
return z;
}
/* *
* 18) Método exp2
*
Calcula o exponencial de um intervalo
*
elevado a 2
*/
public static RealInterval exp2 ( RealInterval x) {
RealInterval z = new RealInterval () ;
92
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
double
z. lo =
z. hi =
return
277
279
hi , lo = 0;
Math . pow (2 , x. lo );
Math . pow (2 , x. hi );
z;
}
281
283
285
287
289
291
293
/* *
* 19) Método exp10
*
Calcula o exponencial de um intervalo
*
elevado a 10
*/
public static RealInterval exp10 ( RealInterval x) {
RealInterval z = new RealInterval () ;
String Erro ;
double hi , lo = 0;
z. lo = Math . pow (10 , x. lo );
z. hi = Math . pow (10 , x. hi );
return z;
}
295
297
299
301
303
305
307
309
311
313
315
317
/* *
* 20) Método power
*
Calcula a potência de um intervalo
*/
public static RealInterval power ( RealInterval x , int k) {
RealInterval z = new RealInterval () ;
double n = ( double ) k;
if (( x. lo < 0) && (x. hi >= 0) && (n % 2 == 0) ) {
z. lo = 0;
z. hi = Math . max ( Math . pow ( Math . abs (x. lo ) , n) ,
Math . pow ( Math . abs (x. hi ) , n));
} else if (( x. hi < 0) && (n % 2 == 0) ) {
z. lo = Math . min ( Math . pow ( Math . abs (x. lo ) , n) ,
Math . pow ( Math . abs (x. hi ) , n));
z. hi = Math . max ( Math . pow ( Math . abs (x. lo ) , n) ,
Math . pow ( Math . abs (x. hi ) , n));
} else {
z. lo = Math . pow (x.lo , n);
z. hi = Math . pow (x.hi , n);
}
return z;
}
93
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
319
321
323
94
/* *
* 21) Método ln
*
Calcula o logarítmo natural de um intervalo
*/
public static RealInterval ln ( RealInterval x) {
RealInterval z = new RealInterval () ;
325
if (x. lo <= 0.0) {
z. Err = " ln : 0 intervalo não pode ser menor ou igual a zero !";
} else {
z. lo = Math . log (x. lo );
z. hi = Math . log (x. hi );
}
return z;
327
329
331
333
}
335
/* *
* 22) Método log2
*
Calcula o logaritmo na base 2 de um intervalo
*/
public static RealInterval log2 ( RealInterval x) {
RealInterval z = new RealInterval () ;
RealInterval result = new RealInterval () ;
z. lo = 2.0;
z. hi = 2.0;
337
339
341
343
if (x. lo <= 0.0) {
z. Err = " log2 : O intervalo não pode ser maior ou igual a zero "
;
} else {
result = div ( ln (x) , ln (z));
}
return result ;
345
347
349
351
}
353
/* *
* 23) Método log10
*
Calcula o logaritmo na base 10 de um intervalo
*/
public static RealInterval log10 ( RealInterval x) {
RealInterval z = new RealInterval () ;
RealInterval result = new RealInterval () ;
z. lo = 10.0;
355
357
359
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
z. hi = 10.0;
if (x. lo <= 0.0) {
z. Err = " log10 : O intervalo não pode ser menor ou igual zero ";
} else {
result = div ( ln (x) , ln (z));
}
result = div ( ln (x) , ln (z));
return result ;
361
363
365
367
369
}
371
/* *
* MÓDULO 5 - Funções trigonométricas .
*\
373
95
375
377
379
381
383
385
387
389
391
393
395
397
399
401
/**
* 24) Método sin
*
Calcula o seno de um intervalo
*\
public static RealInterval sin ( RealInterval x) {
RealInterval z = new RealInterval () ;
double troc , mmimM , maxM , k;
//
// Se x2 - xl >= 2PI , a função já passou pelos seus extremos -1 e
1
//
if (( x. hi - x. lo ) > 2 * Math . PI ) {
z. lo = -1;
z. hi = 1;
} else
//
// Se x2 - xl estiver entre PI e 2 PI
//
if (( x. hi - x. lo ) > Math . PI ) {
if ( Math . sin (x. lo + (( x. hi - x. lo ) / 2) ) == 0.0) {
z. lo = -1;
z. hi = 1;
} else if ( Math . sin (x. lo + (( x. hi - x. lo ) / 2) ) > 0.0) { //
minM e 1
z. lo = Math . min ( Math . sin (x. lo ) , Math . sin (x. hi ));
z. hi = 1;
} else { // -1 e maxM
z. lo = -1;
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
96
z. hi = Math . max ( Math . sin (x. lo ) , Math . sin (x. hi ));
}
} else {
//
// Se x2 - xl for menor que PI
//
k = (( int ) ((2 * (x. lo )) / Math . PI )) + 1;
// se xl <= k( pi /2) <= x2 e
if (( x. lo <= (k * ( Math . PI / 2) )) && (( k * ( Math . PI / 2) ) <= x
. hi )) {
// para algum k , tal que k -1 seja múltiplo de 4
if (( k - 1) % 4 == 0.0) { // minM e 1
z. lo = Math . min ( Math . sin (x. lo ) , Math . sin (x. hi ));
z. hi = 1;
} else
// para algum k , tal que k +1 seja múltiplo de 4
if (( k + 1) % 4 == 0.0) { // -1 e maxM
z. lo = -1;
z. hi = Math . max ( Math . sin (x. lo ) , Math . sin (x. hi ));
} else { // minM e maxM
z. lo = Math . min ( Math . sin (x. lo ) , Math . sin (x. hi ));
z. hi = Math . max ( Math . sin (x. lo ) , Math . sin (x. hi ));
}
} else { // minM e maxM
z. lo = Math . min ( Math . sin (x. lo ) , Math . sin (x. hi ));
z. hi = Math . max ( Math . sin (x. lo ) , Math . sin (x. hi ));
}
}
return z;
403
405
407
409
411
413
415
417
419
421
423
425
427
429
}
431
433
435
437
439
441
443
/**
* \ 25) Método cos
*
Calcula o co - seno de um intervalo
*/
public static RealInterval cos ( RealInterval x) {
RealInterval z = new RealInterval () ;
x. lo = x. lo + Math . PI / 2;
x. hi = x. hi + Math . PI / 2;
z = sin (x);
return z;
}
*
*
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
445
447
449
451
453
455
457
459
461
/* *
* \ 26) Método tan
*
Calcula a tangente de um intervalo
*/
public static RealInterval tan ( RealInterval x) {
RealInterval z = new RealInterval () ;
int k1 ;
if (( x. hi - x. lo ) >= Math . PI )
z. Err = " tan : Diverge , pois o intervalo não pertence ao
domínimo da função ";
k1 = ( int ) Math . floor (x. lo / ( Math . PI / 2) ) + 1;
if (( k1 % 2 != 0) && ( k1 * Math . PI / 2 >= x. lo )
&& ( k1 * Math . PI / 2 <= x. hi ))
z. Err = " tan : Diverge , pois o incervalo não pertence ao
dominio da funcão !";
else {
z. lo = Math . tan (x. lo );
z. hi = Math . tan (x. hi );
}
return z;
}
463
465
467
469
471
473
475
477
479
481
/* *
* 27) Método cot
*
Calcula a co - tangente de um intervalo
*/
public static RealInterval cot ( RealInterval x) {
RealInterval z = new RealInterval () ;
int k1 ;
if (( x. hi - x. lo ) >= Math . PI )
z. Err = " cot : Diverge , pois o intervalo não pertence ao
domínio da função !";
k1 = ( int ) Math . floor (x. lo / ( Math . PI )) + 1;
if (( k1 * Math . PI >= x. lo ) && ( k1 * Math . PI <= x. hi ))
z. Err = " cot : Diverge , pois o intervalo não pertence ao
domínio da função !";
else {
z. hi = (1 / Math . tan (x. lo ));
z. lo = (1 / Math . tan (x. hi ));
}
return z;
}
97
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
483
485
487
489
491
493
495
497
499
501
503
505
507
509
511
513
515
517
519
521
98
/* *
* 28) Método sec
*
Calcula a secante de um intervalo
*/
public static RealInterval sec ( RealInterval x) {
RealInterval z = new RealInterval () ;
int k1 , k;
if (( x. hi - x. lo ) >= Math . PI )
z. Err = " sec : Diverge , pois o intervalo não pertence ao
domínio da função !";
k1 = ( int ) Math . floor (x. lo / ( Math . PI / 2) ) + 1;
k = ( int ) Math . floor (x. lo / Math . PI ) + 1;
if (( k1 % 2 != 0) && ( k1 * Math . PI / 2 >= x. lo )
&& ( k1 * Math . PI / 2 <= x. hi ))
z. Err = " sec : Diverge , pois o intervalo não pertence ao
domínio da função !";
if (( k % 2 != 0) && (k * Math . PI >= x. lo ) && (k * Math . PI <= x.
hi )) {
z. lo = Math . min (1 / Math . cos (x. lo ) , 1 / Math . cos (x. hi ));
z. hi = -1;
} else if (( k % 2 == 0) && (k * Math . PI >= x. lo )
&& (k * Math . PI <= x. hi ) && (x. lo != 0) ) {
z. hi = Math . max (1 / Math . cos (x. lo ) , 1 / Math . cos (x. hi ));
z. lo = 1;
} else {
z. hi = Math . max (1 / Math . cos (x. lo ) , 1 / Math . cos (x. hi ));
z. lo = Math . min (1 / Math . cos (x. lo ) , 1 / Math . cos (x. hi ));
}
return (z);
}
/* *
* 29) Método csc
*
Calcula a co - secante de um intervalo
*/
public static RealInterval csc ( RealInterval x) {
RealInterval z = new RealInterval () ;
x. lo = x. lo - Math . PI / 2;
x. hi = x. hi - Math . PI / 2;
z = sec (x);
return (z);
}
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
523
525
527
/* *
* 30) Método arcsin
*
Calcula o arco seno de um intervalo
*/
public static RealInterval arcsin ( RealInterval x) {
RealInterval z = new RealInterval () ;
529
if (( x. lo < -1) || (x. hi > 1) ) {
z. Err = " arcsen : Neste intervalo a função não tem inversa !";
}
z. lo = Math . asin (x. lo );
z. hi = Math . asin (x. hi );
return z;
531
533
535
}
537
539
541
543
/* *
* 31) Método arccos
*
Calcula o arco co seno de um intervalo
*/
public static RealInterval arccos ( RealInterval x) {
RealInterval z = new RealInterval () ;
if (( x. lo < -1.0) || (x. hi > 1) ) {
z. Err = " arccos : Neste intervalo a função não tem inversa !";
} else {
z. lo = Math . acos (x. hi );
z. hi = Math . acos (x. lo );
}
return z;
545
547
549
551
}
553
563
/* *
* 32) Método arcatn
*
Calcula o arco tangente de um intervalo
*/
public static RealInterval arctan ( RealInterval x) {
RealInterval z = new RealInterval () ;
z. lo = Math . atan (x. lo );
z. hi = Math . atan (x. hi );
return z;
}
565
/* *
555
557
559
561
99
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
567
569
100
* 33) Método sinh
*
Calcula o seno hiperbólico de um intervalo
*/
public static RealInterval sinh ( RealInterval x) {
RealInterval z = new RealInterval () ;
571
z. lo = ( Math . pow ( Math .E , x. lo ) - Math . pow ( Math .E , -x. lo )) / 2;
z. hi = ( Math . pow ( Math .E , x. hi ) - Math . pow ( Math .E , -x. hi )) / 2;
return z;
573
575
}
577
/* *
* 34) Método cosh
*
Calcula o coseno hiperbólico de um intervalo
*/
public static RealInterval cosh ( RealInterval x) {
RealInterval z = new RealInterval () ;
double a , b;
a = ( Math . pow ( Math .E , x. lo ) + Math . pow ( Math .E , -x. lo )) / 2;
b = ( Math . pow ( Math .E , x. hi ) + Math . pow ( Math .E , -x. hi )) / 2;
if (( x. lo <= 0) && (x. hi >= 0) ) {
z. lo = 1;
if ( Math . abs (x. lo ) >= x. hi )
z. hi = a;
else
z. hi = b;
} else {
z. lo = Math . min (a , b);
z. hi = Math . max (a , b);
}
return z;
}
579
581
583
585
587
589
591
593
595
597
599
601
603
605
607
/* *
* 35) Método tanh
*
Calcula a tangente hiperbólico * de um intervalo
*/
public static RealInterval tanh ( RealInterval x) {
RealInterval z = new RealInterval () ;
x. hi = ( Math . pow ( Math .E , x. lo ) - Math . pow ( Math .E , -x. lo ))
/ ( Math . pow ( Math .E , z. lo ) + Math . pow ( Math .E , -x. lo ));
z. lo = ( Math . pow ( Math .E , x. hi ) - Math . pow ( Math .E , -x. hi ))
/ ( Math . pow ( Math .E , z. hi ) + Math . pow ( Math .E , -x. hi ));
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
return z;
609
}
611
613
615
617
619
621
623
625
627
629
631
633
635
637
639
641
643
645
/* *
* 36) Método coth
*
Calcula o co - tangente hiperbólico de um intervalo
*/
public static RealInterval coth ( RealInterval x) {
RealInterval z = new RealInterval () ;
if (( x. lo <= 0.0) && (x. hi >= 0.0) )
z. Err = " coth : O intervalo não pode conter o valor zero !";
else {
z. hi = ( Math . pow ( Math .E , x. lo ) + Math . pow ( Math .E , -x. lo ))
/ ( Math . pow ( Math .E , x. lo ) - Math . pow ( Math .E , -x. lo ));
z. lo = ( Math . pow ( Math .E , x. hi ) + Math . pow ( Math .E , -x. hi ))
/ ( Math . pow ( Math .E , x. hi ) - Math . pow ( Math .E , -x. hi ));
}
return z;
}
/* *
* 37) Método sech
*
Calcula a secante hiperbólica de um intervalo
*/
public static RealInterval sech ( RealInterval x) {
RealInterval z = new RealInterval () ;
double a , b;
a = 2.0 / ( Math . pow ( Math .E , x. lo ) + Math . pow ( Math .E , -x. lo ));
b = 2.0 / ( Math . pow ( Math .E , x. hi ) + Math . pow ( Math .E , -x. hi ));
if (( x. lo < 0) && (x. hi > 0) ) {
z. hi = 1;
z. lo = Math . min (a , b);
} else {
z. lo = Math . min (a , b);
z. hi = Math . max (a , b);
}
return z;
}
647
649
651
/* *
* 38) Método csch
*
Calcula a co - secante hiperbólica de um intervalo
*/
101
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
653
655
657
659
661
663
102
public static RealInterval csch ( RealInterval x) {
RealInterval z = new RealInterval () ;
double a , b;
a = 2.0 / ( Math . pow ( Math .E , x. lo ) - Math . pow ( Math .E , -x. lo ));
b = 2.0 / ( Math . pow ( Math .E , x. hi ) - Math . pow ( Math .E , -x. hi ));
if (( x. lo < 0) && (x. hi > 0) )
z. Err = " csch : O intervalo não deve conter zero ";
else {
z. lo = Math . min (a , b);
z. hi = Math . max (a , b);
}
return z;
}
665
667
669
671
673
675
677
679
681
683
685
687
689
/* *
* 39) Método senhI
*
Calcula o seno hiperbólico inverso de um intervalo
*/
public static RealInterval senhI ( RealInterval x) {
RealInterval z = new RealInterval () ;
z. lo = Math . log (x. lo + Math . sqrt ( Math . pow (x.lo , 2) + 1) );
z. hi = Math . log (x. hi + Math . sqrt ( Math . pow (x.hi , 2) + 1) );
return (z);
}
/* *
* 40) Método coshI
*
Calcula o cosseno hiperbólico Inverso de um intervalo
*/
public static RealInterval coshI ( RealInterval x) {
RealInterval z = new RealInterval () ;
if (x. lo < 1)
z. Err = " coshI : O intervalo [a ,b] deve satisfazer a condição a
,b >= 1";
else {
z. lo = Math . log (x. lo + Math . sqrt ( Math . pow (x.lo , 2) - 1) );
z. hi = Math . log (x. hi + Math . sqrt ( Math . pow (x.hi , 2) - 1) );
}
return (z);
}
691
693
/* *
* 41) Método tanhI
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
695
697
699
701
703
705
707
709
711
713
715
717
719
721
723
725
727
729
731
733
735
103
*
Calcula a tangente hiperbólica Inverso de um intervalo
*/
public static RealInterval tanhI ( RealInterval x) {
RealInterval z = new RealInterval () ;
if ( Math . abs (x. lo ) >= 1)
z. Err = " tanhI : O intervalo deve estar entre -1 e 1! ";
else {
z. lo = 0.5 * Math . log ((1 + x. lo ) / (1 - x. lo ));
z. hi = 0.5 * Math . log ((1 + x. hi ) / (1 - x. hi ));
}
return (z);
}
/* *
* 42) Método cothI
*
Calcula o co - tangente hiperbólico Inverso
*
de um intervalo
*/
public static RealInterval cothI ( RealInterval x) {
RealInterval z = new RealInterval () ;
if (( x. lo >= -1) && (x. hi <= 1) )
z. Err = " cothI : O intervalo não pode estar entre -1 e 1";
else {
z. lo = 0.5 * Math . log (( x. hi + 1) / (x. hi - 1) );
z. hi = 0.5 * Math . log (( x. lo + 1) / (x. lo - 1) );
}
return (z);
}
/* *
* 43) Método sechI
*
Calcula o secante hiperbólico Inverso
*
de um intervalo
*/
public static RealInterval sechI ( RealInterval x) {
RealInterval z = new RealInterval () ;
double troc ;
if (( x. lo <= 0) && (x. hi > 1) )
z. Err = " sechI = O intervalo tem que estar entre 0 e 1";
else {
z. hi = Math . log ((1 + Math . sqrt (1 - Math . pow (x.lo , 2) )) / (x. lo
));
z. lo = Math . log ((1 + Math . sqrt (1 - Math . pow (x.hi , 2) )) / (x. hi
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
104
));
}
return (z);
737
}
739
741
743
745
747
749
751
753
755
757
759
761
/* *
* 44) Método cschI
*
Calcula o co - secante hiperbólico Inverso
*
de um intervalo
*/
public static RealInterval cschI ( RealInterval x) {
RealInterval z = new RealInterval () ;
double troc ;
if ((( x. lo < 0) && (x. hi > 0) ) || (( x. lo == 0) || (x. hi == 0) ))
z. Err = " cschI : O intervalo não deve conter zero ";
else {
z. hi = Math . log (1 / x. lo
+ ( Math . sqrt (1 + Math . pow (x.lo , 2) ) / Math . abs (x. lo )));
z. lo = Math . log (1 / x. hi
* ( Math . sqrt (1 + Math . pow (x.hi , 2) ) / Math . abs (x. hi )));
}
return (z);
}
/* *
* MÓDULO 6 - Funções de transferência e . Constantes
Intervalares .
*\
763
765
767
769
771
773
/**
* 45) Método int_interv
*
Converte um inteiro em um intervalo
*\
public static RealInterval int_interv ( int i) {
RealInterval z = new RealInterval () ;
double x;
x = ( double ) i;
z = new RealInterval (x , x);
return z;
}
775
/**
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
777
779
781
783
* 46) Método real_interv
*
Converte um real em um intervalo
*/
public static RealInterval real_interv ( double i) {
RealInterval z = new RealInterval () ;
z = new RealInterval (i , i);
return z;
}
785
787
789
791
793
/* *
* 47) Método inf
*
retorna o extremo inferior de um intervalo
*/
public static double inf ( RealInterval x) {
double y;
y = x. lo ;
return y;
}
795
797
799
801
803
/* *
* 48) Método sup
*
retorna o extremo superior de um intervalo
*/
public static double sup ( RealInterval x) {
double y;
y = x. hi ;
return y;
}
805
807
809
811
813
815
817
819
/* *
* 49) Método PI
*
Calcula o intervalo de PI
*/
public static RealInterval PI () {
RealInterval z = new RealInterval () ;
z. lo = Math . PI ;
z. hi = nextfp ( Math . PI );
return (z);
}
/* *
* 50) Método PI /n
*
Calcula o intervalo de PI * divido por n
105
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
821
823
825
*/
public static RealInterval PI_n ( int i) {
RealInterval z = new RealInterval () ;
z. lo = PI () . lo / i;
z. hi = PI () . hi / i;
return z;
}
827
829
831
833
835
837
839
841
843
845
847
849
851
853
855
857
859
861
/* *
* 51) Método A
*
Calcula o intervalo de 1/ PI
*/
public static RealInterval A () {
RealInterval z = new RealInterval () ;
z. lo = (1.0 / PI () . hi );
z. hi = (1.0 / PI () . lo );
return (z);
}
/* *
* 52) Método blow - retorna um novo intervalo
*
com o predecessordo extremo inferior e
*
sucessor do extremo superior de um intervalo
*/
public static RealInterval blow ( RealInterval x) {
RealInterval z = new RealInterval () ;
z. lo = prevfp (x. lo );
x. hi = nextfp (x. hi );
return z;
}
public static double nextfp ( double x) {
double y;
if (1 < Double . POSITIVE_INFINITY ) {
long xx = Double . doubleToLongBits (x);
if (x >= 0)
y = Double . longBitsToDouble ( xx + 1) ;
else if (x == 0)
y = Double . longBitsToDouble (1) ;
else
y = Double . longBitsToDouble ( xx - 1) ;
return (y);
} else
106
ANEXO B. CÓDIGO FONTE DA BIBLIOTECA JAVA-XSC
return (x);
863
}
865
public static double prevfp ( double x) {
if (x == 0)
return (- nextfp (0.0) );
else
return (- nextfp (-x));
}
867
869
871
873
}
107
Anexo C
Código Fonte da Classe Complex
1
package ia_math ;
import jfloat . JFloat32 ;
3
5
7
9
public class Complex {
public
public
public
public
float a , b;
char forma ;
double modulo , angulo ;
String Err ;
11
13
15
17
19
21
23
public Complex ( float a , float b , char forma ) {
this . forma = forma ;
if ( forma == ’a ’){
this .a = a;
this .b = b;
}
else if ( forma == ’p ’){
this . modulo =a;
this . angulo =b;
}
else System . out . println (" Digite a para complexo algébrico e p
para complexo polar !");
}
25
27
29
public Complex ( float x , char forma ) {
this . forma = forma ;
if ( forma == ’a ’){
this .a = x;
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
this .b = 0;
31
}
else if ( forma == ’p ’){
this . modulo =0;
this . angulo =0;
}
33
35
37
39
41
43
45
47
49
}
public Complex ( char forma ) {
this . forma = forma ;
if ( forma == ’a ’){
this .a = 0;
this .b = 0;
}
else if ( forma == ’p ’){
this . modulo =0;
this . angulo =0;
}
else System . out . println (" Digite a para complexo algébrico e p
para complexo polar !");
}
51
53
public void setForma ( char forma ){
this . forma = forma ;
55
}
57
public float Re () {
return this .a;
}
59
61
63
public float Im () {
return this .b;
}
65
67
69
71
public String toString () {
String temp = new String () ;
if ( this . forma == ’a ’){
if ( this .b >0)
temp = this .a + " + i" + this .b;
else if ( this .b <0)
temp = this .a + " - i" + this .b *( -1) ;
109
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
110
else
temp = this .a+"";
if ( this . modulo >0) {
temp = this . modulo +"( cos "+ this . angulo +" + i. sen "+ this .
angulo +")";
}
73
75
77
}
else {
79
81
temp = this . modulo +"( cos "+ this . angulo +" + i. sen "+ this . angulo
+")";
}
return temp ;
83
85
}
87
private String doubleToString ( double x) {
StringBuffer s = new StringBuffer (( new Double (x)). toString () );
int i = s. length () ;
int j;
for (j = 1; j < 20 - i; i ++)
s. append ( ’ ’);
return (s. toString () );
}
89
91
93
95
97
public Object cane () {
return new Complex ( this .a , this .b , this . forma );
}
99
/*
****************************************************************\
101
*
1) Método add
*
*
Calcula a soma de Complexos
*
103
*
\*****************************************************************
*/
105
107
public static Complex add ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
111
z.a=x.a+y.a;
z.b=x.b+y.b;
return z;
109
111
}
113
/*
****************************************************************\
*
115
*
2) Método adddown
*
Calcula a soma de Complexos com arredondamento para baixo
*
*
\*****************************************************************
117
*/
125
public static Complex adddown ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_DOWN );
z.a= JFloat32 . add (x.a , y.a);
z.b= JFloat32 . add (x.b , y.b);
return z;
}
127
/*
119
121
123
****************************************************************\
*
129
*
3) Método addup
*
Calcula a soma de Complexos com arredondamento para cima
*
*
\*****************************************************************
131
133
135
137
*/
public static Complex addup ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_UP );
z.a= JFloat32 . add (x.a , y.a);
z.b= JFloat32 . add (x.b , y.b);
return z;
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
139
}
141
/*
112
****************************************************************\
*
3) Método sub
*
143
*
Calcula a subtração de Complexos
*
*
\*****************************************************************
145
147
149
151
*/
public static Complex sub ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
z.a=x.a -y.a;
z.b=x.b -y.b;
return z;
}
153
/*
****************************************************************\
155
157
*
4) Método subdown
*
*
Calcula a subtração de Complexos com arredondamento para
baixo
*
*
\*****************************************************************
*/
159
161
163
165
public static Complex subdown ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_DOWN );
z.a= JFloat32 . sub (x.a , y.a);
z.b= JFloat32 . sub (x.b , y.b);
return z;
}
167
/*
****************************************************************\
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
169
171
113
*
5) Método subup
*
*
Calcula a subtração de Complexos com arredondamento para
baixo
*
*
\*****************************************************************
*/
173
175
177
179
public static Complex subup ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_UP );
z.a= JFloat32 . sub (x.a , y.a);
z.b= JFloat32 . sub (x.b , y.b);
return z;
}
181
/*
****************************************************************\
183
*
6) Método mult
*
*
185
Calcula a multiplicação de Complexos
*
*
\*****************************************************************
*/
187
193
public static Complex mult ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
z.a =( x.a*y.a) -(x.b*y.b);
z.b =( x.a*y.b) +( x.b*y.a);
return z;
}
195
/*
189
191
****************************************************************\
*
197
*
7) Método multdown
*
Calcula a multiplicação de Complexos com arredondamento
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
para baixo
114
*
*
\*****************************************************************
199
*/
207
public static Complex multdown ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_DOWN );
z.a= JFloat32 . mul (x.a , y.a) - JFloat32 . mul (x.b , y.b);
z.b= JFloat32 . mul (x.a , y.b)+ JFloat32 . mul (x.b , y.a);
return z;
}
209
/*
201
203
205
****************************************************************\
211
*
8) Método multup
*
*
Calcula a multiplicação de Complexos com arredondamento
para cima
*
*
\*****************************************************************
213
*/
221
public static Complex multup ( Complex x , Complex y){
Complex z = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_UP );
z.a= JFloat32 . mul (x.a , y.a) - JFloat32 . mul (x.b , y.b);
z.b= JFloat32 . mul (x.a , y.b)+ JFloat32 . mul (x.b , y.a);
return z;
}
223
/*
215
217
219
****************************************************************\
*
225
*
9) Método multEscalar
*
Calcula a multiplicação de um Complexo por um escalar
*
*
\*****************************************************************
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
227
229
231
233
115
*/
public static Complex multEscalar ( Complex x , float e){
Complex z = new Complex ( ’a ’);
z.a= x.a * e;
z.b= x.b * e;
return z;
}
235
/*
****************************************************************\
237
*
10) Método conj
*
*
239
Calcula o conjugado de um Complexo
*
*
\*****************************************************************
*/
241
247
public static Complex conj ( Complex x){
Complex z = new Complex ( ’a ’);
z.a= x.a;
z.b= x.b * ( -1) ;
return z;
}
249
/*
243
245
****************************************************************\
*
11) Método div
*
251
*
Calcula o divisão entre Complexos
*
*
\*****************************************************************
253
255
*/
public static String div ( Complex x , Complex y){
Complex dividendo = new Complex ( ’a ’);
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
116
Complex divisor = new Complex ( ’a ’);
dividendo .a= (x.a*y.a) +( x.b *( y.b));
dividendo .b =( x.a*( -y.b)) +( x.b*y.a);
divisor .a= (y.a*y.a) + (y.b*y.b);
return dividendo + " / " + divisor ;
257
259
261
}
263
/*
****************************************************************\
265
267
*
12) Método divdown
*
*
Calcula o divisão entre Complexos com arredondamento para
baixo
*
*
\*****************************************************************
*/
269
271
273
275
277
public static String divdown ( Complex x , Complex y){
Complex dividendo = new Complex ( ’a ’);
Complex divisor = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_DOWN );
dividendo .a= JFloat32 . mul (x.a , y.a)+ JFloat32 . mul (x.b , y.b);
dividendo .b= JFloat32 . mul (x.a , -y.b)+ JFloat32 . mul (x.b , y.a);
divisor .a= JFloat32 . mul (y.a , y.a)+ JFloat32 . mul (y.b , y.b);
return dividendo + " / " + divisor ;
}
279
/*
****************************************************************\
281
283
*
13) Método divup
*
*
Calcula o divisão entre Complexos com arredondamento para
cima
*
*
\*****************************************************************
*/
285
287
public static String divup ( Complex x , Complex y){
Complex dividendo = new Complex ( ’a ’);
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
117
Complex divisor = new Complex ( ’a ’);
JFloat32 . setRoundingMode ( JFloat32 . ROUND_UP );
dividendo .a= JFloat32 . mul (x.a , y.a)+ JFloat32 . mul (x.b , y.b);
dividendo .b= JFloat32 . mul (x.a , -y.b)+ JFloat32 . mul (x.b , y.a);
divisor .a= JFloat32 . mul (y.a , y.a)+ JFloat32 . mul (y.b , y.b);
return dividendo + " / " + divisor ;
289
291
293
}
295
/*
****************************************************************\
297
*
14) Método norma
*
*
Calcula a norma de um Complexos
*
299
*
\*****************************************************************
301
303
*/
public static double norma ( Complex x){
double z = x.a*x.a + x.b*x.b;
return z;
}
305
/*
****************************************************************\
307
*
14) Método modulo
*
*
309
Calcula o módulo de um Complexos
*
*
\*****************************************************************
313
*/
public static double modulo ( Complex x){
return Math . sqrt ( norma (x));
}
315
/*
311
****************************************************************\
*
15) Método SetRe
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
118
*
*
317
Modifica o valor da parte real de um complexo
*
*
\*****************************************************************
323
*/
public static Complex SetRe ( Complex x , float z) {
x.a=z;
return x;
}
325
/*
319
321
****************************************************************\
*
*
327
16) Método SetIm
*
Modifica o valor da parte imaginária de um complexo
*
*
\*****************************************************************
333
*/
public static Complex SetIm ( Complex x , float z) {
x.b=z;
return x;
}
335
/*
329
331
****************************************************************\
*
18) Método cosseno
*
*
*
337
Calculo o cosseno
*
\*****************************************************************
339
*/
public static double cosseno ( Complex x) {
341
return x. Re () / modulo (x);
343
}
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
345
119
/*
****************************************************************\
*
19) Método seno
*
*
*
347
Calculo o seno
*
\*****************************************************************
349
*/
public static double seno ( Complex x) {
351
return x. Im () / modulo (x);
353
}
355
/*
****************************************************************\
*
20) Método conv
*
357
*
Converte da forma retangular para a polar
*
*
\*****************************************************************
359
361
363
365
*/
public static Complex conv ( Complex c) {
Complex z;
if (c. forma == ’a ’){
z= new Complex ( ’p ’);
double p= modulo (c);
z. modulo =p;
367
369
double angulo = Math . atan2 (c.b , c.a);
371
double aux = (3.141592653589793/ angulo );
373
375
if ( angulo >0)
z. angulo =180/ aux ;
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
120
377
else
z. angulo =(180/ aux ) +360;
379
}
else {
z= new
double
double
double
381
383
385
Complex ( ’a ’);
seno =0;
cosseno =0;
a = Math . toRadians (c. angulo );
387
seno = ( int ) Math . sin (a);
cosseno = ( int ) Math . cos (a);
389
391
393
z.a= Float . parseFloat ( cosseno *c. modulo +"");
z.b= Float . parseFloat ( seno *c. modulo +"");
395
}
397
return z;
399
}
401
403
/*
****************************************************************\
*
21) Método pot
*
*
*
405
Potenciação
*
\*****************************************************************
407
*/
public static Complex pot ( Complex c , int n) {
409
return Cinterval . mid ( Cinterval . power ( new Cinterval (c) ,n));
411
}
413
/*
ANEXO C. CÓDIGO FONTE DA CLASSE COMPLEX
121
****************************************************************\
*
415
21) Método sqrt
*
*
*
417
Raiz Quadrada
*
\*****************************************************************
421
*/
public static Complex sqrt ( Complex c) {
return Cinterval . mid ( Cinterval . sqrt ( new Cinterval (c)));
}
423
/*
419
****************************************************************\
*
21) Método log
*
*
*
425
Logaritmo
*
\*****************************************************************
*/
public static Complex log ( Complex c) {
return Cinterval . mid ( Cinterval . ln ( new Cinterval (c)));
}
427
429
431
433
}
Anexo D
Código Fonte da Classe Cinterval
1
package ia_math ;
3
5
7
9
11
13
15
/* *
* A classe Cinterval representa um interva r2 fechado de números
complexos
*/
public class Cinterval implements Cloneable {
public RealInterval r1 , r2 ;
public String Err ;
double resxl , resxu ;
static final RealInterval um = new RealInterval (1) ;
static final RealInterval HALFPI = new RealInterval ( Math . PI /2) ;
static final double Inf_Pi = 7074237752028440.0 /
2251799813685248.0;
static final double Inf_rev_sqrt_2 = 6369051672525772.0 /
9007199254740992.0;
static final double Inf_U_atan = 6243314768165359.0 /
4503599627370496.0;
static final RealInterval U_atan = new RealInterval ( Inf_U_atan ,
Math . nextUp ( Inf_U_atan )); // optimal inclusion of
17
19
public Cinterval ( RealInterval r1 , RealInterval r2 ) {
this . r1 =
this . r2 =
21
23
}
25
r1 ;
r2 ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
27
29
public Cinterval () {
this . r1 = new RealInterval (0) ;
this . r2 = new RealInterval (0) ;
}
31
public Cinterval ( Complex c) {
33
this . r1 = new RealInterval (c.a);
this . r2 = new RealInterval (c.b);
35
37
39
}
41
public Cinterval ( RealInterval x) {
this . r1 = x;
this . r2 = x;
43
45
47
}
49
51
53
public RealInterval r1 () {
return this . r2 ;
}
55
57
public RealInterval r2 () {
return this . r2 ;
}
59
61
63
public String toString () {
String temp = new String () ;
temp = this . r1 + " + i" + this . r2 ;
return temp ;
}
65
67
69
public Object clone () {
return new Cinterval ( this . r1 , this . r2 );
}
123
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
124
71
/*
****************************************************************\
73
*
1) Método add
*
*
75
Calcula a soma de Intervalos COmplexos
*
*
\*****************************************************************
*/
77
83
public static Cinterval add ( Cinterval x , Cinterval y) {
Cinterval z = new Cinterval () ;
z. r1 = IAMath . add (x. r1 ,y. r1 );
z. r2 = IAMath . add (x. r2 ,y. r2 ) ;;
return (z);
}
85
/*
79
81
****************************************************************\
*
2) Método sub
*
87
*
Calcula a subração de Intervalos Complexos
*
*
\*****************************************************************
89
91
93
95
*/
public static Cinterval sub ( Cinterval x , Cinterval y) {
Cinterval z = new Cinterval () ;
z. r1 = IAMath . sub (x. r1 ,y. r1 );
z. r2 = IAMath . sub (x. r2 ,y. r2 ) ;;
return (z);
}
97
/*
****************************************************************\
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
*
99
125
3) Método mult
*
*
Calcula a multiplicação de Intervalos Complexos
*
*
101
\*****************************************************************
*/
103
109
public static Cinterval mult ( Cinterval x , Cinterval y) {
Cinterval z = new Cinterval () ;
z. r1 = IAMath . sub ( IAMath . mul (x. r1 ,y. r1 ) , IAMath . mul (x. r2 ,y.
r2 ));
z. r2 = IAMath . add ( IAMath . mul (x. r1 ,y. r2 ) , IAMath . mul (x. r2 ,y.
r1 ));
return (z);
}
111
/*
105
107
****************************************************************\
*
4) Método div
*
*
113
Calcula a divisao de Intervalos Complexos
*
*
\*****************************************************************
*/
115
117
119
121
public static Cinterval div ( Cinterval x , Cinterval y) {
Cinterval z = new Cinterval () ;
RealInterval divisor = IAMath . add ( IAMath . mul (y. r1 , y. r1 ) , IAMath
. mul (y. r2 , y. r2 ));
z. r1 = IAMath . div ( IAMath . add ( IAMath . mul (x. r1 ,y. r1 ) , IAMath . mul
(x. r2 ,y. r2 )) , divisor );
z. r2 = IAMath . div ( IAMath . sub ( IAMath . mul (x. r2 ,y. r1 ) , IAMath . mul
(x. r1 ,y. r2 )) , divisor );
return z;
123
}
125
/*
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
126
****************************************************************\
*
127
5) Método sqr
*
*
Calcula o quadrado de Intervalos Complexos
*
*
129
\*****************************************************************
*/
131
133
135
137
139
141
143
145
147
public static Cinterval sqr ( Cinterval z) {
RealInterval rez = z. r1 ;
RealInterval reza = IAMath . abs (z. r1 );
RealInterval imz = z. r2 ;
RealInterval imza = IAMath . abs (z. r2 );
double irez = reza . lo ;
double srez = reza . hi ;
double iimz = imza . lo ;
double simz = imza . hi ;
RealInterval hxl = new RealInterval ( irez );
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
double resxl , resxu ;
resxl = IAMath . mul ( IAMath . sub (hxl , hyu ) , IAMath . add (hxl , hyu )). lo ;
resxu = IAMath . mul ( IAMath . sub (hxu , hyl ) , IAMath . add (hxu , hyl )). hi ;
hxl = IAMath . mul (rez , imz );
hxl = IAMath . times2pown (hxl , 1) ;
return new Cinterval ( new RealInterval ( resxl , resxu ) ,hxl );
149
151
153
}
155
/*
****************************************************************\
*
157
*
6) Método equals
*
Informa se dois complexos intervalares são iguais ou não
*
*
\*****************************************************************
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
127
*/
159
167
public static boolean equals ( Cinterval x , Cinterval y) {
boolean r= false ;
if (( x. r1 () . hi == y. r1 () . hi ) && (x. r1 () . lo == y. r1 () . lo ) &&
(x. r2 () . hi == y. r2 () . hi ) && (x. r2 () . lo == y. r2 () . lo ))
r= true ;
return r;
}
169
/*
161
163
165
****************************************************************\
*
7) Método conj
*
*
171
Calcula o conjugado de um complexo intervalar
*
*
\*****************************************************************
*/
173
175
public static Cinterval conj ( Cinterval x) {
Cinterval z = new Cinterval () ;
z=x;
z. r2 = IAMath . mulEsc (x.r2 , -1.0) ;
return z;
177
179
181
}
183
/*
****************************************************************\
*
8) Método diam
*
185
*
Calcula o diametro de um complexo intervalar
*
*
\*****************************************************************
187
*/
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
189
191
128
public static Complex diam ( Cinterval x) {
Complex z = new Complex ( ’a ’);
z.a= ( float ) IAMath . diam (x. r1 );
z.b= ( float ) IAMath . diam (x. r2 );
193
return z;
195
}
197
/*
****************************************************************\
*
9) Método mod
*
199
*
Calcula o modulo de um complexo intervalar
*
*
\*****************************************************************
201
203
205
*/
public static RealInterval mod ( Cinterval x) {
RealInterval a= IAMath . sqr (x. r1 );
RealInterval b= IAMath . sqr (x. r2 );
return IAMath . sqrt ( IAMath . add (a ,b));
}
207
209
/*
****************************************************************\
*
211
*
10) Método dist
*
Calcula a distancia entre dois complexos intervalares
*
*
\*****************************************************************
213
215
217
219
*/
public static double dist ( Cinterval x , Cinterval y) {
double a= IAMath . dist (x.r1 , x. r2 );
double b= IAMath . dist (y.r1 , y. r2 );
double c=a -b;
return Math . abs (c);
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
221
}
223
/*
129
****************************************************************\
*
11) Método exp
*
Calcula o exponencial de um número complexo intervalar
*
*
225
*
\*****************************************************************
227
229
*/
public static Cinterval exp ( Cinterval x)
{
RealInterval a= IAMath . exp (x. r1 );
System . out . println (a);
RealInterval b= x. r2 ;
return new Cinterval ( IAMath . mul (a , IAMath . cos (b)) , IAMath . mul (a ,
IAMath . sin (b)));
231
233
235
}
237
239
241
243
245
247
public static Cinterval power ( Cinterval z , int n )
{
if ( n == 0 )
return new Cinterval ( new RealInterval (1) , new RealInterval (1)
);
else if ( n == 1 )
return z;
else if ( n == -1 )
return div ( new Cinterval ( new RealInterval (1) ,new RealInterval
(1) ) ,z);
else if ( n == 2 )
return sqr (z);
else
249
{
251
253
RealInterval abs_z = mod ( z );
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
130
if ( n < 0 && abs_z . lo == 0.0 )
// z contains 0
System . out . println ("z contém 0. ");
if ( abs_z . hi == 0.0 )
return new Cinterval ( new RealInterval (0) , new RealInterval
(0) );
else
{
RealInterval arg_z = arg ( z );
255
257
259
261
RealInterval abs_z_n = IAMath . exp ( IAMath . mulEsc ( IAMath . ln (
abs_z ) ,n) );
abs_z_n . lo = Math . nextAfter ( abs_z_n .lo , Double . MIN_VALUE );
abs_z_n . hi = Math . nextUp ( abs_z_n . hi );
263
265
267
269
return new Cinterval ( IAMath . mul ( abs_z_n , IAMath . cos (
IAMath . mulEsc ( arg_z ,n) )) ,
IAMath . mul ( abs_z_n , IAMath . sin ( IAMath . mulEsc ( arg_z ,n)
) ));
271
}
273
}
275
}
277
279
281
283
285
287
289
291
static double parteInteira ( double valor ) {
if ( valor >= 0.0) {
return Math . floor ( valor );
} else {
return Math . ceil ( valor );
}
}
static double parteFracionaria ( double valor ) {
if ( valor >= 0.0) {
return valor - Math . floor ( valor );
} else {
return valor - Math . ceil ( valor );
}
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
293
131
}
295
297
/*
****************************************************************\
*
299
*
12) Método Ln
*
Calcula o logaritmo de um número complexo intervalar
*
*
301
\*****************************************************************
303
*/
public static Cinterval Ln ( Cinterval z)
{
305
307
RealInterval a = IAMath . abs (z. r1 );
309
if ( a. lo == 0.0 && a. lo == 0.0 )
311
System . out . println ("z contém zero ");
if ( z. r1 .hi <0 && z. r2 .lo <0 && z. r2 .hi >=0 )
System . out . println (" Não permitido ");
313
return new Cinterval ( ln_sqrtx2y2 (z.r1 ,z. r2 ) ,arg (z) );
315
}
317
/*
****************************************************************\
319
*
*
321
12) Método ln
*
Calcula o logaritmo de um número complexo intervalar
*
*
\*****************************************************************
323
*/
public static Cinterval ln ( Cinterval z)
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
132
{
325
RealInterval a1 = IAMath . abs (z. r1 ) ;
RealInterval a2 = IAMath . abs (z. r2 );
if ( a1 . lo == 0.0 && a2 . lo == 0.0 ) {
// z contains 0
System . out . println ("z contém zero ");
return z;
}
else
//
return Cinterval ( ln ( abs_z_2 ) / 2.0 , arg ( z ) );
return new Cinterval ( ln_sqrtx2y2 (z.r1 ,z. r2 ) , arg (z) );
327
329
331
333
335
337
}
339
public static RealInterval Sqrt_zpx ( RealInterval x , RealInterval
y )
341
{
343
345
347
349
int c1 = 1021;
double Infx =x. lo ;
double Infy =y. lo ;
int ex_x = ( int ) Math . exp ( Infx );
int ex_y = ( int ) Math . exp ( Infy );
RealInterval xc = IAMath . abs (x);
RealInterval yc = (y);
RealInterval res ;
boolean yeq0 =( Infy ==0) ;
351
353
355
357
359
361
363
365
if (( ex_x >= c1 ) || ( ex_y >= c1 ))
{ // To avoid overflow , scaling is necessary :
IAMath . power (xc , -2) ;
if ( yeq0 ) {
IAMath . power (xc ,1) ;
res = IAMath . sqrt ( xc );
} else {
IAMath . power (yc , -2) ;
res = IAMath . sqrt ( IAMath . add ( IAMath . sqrtx2y2 (xc , yc ) ,xc ));
}
IAMath . power (res ,1) ; // Backscaling
} else
// Normal calculation without scaling :
if ( yeq0 ) {
IAMath . power (xc ,1) ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
res = IAMath . sqrt ( xc );
} else res = IAMath . sqrt ( IAMath . add ( IAMath . sqrtx2y2 (xc , yc ) ,
xc ));
return res ;
367
369
}
371
public static RealInterval INV_SQRT_2 ()
{ // optimal inclusion of 1/ sqrt (2) ;
RealInterval t = new RealInterval ( Inf_rev_sqrt_2
,0.70710678118654746171500846685377) ;
return t;
}
373
375
133
377
public static RealInterval Re_Sqrt_point ( RealInterval rez ,
RealInterval imz ) // 040626 --
379
{
double
irez = rez .lo ,
iimz = imz . lo ;
381
383
if ( iimz == 0.0 )
{
if ( irez >= 0.0 )
return IAMath . sqrt ( rez );
else
return new RealInterval (0) ;
}
else
{ // iimz <> 0
if ( irez >= 0.0)
return IAMath . mul ( INV_SQRT_2 () , Sqrt_zpx (rez , imz ));
else
return IAMath . div ( IAMath . mulEsc ( INV_SQRT_2 () , Math . abs ( iimz
)) , Sqrt_zpx (rez , imz ));
}
385
387
389
391
393
395
397
}
399
public static RealInterval Im_Sqrt_point ( RealInterval rez ,
RealInterval imz ) // 040626 -401
{
403
double
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
irez = rez .lo ,
iimz = imz . lo ;
405
if ( iimz == 0.0 )
{
if ( irez >= 0.0 )
return new RealInterval (0) ;
else
return IAMath . sqrt ( IAMath . mulEsc (rez , -1) );
}
else
{
if ( rez . lo >= 0.0 )
return IAMath . div ( IAMath . mulEsc ( INV_SQRT_2 () , iimz ) ,
Sqrt_zpx (rez , imz ));
else
{
if ( iimz > 0.0 )
return IAMath . mul ( INV_SQRT_2 () , Sqrt_zpx (rez , imz ));
else
return IAMath . mul ( IAMath . mulEsc ( INV_SQRT_2 () , -1) ,
Sqrt_zpx (rez , imz ));
}
}
407
409
411
413
415
417
419
421
423
425
427
134
}
/*
****************************************************************\
*
*
429
12) Método sqrt
*
Calcula a raiz quadrada de um número complexo intervalar
*
*
\*****************************************************************
431
*/
public static Cinterval sqrt ( Cinterval z )
-------------------------------
433
{
435
437
double
irez = z. r1 .lo ,
srez = z. r1 .hi ,
//
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
135
iimz = z. r2 .lo ,
simz = z. r2 . hi ;
RealInterval
hxl = new RealInterval ( irez );
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
double
resxl , resxu , resyl , resyu ;
if ( irez < 0.0 && iimz < 0.0 && simz >= 0.0 )
439
441
443
445
447
System . out . println (" z não é a raiz principal .");
if ( iimz >=0.0)
{
resxl = Re_Sqrt_point ( hxl , hyl ). lo ;
resxu = Re_Sqrt_point ( hxu , hyu ) . hi ;
449
451
453
resyl = Im_Sqrt_point ( hxu , hyl ) . lo ;
resyu = Im_Sqrt_point ( hxl , hyu ) . hi ;
} else
if ( simz <=0.0) {
resxl = Re_Sqrt_point ( hxl , hyu ). lo ;
resxu = Re_Sqrt_point ( hxu , hyl ). hi ;
455
457
459
resyl = Im_Sqrt_point ( hxl , hyl ). lo ;
resyu = Im_Sqrt_point ( hxu , hyu ). hi ;
} else {
resxl = IAMath . sqrt ( hxl ). lo ;
resxu = ( - iimz > simz ? Re_Sqrt_point ( hxu , hyl ). hi
: Re_Sqrt_point ( hxu , hyu ) . hi );
resyl = Im_Sqrt_point ( hxl , hyl ). lo ;
resyu = Im_Sqrt_point ( hxl , hyu ). hi ;
}
return new Cinterval ( new RealInterval ( resxl , resxu ) , new
RealInterval ( resyl , resyu ) );
461
463
465
467
469
471
}
473
/*
****************************************************************\
*
475
*
11) Método cos
*
Calcula o cosseno de um número complexo intervalar
*
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
136
*
\*****************************************************************
483
*/
public static Cinterval cos ( Cinterval z)
{
RealInterval a = z. r1 ;
RealInterval b = z. r2 ;
return new Cinterval ( IAMath . mul ( IAMath . cos ( a ) , IAMath . cosh ( b
)) , IAMath . mul ( IAMath . mulEsc ( IAMath . sin ( a ) , -1) , IAMath .
sinh ( b )) );
}
485
/*
477
479
481
****************************************************************\
*
12) Método sin
*
*
487
Calcula o seno de um número complexo intervalar
*
*
\*****************************************************************
489
491
493
*/
public static Cinterval sin ( Cinterval z)
{
RealInterval a = z. r1 ;
RealInterval b = z. r2 ;
return new Cinterval ( IAMath . mul ( IAMath . sin ( a ) , IAMath . cosh ( b
)) , IAMath . mul ( IAMath . cos ( a ) , IAMath . sinh ( b )) );
495
}
497
/*
****************************************************************\
499
501
*
13) Método cosh
*
*
Calcula o cosseno hiperbólico de um número complexo
intervalar
*
*
\*****************************************************************
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
503
505
137
*/
public static Cinterval cosh ( Cinterval z)
{
RealInterval a = z. r1 ;
RealInterval b = z. r2 ;
507
return new Cinterval ( IAMath . mul ( IAMath . cos ( b ) , IAMath . cosh ( a
)) , IAMath . mul ( IAMath . sin ( b ) , IAMath . sinh ( a )) );
509
}
511
/*
****************************************************************\
513
*
13) Método sinh
*
*
Calcula o cosseno hiperbólico de um número complexo
intervalar
*
*
515
\*****************************************************************
517
519
*/
public static Cinterval sinh ( Cinterval z)
{
RealInterval a = z. r1 ;
RealInterval b = z. r2 ;
521
return new Cinterval ( IAMath . mul ( IAMath . cos ( b ) , IAMath . sinh ( a
)) , IAMath . mul ( IAMath . sin ( b ) , IAMath . cosh ( a )) );
523
}
525
527
529
public static void horizontal_check ( RealInterval hy , RealInterval
cosh_2y , double irez , double srez ,
RealInterval hxl , RealInterval hxu , double resxl , double resxu
)
531
{
533
boolean both = false , left = false , right = false ;
RealInterval zero = new RealInterval (0) ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
535
537
539
541
138
RealInterval um = new RealInterval (1) ;
if ( srez - irez > Math . PI )
// 2 intersections
both = true ;
else
{
RealInterval res_l = IAMath . sub ( IAMath . cos ( IAMath . mulEsc (hxl
,2) ) , cosh_2y );
RealInterval res_u = IAMath . sub ( IAMath . cos ( IAMath . mulEsc (hxu
,2) ) , cosh_2y );
543
545
547
549
551
553
555
557
559
if ( IAMath . mul ( res_l , res_u ). lo > 0.0 )
// 2 intersections
both = true ;
else
{
if ( IAMath . mul ( res_l , res_u ). hi < 0.0 )
{
// 1 intersection (3 intersections are PI () apart )
// neither of the intervals res_l and res_u contains zero
if ( res_l . lo > 0.0 )
// " left " intersection
left = true ;
else
// " right " intersection
right = true ;
}
else
561
{
563
RealInterval sin_2xl = IAMath . sin ( IAMath . mulEsc (hxl ,2) );
RealInterval sin_2xu = IAMath . sin ( IAMath . mulEsc (hxu ,2) );
565
567
569
571
573
575
if ( ! IAMath . disjoint ( zero , res_l ) )
// intersection on the left boundary
{
if ( sin_2xl . lo >= 0.0 )
// " left " intersection
{
left = true ;
// remove the intersection by changing res_l !
res_l = IAMath . mulEsc (um , -1);
}
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
577
579
581
583
585
587
589
591
593
595
597
599
601
603
605
607
609
611
613
615
else
{
if ( sin_2xl . hi <= 0.0 )
// " right " intersection
{
right = true ;
// remove the intersection by changing res_l !
res_l = um ;
}
else
// zero is interior point of sin_2xl
// if the double sine function has optimal
precision ,
// this case should never happen
both = true ;
}
}
if ( ! IAMath . disjoint ( zero , res_u ) )
// intersection on the right boundary
{
if ( sin_2xu . lo >= 0.0 )
// " left " intersection
{
left = true ;
// remove the intersection by changing res_u !
res_u = um ;
}
else
{
if ( sin_2xu . hi <= 0.0 )
// " right " intersection
{
right = true ;
// remove the intersection by changing res_u !
res_u = IAMath . mulEsc (um , -1);
}
else
// zero is interior point of sin_2xu
// if the double sine function has optimal
precision ,
// this case should never happen
both = true ;
139
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
140
}
617
}
//
// finally , check if there is a second intersection
//
if ( IAMath . mul ( res_l , res_u ). lo < 0.0 )
both = true ;
619
621
623
}
}
}
//
// Calculate extremal values
//
RealInterval re_tan = IAMath . div (um , IAMath . sinh ( IAMath . mulEsc (
IAMath . abs ( hy ) ,2) ));
625
627
629
631
// " left " intersection , sin ( 2x ) > 0
if ( left || both )
{
resxl = Math . min ( resxl , re_tan . hi );
resxu = Math . max ( resxu , re_tan . lo );
}
633
635
637
645
// " right " intersection , sin ( 2x ) < 0
if ( right || both )
{
resxl = Math . min ( resxl , - re_tan . lo );
resxu = Math . max ( resxu , - re_tan . hi );
}
} // end horizontal_check
647
/*
639
641
643
****************************************************************\
*
649
11) Método tan
*
Calcula a tangente de um número complexo intervalar
*
*
*
\*****************************************************************
651
*/
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
653
141
public static Cinterval tan ( Cinterval x) {
Cinterval z = new Cinterval () ;
655
657
659
RealInterval rez = x. r1 ;
RealInterval imz = x. r2 ;
double irez = rez . lo ;
double srez = rez . hi ;
double iimz = imz . hi ;
661
663
665
667
double simz = imz . hi ;
RealInterval r= new RealInterval ( -1) ;
RealInterval r2 = new RealInterval (1) ;
RealInterval hxl = new RealInterval ( irez );
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
669
double resxl , resxu , resyl , resyu ;
671
RealInterval
cos_2rez
= IAMath . cos ( IAMath . mulEsc (rez , 2) );
673
RealInterval sinh_imz_2 = IAMath . sqr ( IAMath . sinh2 ( imz ) );
675
677
679
RealInterval re_tan_l = IAMath . div (( IAMath . sin ( IAMath . mulEsc (
hxl ,2) )) , ( IAMath . mulEsc ( IAMath . add ( IAMath . sqr ( IAMath .
cos ( hxl ) ) , sinh_imz_2 ) ,2 )));
RealInterval re_tan_u = IAMath . div (( IAMath . sin ( IAMath . mulEsc (
hxu ,2 ))) , ( IAMath . mulEsc ( IAMath . add ( IAMath . sqr ( IAMath .
cos ( hxu ) ) , sinh_imz_2 ) ,2) ));
resxl = Math . min ( re_tan_l . lo , re_tan_u . lo );
681
683
685
687
689
691
resxu = Math . max ( re_tan_l . hi , re_tan_u . hi ) ;
//
// look for extremal values on horizontal boundaries
// if one of the horizontal boundaries is the x - axes ,
// then the complex tangent is the double tangent on this
// boundary , and due to monotonicity , its range
// is already included in the ranges of the vertical boundaries
//
if ( irez < srez )
{
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
142
RealInterval cosh_2yl = IAMath . div (r , IAMath . cosh ( IAMath .
mulEsc (hyl ,2) ));
RealInterval cosh_2yu = IAMath . div (r , IAMath . cosh ( IAMath .
mulEsc (hyu ,2) ));
693
695
if ( !( IAMath . disjoint ( cos_2rez , cosh_2yl )) && iimz != 0.0 )
// extremal curve intersects lower boundary
horizontal_check ( hyl , cosh_2yl , irez , srez , hxl , hxu , resxl
, resxu );
697
699
if (!( IAMath . disjoint ( cos_2rez , cosh_2yu )) && simz != 0.0 )
// extremal curve intersects upper boundary
horizontal_check ( hyu , cosh_2yu , irez , srez , hxl , hxu , resxl
, resxu );
701
703
705
707
709
711
}
//
// 3 rd : imaginary part
//
// evaluate tan on horizontal boundaries
//
RealInterval cos_rez_2 = IAMath . sqr ( IAMath . cos ( rez ) );
RealInterval im_tan_l = IAMath . div ( IAMath . sinh ( IAMath . mulEsc (
hyl ,2) ) , ( IAMath . mulEsc (( IAMath . add ( cos_rez_2 , IAMath . sqr
( IAMath . sinh ( hyl ) ) )) ,2) ));
RealInterval im_tan_u = IAMath . div ( IAMath . sinh ( IAMath . mulEsc (
hyu ,2) ) , ( IAMath . mulEsc (( IAMath . add ( cos_rez_2 , IAMath . sqr
( IAMath . sinh ( hyu ) ) )) ,2) ));
713
715
resyl = Math . min ( im_tan_l .lo , im_tan_u . lo );
resyu = Math . max ( im_tan_l .hi , im_tan_u . hi );
717
719
721
723
725
//
//
//
//
//
look for extremal values on vertical boundaries
here , the situation is simpler than for the double part
if 2 intersections with extremal curves appear ,
one lies in the lower half plane , the other in the upper
half plane
//
RealInterval cos_2xl = IAMath . cos ( IAMath . mulEsc (hxl ,2) );
RealInterval cos_2xu = IAMath . cos ( IAMath . mulEsc (hxu ,2) );
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
143
RealInterval im_tan ;
727
729
if ( iimz < 0.0 )
// intersection in lower half plane ?
{
731
RealInterval imz_h = new RealInterval ( iimz , Math . min ( simz ,
0.0 ) );
733
RealInterval cosh_2imz = IAMath . div (r , IAMath . cosh ( IAMath .
mulEsc ( imz_h ,2) ));
735
737
739
741
743
745
747
749
751
753
755
757
if ( ( ! IAMath . disjoint ( cosh_2imz , cos_2xl ) ) )
// extremal curve intersects left boundary
// in this case , sin ( 2 * xl ) <> 0.0 ( no poles
{
im_tan = IAMath . div (r , IAMath . abs ( IAMath . sin (
(hxl ,2) ) ));
resyl = Math . min ( resyl , im_tan . lo );
resyu = Math . max ( resyu , im_tan . hi );
}
if ( ( ! IAMath . disjoint ( cosh_2imz , cos_2xu ) ) )
// extremal curve intersects right boundary
// in this case , sin ( 2 * xu ) <> 0.0 ( no poles
{
im_tan = IAMath . div (r , IAMath . abs ( IAMath . sin (
(hxu ,2) ) ));
resyl = Math . min ( resyl , im_tan . lo );
resyu = Math . max ( resyu , im_tan . hi );
}
here !)
IAMath . mulEsc
here !)
IAMath . mulEsc
}
if ( simz > 0.0 )
// intersection in upper half plane ?
{
RealInterval
simz );
imz_h = new RealInterval ( Math . max ( iimz , 0.0 ) ,
759
RealInterval cosh_2imz = IAMath . div (r , IAMath . cosh ( IAMath .
mulEsc ( imz_h ,2) ) );
761
if ( ( ! IAMath . disjoint ( cosh_2imz , cos_2xl ) ) )
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
144
// extremal curve intersects left boundary
// in this case , sin ( 2 * xl ) <> 0.0 ( no poles here !)
763
{
765
im_tan = IAMath . div (r2 , IAMath . abs ( IAMath . sin ( IAMath . mulEsc
(hxl ,2) )) );
resyl = Math . min ( resyl , im_tan . lo );
resyu = Math . max ( resyu , im_tan . hi );
767
}
if ( ( ! IAMath . disjoint ( cosh_2imz , cos_2xu ) ) )
// extremal curve intersects right boundary
// in this case , sin ( 2 * xu ) <> 0.0 ( no poles here !)
{
im_tan = IAMath . div (r2 , IAMath . abs ( IAMath . sin ( IAMath . mulEsc
(hxu ,2) )) );
resyl = Math . min ( resyl , im_tan . lo );
resyu = Math . max ( resyu , im_tan . hi );
}
769
771
773
775
777
}
779
z. r1 = new RealInterval ( resxl , resxu );
z. r2 = new RealInterval ( resyl , resyu );
781
783
return z;
785
}
/*
****************************************************************\
787
*
*
789
12) Método cot
*
Calcula a cotangente de um número complexo intervalar
*
*
\*****************************************************************
791
793
*/
public static Cinterval cot ( Cinterval z )
{
RealInterval r = new RealInterval ( Math . PI /2) ;
Cinterval c1 = new Cinterval (r);
795
797
Cinterval c = tan ( sub (c1 ,z));
return c;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
145
}
799
/*
****************************************************************\
801
803
*
13) Método tanh
*
*
Calcula a tangente hiperbólica de um número complexo
intervalar
*
*
\*****************************************************************
809
*/
public static Cinterval tanh ( Cinterval z )
{
Cinterval res = tan ( new Cinterval ( z.r1 , z. r2 ) );
return new Cinterval ( res .r1 , res . r2 );
}
811
/*
805
807
****************************************************************\
813
*
14) Método coth
*
*
Calcula a cotangente hiperbólica de um número complexo
intervalar
*
*
\*****************************************************************
821
*/
public static Cinterval coth ( Cinterval z )
{ // coth ( z ) = i * cot ( i * z );
Cinterval zh = new Cinterval ( IAMath . mulEsc (z.r1 , -1) , z. r2 );
// zh = i*z;
Cinterval res = cot ( zh );
return ( new Cinterval ( IAMath . mulEsc ( res .r1 , -1) ,res . r2 ) );
}
823
/*
815
817
819
****************************************************************\
*
14) Método Atan
*
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
*
825
146
Calcula o arco - tangente de um número complexo intervalar
*
*
\*****************************************************************
827
829
831
833
835
837
*/
public static RealInterval Atan ( RealInterval y , RealInterval x )
{ // coth ( z ) = i * cot ( i * z );
int c = 54;
double Infx =( x. lo ) ,
Infy =( y. lo );
int ex_x =( int )( Math . getExponent ( Infx ) +1) ,
ex_y =( int )( Math . getExponent ( Infy ) +1) ,
signx =( int )( Math . signum ( Infx )) ,
signy =( int )( Math . signum ( Infy )) ,
signq ;
RealInterval res = new RealInterval (0) ;
839
if ( signy !=0) {
signq = signx * signy ;
if ( ex_y - ex_x > c) res = signq >0 ? HALFPI : IAMath . mulEsc (
HALFPI , -1) ;
else res = IAMath . arctan ( IAMath . div (y ,x));
}
841
843
845
return res ;
847
}
849
/*
****************************************************************\
851
*
*
853
14) Método Atan
*
Calcula o arco - tangente de um número complexo intervalar
*
*
\*****************************************************************
855
857
*/
public static RealInterval Atan ( RealInterval y , double x )
{
return Atan (y , new RealInterval (x));
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
147
}
859
861
/*
****************************************************************\
*
*
863
14) Método Arg
*
Calcula o argumento de um número complexo intervalar
*
*
\*****************************************************************
865
*/
public static RealInterval Arg ( Cinterval z)
867
{
869
871
873
875
877
double
srez = z. r1 .hi ,
irez = z. r1 .lo ,
simz = z. r2 .hi ,
iimz = z. r2 . lo ;
RealInterval
RealInterval
RealInterval
RealInterval
hxl = new RealInterval ( irez );
hxu = new RealInterval ( srez );
hyl = new RealInterval ( iimz );
hyu = new RealInterval ( simz );
879
double resl , resu ;
881
883
885
887
889
891
if ( iimz > 0.0 )
// case I: Im (z) > 0
{
resl = ( srez > 0.0 ? Atan ( hyl , hxu
Atan ( hyu , hxu ). lo + Math . PI :
resu = ( irez > 0.0 ? Atan ( hyu , hxl
Atan ( hyl , hxl ). hi + Math . PI :
return new RealInterval ( resl , resu
}
else
{
if ( simz < 0.0 )
// case II : Im (z) < 0
). lo : (
HALFPI . lo
). hi : (
HALFPI . hi
);
srez < 0.0 ?
) );
irez < 0.0 ?
) );
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
893
895
897
899
901
903
905
907
909
911
913
915
917
919
921
923
925
927
929
931
148
{
resl =
>
resu =
>
return
( irez < 0.0 ? Atan ( hyu , hxl ). lo - Math . PI : ( irez
0.0 ? Atan ( hyl , hxl ). lo : - HALFPI . lo ) );
( srez < 0.0 ? Atan ( hyl , hxu ). hi - Math . PI : ( srez
0.0 ? Atan ( hyu , hxu ). hi : - HALFPI . lo ) );
new RealInterval ( resl , resu );
}
else
// 0 in Im (z)
{
if ( irez > 0.0 )
// case III : Re (z) > 0
// z contains positive double values
{
resl = ( iimz < 0.0 ? Atan ( hyl , hxl ). hi : 0.0 );
return new RealInterval ( resl , Atan ( hyu , hxl ). hi );
}
else
// z contains nonpositive double numbers
{
if ( irez < 0.0 )
{
// case IV : z contains negative double numbers
System . out . println ("z contém números negativos ");
return new RealInterval (0.0) ;
}
else
// case V: 0 in z , but z doesn ’t contain negative
double numbers
{
if ( srez > 0.0 )
// diam ( Re (z) > 0.0 )
{
resl = ( iimz < 0.0 ? - HALFPI . hi : 0.0 );
resu = ( simz > 0.0 ? HALFPI . hi : 0.0 );
return new RealInterval ( resl , resu );
}
else
// Re (z) == 0.0
{
if ( iimz == 0.0 && simz == 0.0 )
// Z == 0
return new RealInterval (0) ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
149
else
{
resl = ( iimz < 0.0 ? - HALFPI . hi : HALFPI . lo );
resu = ( simz > 0.0 ? HALFPI . hi : - HALFPI . lo );
return new RealInterval ( resl , resu );
}
933
935
937
}
939
}
}
941
}
}
943
945
}
947
/*
****************************************************************\
949
*
*
951
14) Método arg
*
Calcula o argumento de um número complexo intervalar
*
*
\*****************************************************************
953
955
957
*/
public static RealInterval arg ( Cinterval z) {
double
srez = z. r1 . hi ;
double irez = z. r1 . lo ;
double simz = z. r2 . hi ;
double iimz = z. r2 . lo ;
959
double resl , resu ;
961
963
965
967
969
if ( irez < 0.0 && iimz <= 0.0 && simz >= 0.0 )
// z contains negative real values
{
if ( srez > 0.0 )
// 0 in z and 0 interior point of Re (z)
{
resl = ( iimz < 0.0 ? - Math . PI : 0.0 );
resu = ( ( iimz < 0.0 && simz == 0.0 ) ? 0.0 : Math . PI );
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
150
return new RealInterval ( resl , resu );
}
else
{ // srez <= 0.0
if ( iimz == simz )
// z is real interval containing no positive values
return new RealInterval ( Math . PI );
else
// sup ( Re (z) ) <= 0, diam ( Im (z) ) > 0
{
if ( srez == 0.0 )
{
resl = ( simz > 0.0 ? Math . PI /2 : - Math . PI );
resu = ( iimz < 0.0 ? ( simz > 0.0 ? IAMath . mulEsc (
HALFPI ,3 ). hi : - HALFPI . hi ) : Math . PI );
return new RealInterval ( resl , resu );
}
else
//
sup ( Re (z) ) < 0, diam ( Im (z) ) > 0
{
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
resl = ( simz > 0.0 ? IAMath . add ( Atan ( hyu , srez ) , new
RealInterval ( Math . PI )). lo : - Math . PI );
resu = ( iimz < 0.0 ? ( simz > 0.0 ? IAMath . add ( Atan (
hyl , srez ) , new RealInterval ( Math . PI ) ). hi :
IAMath . sub ( Atan ( hyl , srez ) , new RealInterval ( Math . PI
)). hi ) : Math . PI );
return new RealInterval ( resl , resu );
}
}
}
}
else
// Arg (z) is well - defined
return Arg ( z );
971
973
975
977
979
981
983
985
987
989
991
993
995
997
999
1001
}
1003
1005
1007
public static RealInterval ln_sqrtx2y2 ( RealInterval x ,
RealInterval y){
RealInterval ad = IAMath . add ( IAMath . sqr (x) , IAMath . sqr (y));
RealInterval log = IAMath . ln ( ad );
return IAMath . mulEsc (log ,0.5) ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
1009
}
1011
public static Cinterval sqrtp1m1 ( Cinterval z)
1013
{
151
double c = 1.5;
Cinterval res ;
RealInterval absz = mod (z);
double Sup_absz =( absz . hi );
1015
1017
if ( Sup_absz < c)
res = div (z , ( add ( sqrt ( add (z , new Cinterval ( new RealInterval (1)
, new RealInterval (1) ))) ,new Cinterval ( new RealInterval
(1) , new RealInterval (1) ))));
else
res = sub ( sqrt ( add (z , new Cinterval ( new RealInterval (1) , new
RealInterval (1) ))) , new Cinterval ( new RealInterval (1) , new
RealInterval (1) ));
return res ;
1019
1021
1023
}
1025
public static Cinterval sqrt1mx2 ( Cinterval z)
1027
{
1029
1031
double c = 5 e8 ;
Cinterval res ,u;
RealInterval absz =( mod (z));
double Inf_absz =( absz . lo );
1033
1035
1037
1039
1041
1043
if ( Inf_absz > c)
{
absz = IAMath . div ( new RealInterval (1) , new RealInterval (
Inf_absz ));
Inf_absz = absz . hi ;
res = new Cinterval ( new RealInterval (- Inf_absz , Inf_absz ) ,
new RealInterval (- Inf_absz , Inf_absz )); // res = Delta
u = new Cinterval ( IAMath . mulEsc (z.r2 , -1) ,z. r1 ); // u = i*z
;
// res is the correcture interval , i.e.
// i*z + res or -i*z + res is the inclusion of sqrt {1 -z ^2}
res = (z. r2 .lo >=0) ? add ( mult (u , new Cinterval ( new
RealInterval ( -1) , new RealInterval ( -1) )) , res ) : add
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
152
(u ,res );
}
else
{
res = sub ( new Cinterval ( new RealInterval (1) , new RealInterval
(1) ) ,z);
u = add ( new Cinterval ( new RealInterval (1) , new RealInterval (1)
) ,z);
res = ( mod ( res ).hi <0.5 || mod (u).hi <0.5) ? sqrt ( mult (res ,u)) :
sqrt ( sub ( new Cinterval ( new RealInterval (1) ,new
RealInterval (1) ) ,sqr (z)));
}
if ( res . r1 .lo <0)
res = new Cinterval ( new RealInterval (0.0 , res . r1 . hi ) , res . r2 )
;
1045
1047
1049
1051
1053
return res ;
1055
}
1057
1059
1061
1063
1065
1067
public static RealInterval f_aux_asin ( RealInterval x , RealInterval
y )
// f_aux_asin (z) = ( |z +1| + |z -1| ) / 2
{
RealInterval um = new RealInterval (1) ;
RealInterval res ;
if (y. lo ==0 && y. hi ==0 && IAMath . abs (x). lo == 1.0 && IAMath . abs (
x). hi == 1.0)
res = new RealInterval (1.0) ;
else {
res =
IAMath . div ( IAMath . add ( IAMath . sqrtx2y2 ( IAMath . add (x , um ) ,y) ,
IAMath . sqrtx2y2 ( IAMath . sub (x , um ) ,y)) ,new RealInterval (2)
);
1069
1071
1073
1075
}
if ( res . hi == java . lang . Double . POSITIVE_INFINITY ) // Blomquist :
program stop , if overflow occurs .
{
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
System . out . println ("
153
z fora de alcance ");
1077
}
double hlb = Math . max ( 1.0 , Math . abs ( x. hi ) );
if ( res . lo < hlb )
// invalid overestimation !
res = new RealInterval ( hlb , res . hi );
1079
1081
1083
return res ;
1085
}
1087
1089
1091
1093
1095
1097
1099
1101
1103
1105
1107
1109
1111
1113
public static RealInterval f_aux_asin_Vn ( RealInterval x ,
RealInterval y)
{ // normal calculation of V;
RealInterval V ,f1 , f2 ;
f1 = IAMath . add (x , new RealInterval (1.0) ); f2 = IAMath . add (x ,
new RealInterval ( -1.0) );
V = IAMath . add ( IAMath . mul ( IAMath . abs ( f1 ) , IAMath . sqrtp1m1 ( IAMath .
sqr ( IAMath . div (y , f1 )))) , IAMath . mul ( IAMath . abs ( f2 ) , IAMath .
sqrtp1m1 ( IAMath . sqr ( IAMath . div (y , f2 )))));
V= IAMath . times2pown (V , -1) ;
return V;
} // f_aux_asin_Vn
public static RealInterval ACOSH_p1 ( RealInterval x , RealInterval y
)
{ // Calculating an inclusion for acosh (1+ V /2) if |x | <1;
int p = -80;
double r1 =y. lo ;
double t;
int ex = ( int ) Math . getExponent ( r1 ) +1;
RealInterval res = new RealInterval (0.0) ,u ,V;
if (ex > -2000 && ex <= -80) {
u = IAMath . div ( IAMath . abs (y) , IAMath . sqrt1mx2 (x));
t = u. lo ;
res = new RealInterval (t ,u. hi );
} else
if (ex >p) {
V = f_aux_asin_Vn (x ,y); // usual calculation
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
154
res = IAMath . acoshp1 (V);
1115
1117
}
return res ;
} // ACOSH_p1
1119
1121
1123
1125
1127
1129
public static RealInterval ACOSH_f_aux ( RealInterval x ,
RealInterval y )
// Calculating acosh ( f_aux_asin (x ,y) ); x ,y: point intervals !!
{
RealInterval res , delta ;
double rx = Math . abs (x. lo );
double ry = Math . abs (y. lo );
if (rx >2.0 || ry >2.0) {
res = IAMath . coshI ( f_aux_asin (x ,y) ); // as before !
1131
1133
1135
1137
}
else {
if ( rx == 1.0) {
delta = IAMath . abs (y);
1139
if ( Math . getExponent ( delta . lo ) +1 <= -50) {
1141
1143
1145
res = IAMath . sqrt ( delta );
rx = res . hi ;
if (rx >0) res =
new RealInterval ( Math . nextAfter ( res .lo , Double . MIN_VALUE )
, Math . nextUp ( rx ));
} else {
1147
1149
1151
RealInterval aux = IAMath . div ( IAMath . abs (y) , new
RealInterval (2) ); // delta : |y |/2;
delta = IAMath . add ( IAMath . sqrtp1m1 ( IAMath . sqr ( aux )) , aux )
;
res = IAMath . acoshp1 ( delta );
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
155
1153
}
}
else
if (rx <1.0) res = ACOSH_p1 (x ,y);
else res = IAMath . acoshp1 ( IAMath . add (( IAMath . sub ( IAMath . abs
(x) ,new RealInterval (1.0) )) , f_aux_asin_Vn (x ,y) ));
1155
1157
1159
1161
}
return res ;
} // ACOSH_f_aux
1163
public static RealInterval Asin_beta ( RealInterval x , RealInterval
y )
1165
{
1167
1169
double c1 = 0.75;
boolean neg_b ;
double Infxa ;
RealInterval res , beta , abs_beta , delta ,tm ,tp ,u ,v , xa ;
RealInterval aux , aux2 ;
1171
aux = IAMath . add ( IAMath . sqrtx2y2 ( IAMath . add (x , new RealInterval (1)
) ,y) , IAMath . sqrtx2y2 ( IAMath . sub ( new RealInterval (1) ,x) ,y))
;
1173
aux2 = IAMath . div (aux , new RealInterval (2) );
1175
beta = IAMath . div (x , aux2 );
1177
1179
1181
if ( beta .lo < -1)
beta . lo = -1;
if ( beta .hi > 1)
beta . hi =1;
abs_beta = IAMath . abs ( beta );
1183
1185
1187
1189
1191
if ( abs_beta .lo < c1 ){
res = IAMath . arcsin ( beta ); // Normal calculation
}
else { // Inf ( abs_beta ) >= c1 ; Calculation now with improvements :
xa = x;
neg_b = x.lo <0;
if ( neg_b ) xa = IAMath . mulEsc (xa , -1) ; // Inf ( xa ) >0 :
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
156
Infxa = xa . lo ;
if ( Infxa > 1) {
tm = IAMath . div (y , IAMath . sub (xa , new RealInterval (1) ));
tp = IAMath . div (y , IAMath . add (xa , new RealInterval (1) ));
u = IAMath . sqrtp1m1 ( IAMath . sqr ( tm ));
v = IAMath . sqrtp1m1 ( IAMath . sqr ( tp ));
delta = IAMath . div (( IAMath . sub ( IAMath . mul (tm , tp ) , IAMath . mul (
u ,v))) , ( IAMath . add ( IAMath . add ( new RealInterval (2) ,u) ,v))
);
} else
if ( Infxa == 1) {
u = IAMath . abs (y);
u= IAMath . div ( IAMath . abs (y) , new RealInterval (2) ); // u = |y
|/2
delta = IAMath . sub (u , IAMath . sqrtp1m1 ( IAMath . sqr (u)));
} else {
tp = IAMath . add ( new RealInterval (1) ,xa );
tm = IAMath . sub ( new RealInterval (1) ,xa );
delta = IAMath . mul (tm ,( IAMath . add ( IAMath . sqrt ( IAMath . add ( new
RealInterval (1) , IAMath . sqr ( IAMath . div (y , tm )))) , IAMath .
mul ( IAMath . sub ( new RealInterval (1) , tp ) , IAMath . sqrtp1m1
( IAMath . sqr ( IAMath . div (y , tp )))))));
delta = IAMath . times2pown ( delta , -1) ;
}
res = IAMath . sub ( HALFPI , IAMath . arcsin ( IAMath . sqrt ( IAMath . mul (
delta ,( IAMath . sub ( new RealInterval (2) , delta ))))) );
if ( neg_b ) res = IAMath . mulEsc (res , -1);
}
return res ;
1193
1195
1197
1199
1201
1203
1205
1207
1209
1211
1213
}
1215
1217
1219
1221
1223
1225
public static Cinterval asin ( Cinterval z ) //
---------------------- 040730 -{
double gr = 6.355804 e307 ; // upper bound for abs ( rez ) ,abs ( imz )
RealInterval
rez = z.r1 ,
imz = z. r2 ;
double
srez =
iimz =
simz =
irez = rez .lo ,
rez .hi ,
imz .lo ,
imz . hi ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
157
1227
1231
RealInterval hxl = new RealInterval ( irez );
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
1233
double resxl , resxu , resyl , resyu ;
1235
boolean bl
= ( iimz < 0.0) && ( simz >0.0) ,
raxis = ( iimz ==0.0) && ( simz ==0) ;
1229
1237
1239
1241
1243
1245
1247
1249
1251
1253
1255
1257
//
// 1 st : check for singularities
//
if ( ( irez < -1 && ( bl || ( iimz <0 && simz ==0) )) ||
( srez >1 && ( bl || ( iimz ==0 && simz >0) )) )
System . out . println (" Erro no Arco Cosseno ");
//
// check for too large bounds of abs ( rez ) and abs ( imz ) to
prevent
// overflow by calculating f_aux_asin (...)
//
resxl = Math . max ( Math . abs ( irez ) , Math . abs ( srez ));
resxu = Math . max ( Math . abs ( iimz ) , Math . abs ( simz ));
if ( resxl > gr || resxu > gr )
System . out . println (" Erro no Arco Cosseno 2");
//
// 2 nd : real part
//
if ( iimz < 0.0 && simz > 0.0 )
// z intersects [ -1 ,1]
{
if ( irez <= 0.0 ){
1259
resxl = IAMath . arcsin ( hxl ). lo ;
1261
}
else {
1263
//
resxl = Inf ( asin ( hxl / f_aux_asin ( hxl , interval (
max ( - iimz , simz ) ) ) ) );
resxl = Asin_beta (hxl , new RealInterval ( Math . max (- iimz , simz )
)) . lo ; // Blomquist , 19.06.2005;
1265
}
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
1267
1269
1271
1273
158
if ( srez < 0.0 )
//
resxu = Sup ( asin ( hxu / f_aux_asin ( hxu , interval (
max ( - iimz , simz ) ) ) ) );
resxu = Asin_beta (hxu , new RealInterval ( Math . max (- iimz , simz )
)) . hi ; // Blomquist , 19.06.2005;
else
resxu = IAMath . arcsin ( hxu ) . hi ;
}
else
{
1275
1277
if ( (
<=
//
//
iimz >= 0.0 && irez >= 0.0 ) || ( simz <= 0.0 && irez
0.0 ) ){
left boundary in quadrants I or III
min ( Re ( z ) ) in upper left corner
1279
resxl =
1281
1283
1285
1287
1289
1291
Asin_beta (hxl , hyu ) . lo ; // Blomquist , 19.06.2005;
}
else {
// left boundary in quadrants II or IV
// min ( Re ( z ) ) in lower left corner
// resxl = Inf ( asin ( hxl / f_aux_asin ( hxl , hyl ) ) );
resxl =
}
if ( (
<=
//
//
//
Asin_beta (hxl , hyl ) . lo ; // Blomquist , 19.06.2005;
iimz >= 0.0 && srez >= 0.0 ) || ( simz <= 0.0 && srez
0.0 ) ){
right boundary in quadrants I or III
max ( Re ( z ) ) in lower right corner
resxu = Sup ( asin ( hxu / f_aux_asin ( hxu , hyl ) ) );
1293
resxu =
1295
1297
1299
1301
1303
1305
Asin_beta (hxu , hyl ) . hi ; // Blomquist , 19.06.2005;
}
else
// right boundary in quadrants II or IV
// max ( Re ( z ) ) in upper right corner
// resxu = Sup ( asin ( hxu / f_aux_asin ( hxu , hyu ) ) );
resxu = Asin_beta (hxu , hyu ) . hi ; // Blomquist , 19.06.2005;
}
//
// 3 rd : imaginary part
//
if ( raxis ) { // Interval argument is now a subset of the real
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
1307
1309
1311
159
axis .
// Blomquist , 16.06.2005;
if ( srez <0.0) resyl = ACOSH_f_aux ( hxu , hyu ). lo ;
else
resyl = - ACOSH_f_aux ( hxu , hyu ). hi ;
if ( irez >0.0) resyu = - ACOSH_f_aux ( hxl , hyu ). lo ;
else
resyu =
ACOSH_f_aux ( hxl , hyu ). hi ;
} else
if ( simz <= 0.0 )
1313
//
//
//
1315
1317
1319
1321
z in lower half plane
min ( Im ( z ) ) in point with max |z|
max ( Im ( z ) ) in point with min |z|
{
if ( irez < - srez )
// most of z in quadrant III
{
resyl = - ACOSH_f_aux ( hxl , hyl ) . hi ;
if ( srez < 0.0 )
1323
1325
resyu = -
ACOSH_f_aux ( hxu , hyu ). lo ;
1327
else
1329
resyu = -
ACOSH_f_aux ( new RealInterval (0) , hyu ) . lo ;
1331
1333
1335
}
else
//
{
most of z in quadrant IV
resyl = - ACOSH_f_aux ( hxu , hyl ) . hi ;
System . out . println ( resyl );
if ( irez > 0.0 ){
resyu = - ACOSH_f_aux ( hxl , hyu ) . lo ;
1337
1339
1341
}
else
resyu = -
1343
1345
1347
ACOSH_f_aux ( new RealInterval (0) , hyu ) . lo ;
}
}
else if ( iimz >= 0.0 )
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
//
//
//
1349
160
z in upper half plane
min ( Im ( z ) ) in point with min |z|
max ( Im ( z ) ) in point with max |z|
1351
{
1353
1355
1357
1359
1361
1363
1365
if ( irez < - srez ) // if ( irez + srez < 0.0 )
// most of z in quadrant II
{
resyu = ACOSH_f_aux ( hxl , hyu ) . hi ;
if ( srez < 0.0 )
resyl = ACOSH_f_aux ( hxu , hyl ) . lo ;
else
resyl = ACOSH_f_aux ( new RealInterval (0) , hyl ) . lo ;
}
else
// most of z in quadrant I
{
1367
resyu = ACOSH_f_aux ( hxu , hyu ) . hi ;
1369
if ( irez > 0.0 ){
1371
resyl = ACOSH_f_aux ( hxl , hyl ) . lo ;
1373
1375
1377
1379
1381
1383
1385
1387
1389
}
else
resyl =
ACOSH_f_aux ( new RealInterval (0) , hyl ) . lo ;
}
}
else
// z intersects imaginary axes
// min ( Im ( z ) ) in point in lower half plane with max |z|
// max ( Im ( z ) ) in point in upper half plane with max |z|
{
if ( irez < - srez ) // if ( irez + srez < 0.0 )
// most of z in quadrants II and IV
{
resyl = - ACOSH_f_aux ( hxl , hyl ) . hi ;
resyu =
ACOSH_f_aux ( hxl , hyu ) . hi ;
}
else
{
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
resyl = resyu =
1391
161
ACOSH_f_aux ( hxu , hyl ). hi ;
ACOSH_f_aux ( hxu , hyu ) . hi ;
}
1393
}
1395
return new Cinterval ( new RealInterval ( resxl , resxu ) , new
RealInterval ( resyl , resyu ) );
1397
}
1399
public static RealInterval Acos_beta ( RealInterval x , RealInterval
y )
// Calculating the improved real part of acos (z); Blomquist
05.06.2005;
// Re ( acos (z)) = acos [ 2x /( sqrt [( x +1) ^2+ y ^2] + sqrt [(x -1) ^2+ y ^2])
]
{
1401
1403
1405
1407
1409
1411
1413
1415
RealInterval um = new RealInterval (1) ;
double c1 = 0.75;
RealInterval res = new RealInterval (0) ,beta , delta ,tm ,tp ,u ,v , xa ;
double Infy =y.lo , Infx =x. lo ;
RealInterval aux , aux2 , aux3 ;
aux = IAMath . sqrtx2y2 ( IAMath . add (um ,x) ,y);
aux2 = IAMath . sqrtx2y2 ( IAMath . sub (um ,x) ,y);
aux3 = IAMath . div ( IAMath . add (aux , aux2 ) , new RealInterval (2) );
beta = IAMath . div (x , aux3 );
if ( beta .lo < -1) beta . lo = -1;
if ( beta .hi > 1) beta . hi = 1;
1417
1419
1421
if ( beta .hi < c1 )
if ( beta .hi <- c1 ) { // Improvement for beta --> -1
xa = IAMath . mulEsc (x , -1) ;
// Inf ( xa ) >0:
Infx = - Infx ; // Infx > 0:
if ( Infx > 1) {
1423
1425
1427
tm = IAMath . div (y ,( IAMath . sub (xa , um )));
tp = IAMath . div (y ,( IAMath . add (xa , um )));
u = IAMath . sqrtp1m1 ( IAMath . sqr ( tm ));
v = IAMath . sqrtp1m1 ( IAMath . sqr ( tp ));
delta = IAMath . div ( IAMath . sub ( IAMath . mul (tm , tp ) , IAMath
. mul (u ,v)) ,
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
IAMath . add ( IAMath . add ( new RealInterval (2) ,u) ,v));
1429
1431
1433
1435
1437
1439
1441
1443
1445
1447
1449
1451
1453
1455
162
} else
if ( Infx == 1) {
u = IAMath . abs (y);
u= IAMath . div ( IAMath . abs (y) , new RealInterval (2) ); //
u = |y |/2
delta = IAMath . sub (u , IAMath . sqrtp1m1 ( IAMath . sqr (u)))
;
} else {
tm = IAMath . div (y ,( IAMath . sub (um , xa )));
tp = IAMath . div (y ,( IAMath . add (um , xa )));
delta = IAMath . sub ( IAMath . mul (tm ,( IAMath . add ( IAMath .
sqrt ( IAMath . add (um , IAMath . sqr ( IAMath . div (y , tm )))) ,
um ))) , IAMath . mul (tp , IAMath . sqrtp1m1 ( IAMath . sqr (
IAMath . div (y , tp )))));
delta = IAMath . times2pown ( delta , -1) ;
}
res = IAMath . sub ( new RealInterval ( Math . PI ) , IAMath . arcsin
( IAMath . sqrt ( IAMath . mul ( delta ,( IAMath . sub ( new
RealInterval (2) , delta ))))) );
} else res = IAMath . arccos ( beta ); // Normal calculation
else // Sup ( beta ) >= c1
if ( Infx >1)
{
tm = IAMath . div (y , IAMath . sub (x , um ));
if ( Math . getExponent ( tm . hi ) +1 <= -27) {
if ( Infy !=0) {
u = IAMath . div ( new RealInterval ( Math . abs ( Infy )) , IAMath .
sqrtx2m1 (x));
res = u;
}
} else {
tp = IAMath . div (y , IAMath . add (x , um ));
u = IAMath . sqrtp1m1 ( IAMath . sqr ( tm ));
v = IAMath . sqrtp1m1 ( IAMath . sqr ( tp ));
1457
delta = IAMath . div ( IAMath . sub ( IAMath . mul (tm , tp ) , IAMath .
mul (u ,v)) , IAMath . add ( IAMath . add ( new RealInterval (2) ,u)
,v));
res = IAMath . arcsin ( IAMath . sqrt ( IAMath . mul ( delta ,( IAMath .
sub ( new RealInterval (2) , delta )))));
1459
}
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
163
} else
if ( Infx ==1) {
1461
1463
if ( Math . getExponent (y. lo ) +1 <= -52) {
u = IAMath . sqrt ( IAMath . abs (y));
if (u. hi ==0) res = new RealInterval (0) ;
else res = u;
} else {
1465
1467
1469
u = IAMath . abs (y);
RealInterval aux5 = IAMath . div ( IAMath . abs (y) , new
RealInterval (2) ); // u = |y |/2
1471
1473
delta = IAMath . sub ( aux5 , IAMath . sqrtp1m1 ( IAMath . sqr (
aux5 )));
res = IAMath . arcsin ( IAMath . sqrt ( IAMath . mul ( delta ,(
IAMath . sub ( new RealInterval (2) , delta )))) );
1475
}
} else {
tp = IAMath . add (um ,x);
tm = IAMath . sub (um ,x);
delta = IAMath . sub ( IAMath . mul (tm ,( IAMath . add ( IAMath . sqrt (
IAMath . add (um , IAMath . sqr ( IAMath . div (y , tm )))) ,um ))) ,
IAMath . mul (tp , IAMath . sqrtp1m1 ( IAMath . sqr ( IAMath . div (y ,
tp )))));
delta = IAMath . times2pown ( delta , -1) ;
res = IAMath . arcsin ( IAMath . sqrt ( IAMath . mul ( delta ,( IAMath .
sub ( new RealInterval (2) , delta )))) );
}
1477
1479
1481
1483
return res ;
1485
}
1487
1491
public static Cinterval asinh ( Cinterval z )
//
// asinh ( Z ) = i * asin ( -i * z )
//
1493
{
1489
1495
Cinterval res = asin ( new Cinterval ( z.r2 , IAMath . mul (z.r1 , new
RealInterval ( -1) )) );
return new Cinterval ( IAMath . mulEsc ( res .r2 , -1) , res . r1 );
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
164
}
1497
1499
1501
1503
1505
1507
public static Cinterval acos ( Cinterval z )
//
--------------------- 040730 -{
double gr = 6.355804 e307 ; // upper bound for abs ( rez ) ,abs ( imz )
RealInterval
rez = z.r1 ,
imz = z. r2 ;
double
irez = rez .lo ,
srez = rez .hi ,
iimz = imz .lo ,
simz = imz . hi ;
1509
1511
1513
1515
1517
1519
1521
1523
1525
1527
1529
1531
1533
1535
RealInterval hxl = new RealInterval ( irez );
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
boolean bl
= ( iimz < 0.0) && ( simz >0.0) ,
raxis = ( iimz ==0.0) && ( simz ==0) ;
double
resxl , resxu , resyl , resyu ;
//
// 1 st : check for singularities
//
if ( ( irez < -1 && ( bl || ( iimz <0 && simz ==0) )) ||
( srez >1 && ( bl || ( iimz ==0 && simz >0) )) )
System . out . println (" Erro ACOS .");
//
// check for too large bounds of abs ( rez ) and abs ( imz ) to
prevent
// overflow by calculating f_aux_asin (...)
//
resxl = Math . max ( Math . abs ( irez ) , Math . abs ( srez ));
resxu = Math . max ( Math . abs ( iimz ) , Math . abs ( simz ));
if ( resxl > gr || resxu > gr )
System . out . println (" Erro ACOS 2. ");
//
// 2 nd : real part
//
// Blomquist , 06.06.2005;
if ( iimz < 0.0 && simz > 0.0 )
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
//
1537
165
z intersects [ -1 ,1] on the x - axis
{
1539
1541
1543
1545
1547
1549
1551
1553
1555
1557
1559
if ( irez <= 0.0 ) resxu = IAMath . arccos ( hxl ) . hi ;
else resxu = Acos_beta (hxl , new RealInterval ( Math . max (- iimz ,
simz ) )) . hi ;
if ( srez < 0.0 )
resxl = Acos_beta (hxu , new RealInterval ( Math . max (- iimz , simz )
)) . lo ;
else resxl = IAMath . arccos ( hxu ) . lo ;
}
else
{
if ( irez <0 && srez >0)
// z intersects the posizive or negative y - axis
if ( iimz >= 0) {
resxl = Acos_beta (hxu , hyl ) . lo ;
resxu = Acos_beta (hxl , hyl ) . hi ;
} else {
resxl = Acos_beta (hxu , hyu ) . lo ;
resxu = Acos_beta (hxl , hyu ) . hi ;
}
else
{
if ( ( iimz >= 0.0 && irez >= 0.0 ) || ( simz <= 0.0 && irez
< 0.0 ) ){
// left boundary in quadrants I or III
// min ( Re ( z ) ) in lower right corner
1561
resxl =
Acos_beta (hxu , hyl ) . lo ;
1563
}
1565
else
// left boundary in quadrants II or IV
// min ( Re ( z ) ) in upper right corner
resxl = Acos_beta (hxu , hyu ) . lo ;
if ( ( iimz >= 0.0 && srez > 0.0 ) || ( simz <= 0.0 && srez
<= 0.0 ) )
// right boundary in quadrants I or III
// max ( Re ( z ) ) in upper left corner
resxu = Acos_beta (hxl , hyu ) . hi ;
else {
// right boundary in quadrants II or IV
// max ( Re ( z ) ) in lower left corner
1567
1569
1571
1573
1575
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
166
resxu = Acos_beta (hxl , hyl ) . hi ;
1577
}
1579
1581
1583
1585
1587
1589
1591
1593
1595
1597
1599
1601
1603
1605
1607
}
}
//
// 3 rd : imaginary part
//
if ( raxis ) { // Interval argument is now a subset of the real
axis .
// Blomquist , 16.06.2005;
if ( srez <0.0) resyl =
ACOSH_f_aux ( hxu , hyu ). lo ;
else
resyl = - ACOSH_f_aux ( hxu , hyu ). hi ;
if ( irez >0.0) resyu = - ACOSH_f_aux ( hxl , hyu ). lo ;
else
resyu =
ACOSH_f_aux ( hxl , hyu ). hi ;
} else
if ( simz <= 0.0 )
// z in lower half plane
// min ( Im ( z ) ) in point with max |z|
// max ( Im ( z ) ) in point with min |z|
{
if ( irez + srez < 0.0 )
// most of z in quadrant III
{
resyl = - ACOSH_f_aux ( hxl , hyl ) . hi ;
if ( srez < 0.0 )
resyu = - ACOSH_f_aux ( hxu , hyu ) . lo ;
else
resyu = - ACOSH_f_aux ( new RealInterval (0) , hyu ) . lo ;
}
else
// most of z in quadrant IV
{
resyl = - ACOSH_f_aux ( hxu , hyl ) . hi ;
if ( irez > 0.0 )
resyu = - ACOSH_f_aux ( hxl , hyu ) . lo ;
else
resyu = - ACOSH_f_aux ( new RealInterval (0) , hyu ) . lo ;
1609
1611
1613
}
1615
1617
}
else if ( iimz >= 0.0 )
// z in upper half plane
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
//
//
1619
1621
1623
1625
1627
1629
1631
1633
1635
1637
1639
1641
1643
1645
1647
1649
1651
1653
1655
1657
1659
167
min ( Im ( z ) ) in point with min |z|
max ( Im ( z ) ) in point with max |z|
{
if ( irez < - srez ) // if ( irez + srez < 0.0 )
// most of z in quadrant II
{
resyu = ACOSH_f_aux ( hxl , hyu ) . hi ;
if ( srez < 0.0 )
resyl = ACOSH_f_aux ( hxu , hyl ) . lo ;
else
resyl = ACOSH_f_aux ( new RealInterval (0) , hyl ) . lo ;
}
else
// most of z in quadrant I
{
resyu = ACOSH_f_aux ( hxu , hyu ) . hi ;
if ( irez > 0.0 )
resyl = ACOSH_f_aux ( hxl , hyl ). lo ;
else
resyl = ACOSH_f_aux ( new RealInterval (0) , hyl ) . lo ;
}
}
else
// z intersects imaginary axes
// min ( Im ( z ) ) in point in lower half plane with max |z|
// max ( Im ( z ) ) in point in upper half plane with max |z|
{
if ( irez < - srez ) // if ( irez + srez < 0.0 )
// most of z in quadrants II and IV
{
resyl = - ACOSH_f_aux ( hxl , hyl ) . hi ;
resyu = ACOSH_f_aux ( hxl , hyu ) . hi ;
}
else
{
resyl = - ACOSH_f_aux ( hxu , hyl ) . hi ;
resyu = ACOSH_f_aux ( hxu , hyu ) . hi ;
}
}
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
168
return new Cinterval ( new RealInterval ( resxl , resxu ) ,
mulEsc ( new RealInterval ( resyl , resyu ) , -1) );
1661
IAMath .
1663
}
1665
public static Cinterval acosh ( Cinterval z )
//
// acosh ( z ) = i * acos ( z ) = +/ - i * ( pi / 2 - asin ( z ) )
//
{
RealInterval
rez = z.r1 ,
imz = z. r2 ;
1667
1669
1671
1673
1675
1677
double
irez =
srez =
iimz =
simz =
rez .lo ,
rez .hi ,
imz .lo ,
imz . hi ;
1679
1681
1683
1685
RealInterval hxl = new RealInterval ( irez );
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
double
resxl , resxu , resyl , resyu ;
1687
// cinterval res ;
1689
1691
1693
1695
1697
1699
//
// 1 st : check for singularities
//
if ( ( iimz <= 0.0 && simz >= 0.0 ) && ( irez <
System . out . println (" Erro no ACOSH ");
// With this restriction the complex interval
real axis must not have any common
// point , if irez < +1;
// So for example the negative real axis must
from above if irez <1 , although this
// should be possible if the principal branch
the above restriction is too widely in
// some cases ; Blomquist , 21.06.2005;
1.0 ) )
argument and the
not be touched
is considered ! So
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
1701
1703
1705
169
//
// 2 nd : z in upper half plane ( or on the real axis )
// acosh ( z ) = + i * ( pi / 2 - asin ( z ) )
//
if ( iimz > 0.0 )
{
1707
1709
1711
1713
1715
1717
1719
1721
1723
1725
1727
1729
1731
1733
1735
1737
Cinterval res = acos (z);
return new Cinterval ( IAMath . mulEsc ( res .r2 , -1) ,res . r1 );
}
//
// 3 rd : z in lower half plane
// acosh ( z ) = - i * ( pi / 2 - asin ( z ) )
//
if ( simz < 0.0 )
{
//
cinterval res = HALFPI () - asin ( z );
Cinterval res = acos (z); // Blomquist , 14.06.2005
return new Cinterval ( res .r2 , IAMath . mulEsc ( res .r1 , -1) );
}
//
// z intersects [1 , infinity )
//
// real part
// minimum on the left on real axes , maximum in lower or upper
right corner
//
resxl = IAMath . coshI ( hxl ) . lo ;
RealInterval ytilde = new RealInterval (( Math . max ( -iimz , simz )
));
// resxu = Sup ( acosh ( f_aux_asin ( hxu , ytilde ) ) );
resxu = ACOSH_f_aux (hxu , ytilde ) . hi ; // Blomquist , 14.06.2005;
//
// imaginary part
// minimum in lower left corner , maximum in upper left corner
//
//
resyl = -Sup ( acos ( hxl / f_aux_asin ( hxl , hyl ) ) );
resyl = - Acos_beta (hxl , hyl ) . hi ; // Blomquist , 14.06.2005;
// resyu = Sup ( acos ( hxl / f_aux_asin ( hxl , hyu ) ) );
resyu = Acos_beta (hxl , hyu ). hi ;
1739
return new Cinterval ( new RealInterval ( resxl , resxu ) , new
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
170
RealInterval ( resyl , resyu ) );
1741
}
1743
1745
1747
1749
1751
1753
1755
public static double re_vert1 ( double x , RealInterval hx ,
double rew_inf , double rew_sup ,
double resxl ) // ---------------------- 040729 -//
// Subroutine of analytic inverse tangent function .
// Evaluate real part on a vertical boundary .
//
{
RealInterval dois = new RealInterval (2) ;
if ( x == 0.0 )
// singularities have been handled before , hence Re ( w ) > 0
{
1757
1759
1761
1763
1765
resxl = 0.0;
return resxl ;
}
else
{
if ( x > 0.0 )
// w in quadrants I and / or II
// atan is the inverse function of tan (t) , t in (- pi /2 , pi
/2) .
{
1767
1771
resxl = rew_sup > 0.0 ? IAMath . div ( Atan ( IAMath . mul ( dois ,
hx ) , rew_sup ) , dois ). lo
: ( rew_sup < 0.0 ? IAMath . div ( IAMath . add ( Atan ( IAMath .
mul ( dois , hx ) , rew_sup ) , new RealInterval ( Math . PI )) ,
dois ). lo
: IAMath . div ( HALFPI , dois ). lo );
1773
return resxl ;
1769
1775
1777
}
else
//
{
w in quadrants III and / or IV
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
171
1779
resxl = rew_inf < 0.0 ? IAMath . div ( IAMath . sub ( Atan ( IAMath .
mul ( dois , hx ) , rew_inf ) , new RealInterval ( Math . PI )) , dois
). lo
: ( rew_inf > 0.0 ? IAMath . div ( Atan ( IAMath . mul ( dois , hx )
, rew_inf ) , dois ). lo
: - IAMath . div ( HALFPI , dois ). hi );
return resxl ;
1781
1783
}
1785
}
} //
re_vert
1787
1789
1791
1793
1795
1797
1799
public static double re_vert2 ( double x , RealInterval hx ,
double rew_inf , double rew_sup ,
double resxu ) // ---------------------- 040729 -//
// Subroutine of analytic inverse tangent function .
// Evaluate real part on a vertical boundary .
//
{
RealInterval dois = new RealInterval (2) ;
if ( x == 0.0 )
// singularities have been handled before , hence Re ( w ) > 0
{
1801
1803
1805
1807
1809
resxu = 0.0;
return resxu ;
}
else
{
if ( x > 0.0 )
// w in quadrants I and / or II
// atan is the inverse function of tan (t) , t in (- pi /2 , pi
/2) .
{
1811
1813
resxu = rew_inf > 0.0 ? IAMath . div ( Atan ( IAMath . mulEsc (hx ,2)
, rew_inf ) , dois ) . hi
: ( rew_inf < 0.0 ? IAMath . div ( IAMath . add ( Atan ( IAMath .
mulEsc (hx ,2) , rew_inf ) , new RealInterval ( Math . PI ))
, dois ) . hi
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
172
: IAMath . div ( HALFPI , dois ) . hi );
1815
return resxu ;
1817
}
else
//
{
1819
1821
w in quadrants III and / or IV
1823
resxu = rew_sup < 0.0 ? IAMath . div ( IAMath . sub ( Atan ( IAMath .
mulEsc (hx ,2) , rew_sup ) , new RealInterval ( Math . PI )) ,
dois ) . hi
: ( rew_sup > 0.0 ? IAMath . div ( Atan ( IAMath . mulEsc (hx ,2)
, rew_sup ) , dois ) . hi
: - IAMath . div ( HALFPI , dois ) . lo );
return resxu ;
1825
1827
}
1829
}
} //
re_vert
1831
1833
1835
1837
1839
1841
1843
public static RealInterval Aux_1_atan ( double x)
// x >=0;
// Calculating : ln [ 1+2/( sqrt (1+ x ^2) -1) ], [x] = x ,
// [x] is a point interval !
// Blomquist ; 19.02.05;
{
int exOv = +54;
int exUn = -26;
RealInterval res ,
ix = new RealInterval (x) , // ix is point interval with x >=0;
r ,t;
int ex =(( int ) Math . getExponent (x)) +1;
1845
1847
1849
1851
1853
if (ex >= exOv ) { // preventing overflow
r = IAMath . div ( new RealInterval (2) ,ix );
t = IAMath . mul (r , new RealInterval ( Math . nextAfter (1.0 , Double .
MIN_VALUE )));
r = IAMath . mulEsc (r , Math . nextUp (1.0) );
res = new RealInterval (t.lo ,r. hi );
} else
if (ex <= exUn ) { // x < 2^( -27)
res = IAMath . sub ( U_atan , IAMath . mulEsc ( IAMath . ln ( ix ) ,2));
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
1855
1857
1859
173
} else { // normal calculation
t = IAMath . sqrtp1m1 ( IAMath . sqr ( ix ) ); // t = sqrt (1+ x ^2) -1
RealInterval aux = IAMath . add ( new RealInterval (1) , IAMath . div
( new RealInterval (2) , IAMath . sub ( IAMath . sqrt ( IAMath . add (
new RealInterval (1) , IAMath . sqr (t))) , new RealInterval (1)
)));
res = IAMath . ln ( aux ); // res = ln [1 + 2/( sqrt (1+ x ^2) -1) ]
}
return res ;
} // Aux_1_atan
1861
1863
1865
1867
1869
1871
1873
public static RealInterval Q_atan_UPSIGN ( RealInterval x ,
RealInterval y)
{
// x: abs ( Re (z)); x is real interval
// y: Inf ( Im (z)); y is point interval
// Q_atan_UPSIGN : ln [ 1 + 4y /( x ^2+(1 - y) ^2) ]
RealInterval um = new RealInterval (1) ;
RealInterval dois = new RealInterval (2) ;
RealInterval quatro = new RealInterval (4) ;
int n = 511;
RealInterval res ,t ,t1 , t2 ;
int ex_x ,ex ,s;
if (y. lo ==1.0 && y. hi ==1.0) {
1875
1877
if (x.lo >1.0) {
t = IAMath . div ( dois ,x);
1879
res = IAMath . lnp1 ( IAMath . sqr (t));
1881
1883
} else
if (x.hi <1) {
1885
res = IAMath . sub ( IAMath . ln ( IAMath . add ( quatro , IAMath . sqr (x)
)) , IAMath . mulEsc ( IAMath . ln (x) ,2));
1887
} else { // Punkt 3.:
1889
t = new RealInterval (x. hi );
1891
t = IAMath . div ( dois ,t);
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
174
t1 = IAMath . lnp1 ( IAMath . sqr (t));
1893
t = new RealInterval (x. lo );
t2 = IAMath . sub ( IAMath . ln ( IAMath . add ( quatro , IAMath . sqr (t))
) , IAMath . mulEsc ( IAMath . ln (t) ,2));
res = new RealInterval ( t1 .lo , t2 . hi );
1895
}
} else { // y <> [1 ,1]
1897
1899
ex_x = ( int ) Math . getExponent ( IAMath . abs (x). hi ) +1;
ex
= ( int ) Math . getExponent ( IAMath . abs (y). hi ) +1;
if ( ex_x > ex ) ex = ex_x ; // Maximum
if (ex >n) { // scaling :
s = n -ex -1;
t = x;
t= IAMath . times2pown (t ,s); // fast scaling with 2^( s)
1901
1903
1905
1907
t1 = y;
t1 = IAMath . times2pown (t1 ,s); // fast scaling with 2^( s)
1909
1911
t2 = IAMath . add ( IAMath . sqr (t) , IAMath . sqr ( IAMath . sub ( new
RealInterval (( Math . pow (2 ,( s +1) -1))) ,t1 ))); // t2 :
denominator
1913
t = IAMath . div (y , t2 ); // scaled quotient
1915
t= IAMath . times2pown (t ,2* s +2) ; // back - scaling with 2^( s +2) ;
’+2 ’: factor 4 !!
1917
res = IAMath . lnp1 (t);
} else res = IAMath . lnp1 ( IAMath . div ( IAMath . mulEsc (y ,4) ,( IAMath
. add ( IAMath . sqr (x) , IAMath . sqr ( IAMath . sub (um ,y)))))); //
normal calculation
1919
1921
}
return res ;
} // Q_atan_UPSIGN
1923
1925
1927
/*
public static RealInterval Q_atan_UPSIGN ( RealInterval x ,
RealInterval y)
{
// x: abs ( Re (z)); x is real interval
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
1935
// y: Inf ( Im (z)); y is point interval
// Q_atan_UPSIGN : ln [ 1 + 4y /( x ^2+(1 - y) ^2) ]
System . out . println (" x: "+ x);
int n = 511;
RealInterval res ,t ,t1 , t2 ;
int ex_x ,ex ,s;
if (y. lo ==1.0 && y. hi ==1.0) {
if (x.lo >1.0) {
1937
t = IAMath . div ( new RealInterval (2) ,x);
1929
1931
1933
175
1939
1941
res = IAMath . lnp1 ( IAMath . sqr (t));
1943
1945
1947
1949
1951
} else
if (x.hi <1) {
res = IAMath . sub ( IAMath . ln ( IAMath . add ( new
RealInterval (4) , IAMath . sqr (x))) , IAMath .
mulEsc ( IAMath . ln (x) ,2));
System . out . println (" tou aki ") ;
System . out . println (" res : "+ res );
} else { // Punkt 3.:
t = new RealInterval (x. hi );
t = IAMath . div ( new RealInterval (2) ,t);
1953
1955
1957
1959
t1 = IAMath . lnp1 ( IAMath . sqr (t));
t = new RealInterval (x. lo );
t2 = IAMath . sub ( IAMath . ln ( IAMath . add ( new RealInterval
(4) , IAMath . sqr (t))) , IAMath . mulEsc ( IAMath . ln (t)
,2));
res = new RealInterval ( t1 .lo , t2 . hi );
}
}
1961
1963
1965
else { // y <> [1 ,1]
ex_x = ( int ) Math . exp ( IAMath . abs (x). hi );
ex
= ( int ) Math . exp ( IAMath . abs (y). hi );
if ( ex_x > ex ) ex = ex_x ; // Maximum
if (ex >n) { // scaling :
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
176
s = n -ex -1;
t = x;
t= IAMath . power (t ,s); // fast scaling with 2^( s)
t1 = y;
t1 = IAMath . power (t1 ,s); // fast scaling with 2^( s)
t2 = IAMath . add ( IAMath . sqr (t) , IAMath . sqr ( IAMath .
sub ( new RealInterval ( Math . pow (2 , s)) ,t1 ))); //
t2 : denominator
t = IAMath . div (y , t2 ); // scaled quotient
t= IAMath . power (t ,2* s +2) ; // back - scaling with 2^( s
+2) ; ’+2 ’: factor 4 !!
1967
1969
1971
1973
1975
res = IAMath . lnp1 (t);
1977
} else {
t= IAMath . add ( IAMath . sqr (x) , IAMath . sqr ( IAMath . sub ( new
RealInterval (1) ,y)));
1979
RealInterval aux = IAMath . div ( IAMath . mulEsc (y ,4) ,
IAMath . add ( IAMath . sqr (x) , IAMath . sqr ( IAMath . sub ( new
RealInterval (1) ,y))));
res = IAMath . lnp1 ( aux );
1981
1983
}
}
return res ;
} // Q_atan_UPSIGN */
1985
1987
1989
1991
1993
public static Cinterval atan ( Cinterval z )
{
RealInterval
rez = z.r1 ,
imz = z. r2 ;
1999
double
irez =
srez =
iimz =
simz =
2001
int n = 511; // For possible scaling
2003
RealInterval hxl = new RealInterval ( irez );
1995
1997
rez .lo ,
rez .hi ,
imz .lo ,
imz . hi ;
// ----- 040912 --
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
2005
177
RealInterval hxu = new RealInterval ( srez );
RealInterval hyl = new RealInterval ( iimz );
RealInterval hyu = new RealInterval ( simz );
2007
2025
double
resxl =0 , resxu =0 , resyl , resyu ;
//
// 1 st : check for singularities
//
if ( ( irez <= 0.0 && srez >= 0.0 ) && ( iimz <= -1.0 || simz >=
1.0 ) )
System . out . println (" ERRO tan ");
//
// 2 nd : real part
// Re ( atan ( z ) ) = Arg ( w ) / 2, where w = 1 - x ^2 - y ^2 + i
* 2x )
//
// evaluate atan on vertical boundaries
//
RealInterval
//
y_sqr = sqr ( imz ) ,
//
rew_l = (1 - y_sqr ) - sqr ( hxl ) , //
Blomquist ; before : rew_l = 1 - sqr ( hxl ) - y_sqr ,
//
rew_u = (1 - y_sqr ) - sqr ( hxu ); //
Blomquist ; before : rew_u = 1 - sqr ( hxu ) - y_sqr ;
rew_l , rew_u ;
2027
/*
2009
2011
2013
2015
2017
2019
2021
2023
2029
2031
2033
2035
------------------------------ Blomquist
--------------------------------------------------- */
/* ---------Improvements for Im (z) = [1 ,1] or Im (z) =
[ -1 , -1]
------------------ */
boolean sqrImz_1 = ( iimz == simz ) && ( iimz ==1.0 || iimz == -1.0) ; //
Test for Im (z) = [1 ,1] or [ -1 , -1]
if ( sqrImz_1 ) {
rew_l
hxl =
rew_u
hxu =
2037
2039
}
else {
= IAMath . mulEsc ( IAMath . abs ( hxl ) , -1);
new RealInterval ( Math . signum ( irez ));
= IAMath . mulEsc ( IAMath . abs ( hxu ) , -1);
new RealInterval ( Math . signum ( srez ));
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
int ex ,s;
double scf ; // Scaling factor
RealInterval imz_ ;
int ex1 = ( int ) Math . getExponent ( iimz ) +1;
int ex2 = ( int ) Math . getExponent ( simz ) +1;
if (ex2 > ex1 ) ex1 = ex2 ;
ex = ( int ) Math . getExponent ( irez ) +1;
if (ex1 > ex ) ex = ex1 ; // Maximum
if (ex >n) { // Scaling necessary
s = n - ex - 1;
scf = Math . pow (2 , s); // scf : scaling factor 2^ s
hxl = IAMath . power (hxl ,s); // hxl = hxl * 2^ s
imz_ = imz ;
imz_ = IAMath . power ( imz_ ,s); // imz_ = imz_ * 2^ s
rew_l = IAMath . sub (( IAMath . sub ( new RealInterval ( scf ) ,
IAMath . sqr ( imz_ ))) , IAMath . sqr ( hxl )); // here now
without overflow !!
hxl = IAMath . power (hxl ,s); // hxl = hxl * 2^ s
} else rew_l = IAMath . sub (( IAMath . sub ( new RealInterval (1) ,
IAMath . sqr ( imz ))) , IAMath . sqr ( hxl ));
2041
2043
2045
2047
2049
2051
2053
2055
2057
ex = ( int ) Math . getExponent ( srez ) +1;
if (ex1 > ex ) ex = ex1 ; // Maximum
if (ex >n) { // Scaling necessary
s = n - ex - 1;
scf = Math . pow (2 , s); // scf : scaling factor 2^ s
hxu = IAMath . power (hxu ,s); // hxu = hxu * 2^ s
imz_ = imz ;
imz_ = IAMath . power ( imz_ ,s); // imz_ = imz_ * 2^ s
rew_u = IAMath . sub (( IAMath . sub ( new RealInterval ( scf ) ,
IAMath . sqr ( imz_ ))) , IAMath . sqr ( hxu )); // here now
without overflow !!
hxu = IAMath . power (hxu ,s); // hxu = hxu * 2^ s
} else rew_u = IAMath . sub (( IAMath . sub ( new RealInterval (1) ,
IAMath . sqr ( imz ))) , IAMath . sqr ( hxu ));
2059
2061
2063
2065
2067
2069
2071
2073
2075
}
/*
//
//
//
------------------------------ Blomquist ; 22.02.05;
---------------------------------------- */
left boundary
178
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
2077
2079
179
double rew_inf = rew_l . lo ;
double rew_sup = rew_l . hi ;
resxl = re_vert1 ( irez , hxl , rew_inf , rew_sup , resxl );
resxu = re_vert2 ( irez , hxl , rew_inf , rew_sup , resxu );
2081
2083
2085
2087
//
// right boundary
//
rew_inf = rew_u . lo ;
rew_sup = rew_u . hi ;
double res_l =0 , res_u =0;
res_l = re_vert1 ( srez , hxu , rew_inf , rew_sup , res_l );
2089
res_u = re_vert2 ( srez , hxu , rew_inf , rew_sup , res_u );
2091
resxl = Math . min ( resxl , res_l );
2093
2095
2097
2099
resxu = Math . max ( resxu , res_u );
//
// look for extremal values on horizontal boundaries
// since atan ( x+ iy ) = atan ( x - iy ) ,
// intersections can be considered in the upper half plane
//
double abs_y_min = IAMath . abs ( imz ) . lo ;
2101
2103
2105
2107
2109
2111
2113
2115
if ( abs_y_min > 1.0 )
{
RealInterval
abs_hyl = new RealInterval ( abs_y_min ) ,
//
abs_hxl = sqrt ( sqr ( abs_hyl ) - 1.0 );
abs_hxl = IAMath . sqrtx2m1 ( abs_hyl ); // Blomquist ;
RealInterval aux = IAMath . arctan ( IAMath . div ( new RealInterval
(1) , abs_hxl ));
if ( abs_hxl . hi > irez && abs_hxl . lo < srez ){
// extremal curve intersects lower boundary of x+i|y| in
quadrant I
// intersection in Q I or Q IV : update minimum
// resxl = inf ( atan ( abs_y_min / abs_hxl ) ) / 2.0;
resxl = IAMath . div (( IAMath . sub ( new RealInterval ( Math . PI ) ,
aux )) , new RealInterval (2.0) ). lo ;
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
}
else if ( - abs_hxl . lo > irez && - abs_hxl . hi < srez )
// extremal curve intersects lower boundary of x+i|y| in
quadrant II
// intersection in Q II or Q III : update maximum
resxu = IAMath . div ( IAMath . sub ( aux , new RealInterval ( Math .
PI )) , new RealInterval (2) ) . hi ;
2117
2119
2121
180
}
2123
2125
//
//
2127
//
// evaluate atan on horizontal boundaries
RealInterval
abs_rez = IAMath . abs ( rez ) ,
im_atan_l , im_atan_u ;
2129
2131
3 rd : imaginary part
Im ( atan ( z ) ) = +/ - Ln ( 1 +/ - 4y /( x ^2 + (1 -/+ y) ^2 ) ) /
4
2133
2135
2137
2139
if ( iimz < 0.0 )
//
im_atan_l = -ln ( 1 - 4 * hyl / ( x_sqr + sqr (
1 + hyl ) ) ) / 4.0;
//
im_atan_l = - lnp1 ( -4 * hyl / ( x_sqr + sqr ( 1
+ hyl ) )) / 4.0; // Blomquist
im_atan_l = IAMath . div ( IAMath . mulEsc ( Q_atan_UPSIGN ( abs_rez ,
IAMath . mulEsc (hyl , -1) ) , -1) , new RealInterval (4.0) ); //
Blomquist ( Versuch )
else {
2141
//
2143
im_atan_l = ( Q_atan_UPSIGN ( abs_rez , hyl ) );
2145
im_atan_l = ln ( 1 + 4 * hyl / ( x_sqr + sqr ( 1
- hyl ) ) ) / 4.0;
}
2147
// im_atan_l =
2149
IAMath . times2pown ( im_atan_l , -2) ;
// Blomquist
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
2151
2153
2155
181
if ( simz < 0.0 )
//
im_atan_u = -ln ( 1 - 4 * hyu / ( x_sqr + sqr (
1 + hyu ) ) ) / 4.0;
//
im_atan_u = - lnp1 ( -4 * hyu / ( x_sqr + sqr ( 1
+ hyu ) ) ) / 4.0; // Blomquist
im_atan_u = IAMath . div ( IAMath . mulEsc ( Q_atan_UPSIGN ( abs_rez ,
IAMath . mulEsc (hyu , -1) ) , -1) , new RealInterval (4.0) ); //
Blomquist
else {
2157
//
im_atan_u = ln ( 1 + 4 * hyu / ( x_sqr + sqr ( 1
- hyu ) ) ) / 4.0;
2159
im_atan_u = Q_atan_UPSIGN ( abs_rez , hyu );
2161
}
im_atan_u = IAMath . times2pown ( im_atan_u , -2) ;
// Blomquist
2163
2165
2167
resyl = Math . min (
2169
resyu = Math . max ( im_atan_l .hi , im_atan_u . hi );
//
// look for extremal values on vertical boundaries ,
// if vertical boundaries intersect extremal curves
//
double abs_x_min = IAMath . abs ( rez ). lo ;
RealInterval
x_extr = new RealInterval ( abs_x_min ) ,
//
y_extr = sqrt ( 1.0 + sqr ( x_extr ) );
y_extr = IAMath . sqrt1px2 ( x_extr );
//
Blomquist ;
2171
2173
2175
2177
im_atan_l .lo , im_atan_u . lo );
2179
if (
y_extr . lo < simz &&
y_extr . hi > iimz ){
2181
//
2183
2185
extremal curve intersects left boundary of |x |+ iy in
quadrant I
// update maximum
//
resyu = Sup ( ln ( 1 + 4 * y_extr / ( sqr (
x_extr ) + sqr ( 1 - y_extr ) ) ) ) / 4.0;
resyu = IAMath . div ( Aux_1_atan ( abs_x_min ) , new RealInterval
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
(4.0) ). hi ;
2187
2189
2191
182
// Blomquist
}
if ( - y_extr . hi < simz && - y_extr . lo > iimz ){
// extremal curve intersects left boundary of |x |+ iy in
quadrant IV
// update minimum
//
resyl = -Sup ( ln ( 1 + 4 * y_extr / ( sqr (
x_extr ) + sqr ( 1 - y_extr ) ) ) ) / 4.0;
resyl = - IAMath . div ( Aux_1_atan ( abs_x_min ) , new RealInterval
(4.0) ). hi ; // Blomquist
2193
}
2195
return new Cinterval ( new RealInterval ( resxl , resxu ) , new
RealInterval ( resyl , resyu ) );
2197
2199
}
//
// -- end atan
-----------------------------------------------------------------
2201
2203
2205
2207
2209
2211
2213
2215
2217
// -- acot
----------------------------------------------------------040912 -//
// Analytic inverse cotangent function
// acot ( z ) = atan ( 1/ z )
// The code of acot ( z ) is almost identical to the code of atan (
z )
//
public static Cinterval acot ( Cinterval z )
{
RealInterval
rez = z.r1 ,
imz = z. r2 ;
double
irez = rez .lo ,
srez = rez .hi ,
iimz = imz .lo ,
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
2219
simz = imz . hi ;
2221
int n = 511; // For possible scaling
2223
RealInterval
RealInterval
RealInterval
RealInterval
2225
hxl =
hxu =
hyl =
hyu =
new
new
new
new
183
RealInterval ( irez );
RealInterval ( srez );
RealInterval ( iimz );
RealInterval ( simz );
2227
2229
2231
2233
2235
2237
2239
2241
2243
2245
2247
2249
2251
double
resxl = 0, resxu = 0, resyl , resyu ;
//
// 1 st : check for singularities
//
if ( ( ( irez <= 0.0) && ( srez >= 0.0) ) && ( ( iimz <= 1.0) && (
simz >= -1.0) ) )
System . out . println (" ERRO NO ACOT ");
//
// 2 nd : real part
// Re ( atan ( z ) )
= Arg ( w ) / 2, where w = 1 - x ^2 - y ^2
+ i * 2x )
// Re ( atan ( 1 / z ) ) = Arg ( w ) / 2, where w = x ^2 + y ^2 - 1
+ i * 2x )
//
// evaluate acot on vertical boundaries
//
RealInterval
//
y_sqr = sqr ( imz ) ,
//
rew_l = ( y_sqr - 1) + sqr ( hxl ) ,
//
rew_u = ( y_sqr - 1) + sqr ( hxu );
//
rew_l = ( sqr ( hxl ) -1) + y_sqr ,
//
rew_u = ( sqr ( hxu ) -1) + y_sqr ;
rew_l , rew_u ;
/* ------------------------------ Blomquist
--------------------------------------------------- */
/* ---------Improvements for Im (z) = [1 ,1] or Im (z) =
[ -1 , -1]
------------------ */
boolean sqrImz_1 = ( iimz == simz ) && ( iimz ==1.0 || iimz == -1.0) ; //
Test for Im (z) = [1 ,1] or [ -1 , -1]
2253
2255
if ( sqrImz_1 ) {
rew_l = IAMath . abs ( hxl );
hxl = new RealInterval ( Math . signum (
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
irez ));
rew_u = IAMath . abs ( hxu );
srez ));
2257
184
hxu = new RealInterval ( Math . signum (
}
else {
2259
2261
2263
int ex ,s;
double scf ; // Scaling factor
RealInterval imz_ ;
int ex1 = Math . getExponent ( iimz );
simz );
if (ex2 > ex1 ) ex1 = ex2 ;
int ex2 = Math . getExponent (
2265
2267
2269
2271
2273
2275
2277
ex = Math . getExponent ( irez );
if (ex1 > ex ) ex = ex1 ; // Maximum
if (ex >n) { // Scaling necessary
s = n - ex - 1;
scf = Math . pow (2 ,( s +1) -1); // scf : scaling factor 2^ s
hxl = IAMath . times2pown (hxl ,s); // hxl = hxl * 2^ s
imz_ = imz ;
imz_ = IAMath . times2pown ( imz_ ,s); // imz_ = imz_ * 2^ s
rew_l = IAMath . add ( IAMath . sub ( IAMath . sqr ( imz_ ) , new
RealInterval ( scf )) , IAMath . sqr ( hxl )); // here now
without overflow !!
hxl = IAMath . times2pown (hxl ,s); // hxl = hxl * 2^ s
} else rew_l = IAMath . add ( IAMath . sub ( IAMath . sqr ( imz ) , new
RealInterval (1) ) , IAMath . sqr ( hxl ));
2279
2281
2283
2285
2287
2289
ex = Math . getExponent ( srez ) +1;
if (ex1 > ex ) ex = ex1 ; // Maximum
if (ex >n) { // Scaling necessary
s = n - ex - 1;
scf = Math . pow (2 ,( s +1) -1); // scf : scaling factor 2^ s
hxu = IAMath . times2pown (hxu ,s); // hxu = hxu * 2^ s
imz_ = imz ;
imz_ = IAMath . times2pown ( imz_ ,s); // imz_ = imz_ * 2^ s
rew_u = IAMath . add ( IAMath . sub ( IAMath . sqr ( imz_ ) ,new
RealInterval ( scf )) , IAMath . sqr ( hxu )); // here now
without overflow !!
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
hxu = IAMath . times2pown (hxu ,s); // hxu = hxu * 2^ s
} else rew_u = IAMath . add ( IAMath . sub ( IAMath . sqr ( imz ) ,new
RealInterval (1.0) ) , IAMath . sqr ( hxu ));
2291
2293
}
/*
------------------------------ Blomquist ; 22.02.05;
---------------------------------------- */
2295
2297
2299
//
// left boundary
//
double rew_inf = rew_l . lo ;
double rew_sup = rew_l . hi ;
2301
2303
2305
2307
2309
2311
2313
resxl = re_vert1 ( irez , hxl , rew_inf , rew_sup , resxl );
resxu = re_vert2 ( irez , hxl , rew_inf , rew_sup , resxu );
//
// right boundary
//
rew_inf = rew_u . lo ;
rew_sup = rew_u . hi ;
double res_l = 0, res_u = 0;
res_l = re_vert1 ( srez , hxu , rew_inf , rew_sup , res_l );
res_u = re_vert2 ( srez , hxu , rew_inf , rew_sup , res_u );
2315
2317
2319
2321
2323
2325
2327
2329
2331
resxl = Math . min ( resxl , res_l );
resxu = Math . max ( resxu , res_u );
//
// look for extremal values on horizontal boundaries
// since acot ( x+ iy ) = acot ( x - iy ) ,
// intersections can be considered in the upper half plane
//
double abs_y_min = IAMath . abs ( imz ) . lo ;
if ( abs_y_min > 1.0 )
{
RealInterval
abs_hyl = new RealInterval ( abs_y_min ) ,
//
abs_hxl = sqrt ( sqr ( abs_hyl ) - 1.0 );
abs_hxl = IAMath . sqrtx2m1 ( abs_hyl );
// Blomquist ;
185
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
186
if ( abs_hxl . hi > irez && abs_hxl . lo < srez ){
// extremal curve intersects lower boundary of x+i|y| in
quadrant I
// intersection in Q I or Q IV : update maximum
resxu = IAMath . div ( IAMath . arctan ( IAMath . div ( new
RealInterval (1) , abs_hxl ) ) , new RealInterval (2.0) ) .
hi ;
2333
2335
2337
} if ( (- abs_hxl . lo ) > irez && (- abs_hxl . hi ) < srez ){
// extremal curve intersects lower boundary of x+i|y| in
quadrant II
// intersection in Q II or Q III : update minimum
2339
2341
resxl = - IAMath . div ( IAMath . arctan ( IAMath . div ( new
RealInterval (1.0) , abs_hxl ) ) , new RealInterval (2.0) )
. hi ;
}
2343
2345
2347
2349
2351
2353
2355
}
//
//
//
3 rd : imaginary part
Im ( atan ( z ) ) = +/ - Ln ( 1 +/ - 4y /( x ^2 + (1 -/+ y) ^2 ) ) /
4
// Im ( acot ) = - Im ( atan ): We calculate Im ( atan ) and
return " -"
//
// evaluate atan on horizontal boundaries
//
RealInterval
// x_sqr = sqr ( rez ) , // overflow is avoided by calling
Q_atan_UPSIGN (...)
im_atan_l , im_atan_u ,
abs_rez = IAMath . abs ( rez ); // Blomquist ;
if ( iimz < 0.0 ){
2357
//
2359
2361
im_atan_l = -ln ( 1 - 4 * hyl / ( x_sqr + sqr (
1 + hyl ) ) ) / 4.0;
im_atan_l = IAMath . div ( IAMath . mulEsc ( Q_atan_UPSIGN ( abs_rez ,
IAMath . mulEsc (hyl , -1) ) , -1) , new RealInterval (4.0) ); //
Blomquist
}
else {
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
2363
2365
2367
2369
2371
//
im_atan_l = ln ( 1 + 4 * hyl / ( x_sqr + sqr ( 1
- hyl ) ) ) / 4.0;
im_atan_l = IAMath . div ( Q_atan_UPSIGN ( abs_rez , hyl ) , new
RealInterval (4.0) ); // Blomquist
im_atan_l . hi = Math . nextUp ( im_atan_l . hi );
}
if ( simz < 0.0 )
//
im_atan_u = -ln ( 1 - 4 * hyu / ( x_sqr + sqr (
1 + hyu ) ) ) / 4.0;
im_atan_u = IAMath . div ( IAMath . mulEsc ( Q_atan_UPSIGN ( abs_rez ,
IAMath . mulEsc (hyu , -1) ) , -1) , new RealInterval (4.0) ); //
Blomquist
else {
//
im_atan_u = ln ( 1 + 4 * hyu / ( x_sqr + sqr ( 1
- hyu ) ) ) / 4.0;
2373
im_atan_u = IAMath . div ( Q_atan_UPSIGN ( abs_rez , hyu ) , new
RealInterval ( 4.0) ); // Blomquist
2375
2377
2379
2381
2383
2385
2387
2389
2391
2393
187
}
resyl = Math . min ( im_atan_l .lo , im_atan_u . lo );
resyu = Math . max ( im_atan_l . hi , im_atan_u . hi );
//
// look for extremal values on vertical boundaries ,
// if vertical boundaries intersect extremal curves
//
double abs_x_min = IAMath . abs ( rez ). lo ;
RealInterval
x_extr = new RealInterval ( abs_x_min ) ,
//
y_extr = sqrt ( 1.0 + sqr ( x_extr ) );
y_extr = IAMath . sqrt1px2 ( x_extr ); // Blomquist
if ( y_extr . lo < simz && y_extr . hi > iimz )
// extremal curve intersects left boundary of |x |+ iy in
quadrant I
// update maximum
//
resyu = Sup ( ln ( 1 + 4 * y_extr / ( sqr (
x_extr ) + sqr ( 1 - y_extr ) ) ) ) / 4.0;
resyu = IAMath . div ( Aux_1_atan ( abs_x_min ) ,new RealInterval
(4.0) ). hi ;
// Blomquist
if ( - y_extr . hi < simz && - y_extr . lo > iimz )
// extremal curve intersects left boundary of |x |+ iy in
quadrant IV
// update minimum
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
2395
2397
188
//
resyl = -Sup ( ln ( 1 + 4 * y_extr / ( sqr (
x_extr ) + sqr ( 1 - y_extr ) ) ) ) / 4.0;
resyl = - IAMath . div ( Aux_1_atan ( abs_x_min ) , new RealInterval
(4.0) ). hi ; // Blomquist
resxu = Math . nextUp ( resxu );
return new Cinterval ( new RealInterval ( resxl , resxu ) , new
RealInterval ( -resyu , - resyl ) );
2399
2401
}
//
// -- end acot
-----------------------------------------------------------------
2403
2405
// -- atanh
---------------------------------------------------------040912 --
2407
2409
2411
2413
2415
2417
2419
2421
2423
2425
public static Cinterval atanh ( Cinterval z )
//
// atanh ( z ) = - i * atan ( i * z )
//
{
Cinterval res = atan ( new Cinterval ( IAMath . mulEsc (z.r2 , -1) , z.
r1 ) );
return new Cinterval ( res .r2 , IAMath . mulEsc ( res .r1 , -1) ) ;
}
//
// -- end atanh
----------------------------------------------------------------
// -- acoth
---------------------------------------------------------040912 -// */
public static Cinterval acoth ( Cinterval z )
//
// acoth ( z ) = i * acot ( i * z )
//
{
ANEXO D. CÓDIGO FONTE DA CLASSE CINTERVAL
Cinterval res = acot ( new Cinterval ( IAMath . mulEsc (z.r2 , -1) , z.
r1 ) );
return new Cinterval ( IAMath . mulEsc ( res .r2 , -1) , res . r1 );
2427
}
//
// -- end acoth
----------------------------------------------------------------
2429
2431
public static Complex mid ( Cinterval z ){
Complex c= new Complex ( ’a ’);
c.a= ( float ) IAMath . lmidpoint (z. r1 );
c.b= ( float ) IAMath . lmidpoint (z. r2 );
return c;
}
2433
2435
2437
2439
2441
2443
189
}
Anexo E
Complexos Intervalares Utilizados no
Teste T
Tabela E.1: Complexos Intervalares Utilizados no Teste T
Complexos Intervalar
1
[ [ 0 , 0.0238095 ] , [ 0.0294118 , 0.0571429 ] +i [ 2 , -0.0142857 ] , [ 0.08 ,
0.0253165 ] ]
2
[ [ 0 , 0.0104167 ] , [ 0.0465116 , 0.0357143 ] +i [ 0.027027 , 0.0108696 ] , [ 0.4
, 0.333333 ] ]
3
[ [ 0.0105263 , 0.0277778 ] , [ 0.025641 , 0.0285714 ] +i [ 0.153846 , 0.0147059
] , [ 0.02 , 0.0555556 ] ]
4
[ [ 0.0166667 , 0.037037 ] , [ 0.0289855 , 0.0208333 ] +i [ 0.0222222 , 0.015873
] , [ 0.0172414 , 0.0263158 ] ]
5
[ [ 0.166667 , 0.0224719 ] , [ 0.142857 , 0.0243902 ] +i [ 0.0232558 , -0.0153846
] , [ 0.0408163 , 0.0212766 ] ]
6
[ [ 0.012987 , 0.0333333 ] , [ 0.0416667 , 0.0235294 ] +i [ 0.0181818 , 0 ] , [
0.0487805 , 0.0149254 ] ]
7
[ [ -0.0169492 , 0.0526316 ] , [ 0.0240964 , 0.0333333 ] +i [ 0.047619 , 0.0294118 ] , [ 125 , 0.05 ] ]
8
[ [ 0 , 0.04 ] , [ 0.0273973 , 0.0140845 ] +i [ 0.0666667 , 0.0128205 ] , [ 0.027027
, 0.0102041 ] ]
9
[ [ -0.0322581 , 0.0625 ] , [ 0.0377358 , 0.0392157 ] +i [ 0.0392157 , 0.0238095
] , [ 0.08 , 0.0298507 ] ]
10
[ [ 0.0212766 , 0.0217391 ] , [ 0.2 , 0.1 ] +i [ 0.0169492 , 0.0454545 ] , [ 0.011236
, 0.0869565 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
191
11
[ [ 0.0238095 , 0.0909091 ] , [ 0.0333333 , 0.04 ] +i [ 0.0263158 , 0 ] , [
0.0119048 , 0.0208333 ] ]
12
[ [ -0.01 , 0.0204082 ] , [ 0.01 , 0.0144928 ] +i [ 0.0235294 , 0.0121951 ] , [
0.0285714 , 0.037037 ] ]
13
[ [ 0.0666667 , 0.0204082 ] , [ 0.0238095 , 0.25 ] +i [ 0.0454545 , 0.0909091 ] ,
[ 0.111111 , 0.0714286 ] ]
14
[ [ -0.333333 , 0.020202 ] , [ 0.5 , 0.08 ] +i [ 0.222222 , -0.0222222 ] , [ 0.1 ,
0.0222222 ] ]
15
[ [ 0.0121951 , 0.0204082 ] , [ 2 , 0.0338983 ] +i [ 0.0526316 , -0.0123457 ] , [
0.0103093 , 0.010101 ] ]
16
[ [ 0 , 0.0512821 ] , [ 0.0125 , 0.010989 ] +i [ 0.0172414 , -0.0169492 ] , [
0.0108696 , 0.0625 ] ]
17
[ [ 0.0588235 , 0.015873 ] , [ 0.0114943 , 0.0263158 ] +i [ 0.0588235 , 0.0142857
] , [ 0.0465116 , 0.0222222 ] ]
18
[ [ 0.0142857 , 0.0107527 ] , [ 0.0222222 , 0.0263158 ] +i [ 0.153846 , 0 ] , [
0.0909091 , 0.5 ] ]
19
[ [ 0.030303 , 0.0120482 ] , [ 0.0232558 , 0.0224719 ] +i [ 0.037037 , -0.0555556
] , [ 0.0172414 , 0.030303 ] ]
20
[ [ 0 , 0.0769231 ] , [ 0.0357143 , 0.0571429 ] +i [ 0.04 , 0 ] , [ 0.153846 ,
0.0434783 ] ]
21
[ [ 0.0588235 , 0.04 ] , [ 0.0263158 , 0.0149254 ] +i [ 0.04 , -0.0106383 ] , [
0.0104167 , 0.0204082 ] ]
22
[ [ -0.0185185 , 0.0588235 ] , [ 0.0138889 , 0.0229885 ] +i [ 0.03125 , 0.0714286 ] , [ 0.0357143 , 0.0116279 ] ]
23
[ [ -0.016129 , 0.0212766 ] , [ 0.0240964 , 0.0121951 ] +i [ 0.0222222 ,
0.0103093 ] , [ 0.0434783 , 0.0666667 ] ]
24
[ [ 0 , 0.0185185 ] , [ 0.04 , 0.0181818 ] +i [ 0.181818 , 0.0217391 ] , [ 0.02 ,
0.0229885 ] ]
25
[ [ -0.0133333 , 0.666667 ] , [ 0.0769231 , 0.0128205 ] +i [ 0.133333 , 0 ] , [
0.04 , 0.0571429 ] ]
26
[ [ 0.0123457 , 0.027027 ] , [ 0.0140845 , 0.03125 ] +i [ 0.0289855 , -0.0107527
] , [ 0.0232558 , 0.333333 ] ]
27
[ [ -0.0106383 , 0.0833333 ] , [ 0.0136986 , 0.016129 ] +i [ 0.0121951 , 0.25 ] ,
[ 0.030303 , 0.166667 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
192
28
[ [ 0 , 0.0113636 ] , [ 0.0163934 , 0.142857 ] +i [ 0.0266667 , 0 ] , [ 0.0140845 ,
0.0277778 ] ]
29
[ [ 0 , 0.0104167 ] , [ 0.04 , 0.1 ] +i [ 0.0769231 , 0.012987 ] , [ 0.0105263 ,
0.0169492 ] ]
30
[ [ 0 , 0.1 ] , [ 0.0188679 , 2 ] +i [ 0.0227273 , -0.0163934 ] , [ 0.037037 ,
0.181818 ] ]
31
[ [ 0 , 0.0120482 ] , [ 0.0229885 , 0.0151515 ] +i [ 0.0113636 , 0 ] , [ 0.0266667
, 0.0384615 ] ]
32
[ [ 0.0588235 , 0.0263158 ] , [ 0.0322581 , 0.0208333 ] +i [ 0.0769231 ,
0.0153846 ] , [ 0.0327869 , 0.333333 ] ]
33
[ [ -0.0333333 , 0.021978 ] , [ 0.04 , 0.011236 ] +i [ 0.03125 , 0.0243902 ] , [
0.0384615 , 0.015873 ] ]
34
[ [ 0.111111 , 0.0338983 ] , [ 0.05 , 0.25 ] +i [ 0.0163934 , -0.0172414 ] , [ 0.08
, 0.0128205 ] ]
35
[ [ 0 , 0.333333 ] , [ 0.0243902 , 0.0833333 ] +i [ 0.2 , -0.0277778 ] , [ 0.0175439
, 0.0273973 ] ]
36
[ [ -0.0769231 , 0.0263158 ] , [ 0.0277778 , 0.0285714 ] +i [ 0.0322581 , 0.0103093 ] , [ 0.0869565 , 0.111111 ] ]
37
[ [ -0.0285714 , 0.0166667 ] , [ 0.0606061 , 0.0206186 ] +i [ 0.0178571 ,
0.0185185 ] , [ 0.031746 , 0.0235294 ] ]
38
[ [ -0.0232558 , 0.166667 ] , [ 0.0555556 , 0.0294118 ] +i [ 0.0408163 ,
0.0131579 ] , [ 0.0512821 , 0.0416667 ] ]
39
[ [ 0 , 0.037037 ] , [ 0.0571429 , 0.166667 ] +i [ 0.0119048 , 0 ] , [ 0.010101 , 25
]]
40
[ [ 0.0178571 , 0.015873 ] , [ 0.0408163 , 0.0243902 ] +i [ 1 , 0.0714286 ] , [
0.0238095 , 0.0357143 ] ]
41
[ [ -0.0909091 , 0.0103093 ] , [ 0.0135135 , 0.0487805 ] +i [ 0.142857 ,
0.0131579 ] , [ 0.0136986 , 0.0526316 ] ]
42
[ [ -0.0666667 , 0.0116279 ] , [ 0.010989 , 0.0102041 ] +i [ 0.0222222 , 0.010989
] , [ 0.0217391 , 0.037037 ] ]
43
[ [ 0.0102041 , 0.0153846 ] , [ 0.0243902 , 0.5 ] +i [ 0.0666667 , -0.0131579 ] ,
[ 0.222222 , 0.0107527 ] ]
44
[ [ -0.0107527 , 0.142857 ] , [ 0.0133333 , 1 ] +i [ 0.0128205 , 0 ] , [ 0.0238095
, 0.0714286 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
193
45
[ [ 0.25 , 0.0263158 ] , [ 0.0114943 , 0.020202 ] +i [ 0.0140845 , 0 ] , [ 0.0416667
, 0.2 ] ]
46
[ [ -0.030303 , 0.0307692 ] , [ 0.0465116 , 0.1 ] +i [ 0.142857 , 0 ] , [ 0.2 ,
0.105263 ] ]
47
[ [ 0.0769231 , 0.0117647 ] , [ 0.0408163 , 0.0138889 ] +i [ 0.0307692 ,
0.0714286 ] , [ 0.0263158 , 0.0217391 ] ]
48
[ [ -0.0416667 , 0.0151515 ] , [ 0.0243902 , 0.0434783 ] +i [ 0.111111 , 0.0526316 ] , [ 0.028169 , 1 ] ]
49
[ [ -0.0227273 , 0.0416667 ] , [ 0.0714286 , 2 ] +i [ 0.0285714 , -0.0625 ] , [
0.030303 , 0.0689655 ] ]
50
[ [ 0 , 0.011236 ] , [ 0.0465116 , 0.222222 ] +i [ 0.0163934 , -0.0454545 ] , [
0.0169492 , 0.0363636 ] ]
51
[ [ 0 , 0.027027 ] , [ 0.0238095 , 0.0555556 ] +i [ 0.0740741 , 0 ] , [ 0.025641 ,
0.037037 ] ]
52
[ [ 0.0103093 , 0.105263 ] , [ 0.037037 , 0.0833333 ] +i [ 0.0769231 , -0.0178571
] , [ 0.5 , 0.02 ] ]
53
[ [ 0 , 0.0204082 ] , [ 0.0273973 , 0.0740741 ] +i [ 0.285714 , 0 ] , [ 0.0333333 ,
0.4 ] ]
54
[ [ -0.0178571 , 0.133333 ] , [ 0.0105263 , 0.0350877 ] +i [ 0.0377358 , 0 ] , [
0.0512821 , 0.0120482 ] ]
55
[ [ 0 , 0.010989 ] , [ 0.0392157 , 0.015873 ] +i [ 0.0571429 , 0.0106383 ] , [
0.037037 , 0.0588235 ] ]
56
[ [ -0.0123457 , 0.0204082 ] , [ 0.04 , 0.111111 ] +i [ 0.142857 , -0.1 ] , [
0.0689655 , 1 ] ]
57
[ [ 0.0185185 , 0.0227273 ] , [ 0.1 , 0.666667 ] +i [ 0.0322581 , 0 ] , [ 0.0204082
, 0.0240964 ] ]
58
[ [ -0.0107527 , 0.222222 ] , [ 0.05 , 0.0277778 ] +i [ 0.25 , 0 ] , [ 0.0243902 ,
0.2 ] ]
59
[ [ 0 , 0.0322581 ] , [ 0.0285714 , 0.111111 ] +i [ 0.0322581 , 0.0166667 ] , [
0.0212766 , 125 ] ]
60
[ [ 0.0181818 , 0.0178571 ] , [ 0.0625 , 0.0322581 ] +i [ 25 , 0 ] , [ 0.0224719 ,
0.0240964 ] ]
61
[ [ 0 , 125 ] , [ 25 , 0.0909091 ] +i [ 0.020202 , 0 ] , [ 0.0224719 , 0.025641 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
194
62
[ [ 0.0138889 , 0.0689655 ] , [ 0.0235294 , 0.0253165 ] +i [ 1 , 0.0138889 ] , [
0.0116279 , 0.0266667 ] ]
63
[ [ -0.02 , 0.0196078 ] , [ 0.020202 , 0.1 ] +i [ 0.0212766 , 0.0114943 ] , [
0.0123457 , 0.0588235 ] ]
64
[ [ -0.0114943 , 0.0588235 ] , [ 0.0740741 , 0.0149254 ] +i [ 0.0227273 , 0.0121951 ] , [ 0.0153846 , 0.0487805 ] ]
65
[ [ -0.0144928 , 0.04 ] , [ 0.047619 , 0.0434783 ] +i [ 0.031746 , 0 ] , [ 0.03125 ,
0.142857 ] ]
66
[ [ 0 , 0.133333 ] , [ 0.1 , 0.0117647 ] +i [ 0.0350877 , 0.010989 ] , [ 0.0212766
, 0.0103093 ] ]
67
[ [ 0 , 0.05 ] , [ 0.0169492 , 0.0434783 ] +i [ 0.4 , 0.0104167 ] , [ 0.0188679 ,
0.0142857 ] ]
68
[ [ -0.0384615 , 0.015873 ] , [ 0.0294118 , 0.0338983 ] +i [ 0.0434783 ,
0.0212766 ] , [ 0.0107527 , 0.0263158 ] ]
69
[ [ 0.0131579 , 0.0253165 ] , [ 0.01 , 0.0377358 ] +i [ 0.0204082 , 0 ] , [
0.0243902 , 125 ] ]
70
[ [ 0 , 0.117647 ] , [ 0.0322581 , 0.04 ] +i [ 0.0769231 , -0.0169492 ] , [ 0.0666667
, 0.047619 ] ]
71
[ [ -0.015625 , 0.020202 ] , [ 0.0425532 , 0.133333 ] +i [ 0.0425532 , 0.011236
] , [ 0.0142857 , 0.025641 ] ]
72
[ [ -0.0142857 , 0.333333 ] , [ 0.0153846 , 0.0344828 ] +i [ 0.031746 , 0.016129
] , [ 0.08 , 0.02 ] ]
73
[ [ 0 , 0.0526316 ] , [ 0.0253165 , 0.0106383 ] +i [ 0.0540541 , 0 ] , [ 0.0153846
, 0.0108696 ] ]
74
[ [ -0.0105263 , 0.111111 ] , [ 0.0144928 , 0.0121951 ] +i [ 0.0232558 , 0.0188679 ] , [ 0.0135135 , 0.0377358 ] ]
75
[ [ 0 , 0.0227273 ] , [ 0.166667 , 0.047619 ] +i [ 0.0111111 , 0 ] , [ 0.030303 ,
0.166667 ] ]
76
[ [ 0 , 0.2 ] , [ 1 , 0.0104167 ] +i [ 0.0135135 , -0.0111111 ] , [ 0.016129 ,
0.0273973 ] ]
77
[ [ 0 , 0.181818 ] , [ 0.0188679 , 0.0120482 ] +i [ 0.0108696 , 0 ] , [ 0.0153846 ,
0.0266667 ] ]
78
[ [ -0.0181818 , 0.0128205 ] , [ 0.0111111 , 0.333333 ] +i [ 0.0104167 ,
0.0105263 ] , [ 0.0196078 , 0.0454545 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
195
79
[ [ 0.0114943 , 0.111111 ] , [ 125 , 0.111111 ] +i [ 0.0416667 , 0 ] , [ 0.0571429
, 0.2 ] ]
80
[ [ -0.0434783 , 0.0113636 ] , [ 0.0606061 , 0.0175439 ] +i [ 0.0266667 , 0.0208333 ] , [ 0.0454545 , 0.0119048 ] ]
81
[ [ -0.0114943 , 0.0952381 ] , [ 0.166667 , 0.0120482 ] +i [ 0.0350877 , 0.010989 ] , [ 0.0384615 , 0.08 ] ]
82
[ [ 0 , 0.0206186 ] , [ 0.0119048 , 0.0689655 ] +i [ 0.0357143 , -0.037037 ] , [
0.0138889 , 0.0204082 ] ]
83
[ [ 0.02 , 0.0227273 ] , [ 0.142857 , 1 ] +i [ 0.0392157 , 0.0344828 ] , [ 0.166667
, 0.0392157 ] ]
84
[ [ -0.0128205 , 0.0285714 ] , [ 0.0136986 , 0.0273973 ] +i [ 0.0322581 , -0.5 ] ,
[ 0.0465116 , 0.025641 ] ]
85
[ [ -0.0169492 , 25 ] , [ 0.0104167 , 0.0142857 ] +i [ 0.0714286 , 0.0232558 ] , [
0.181818 , 0.0120482 ] ]
86
[ [ -0.0238095 , 0.0238095 ] , [ 0.0229885 , 0.0465116 ] +i [ 0.0909091 , 0.0136986 ] , [ 0.0689655 , 0.0285714 ] ]
87
[ [ 0 , 0.133333 ] , [ 0.020202 , 0.0338983 ] +i [ 0.016129 , -0.015625 ] , [
0.0350877 , 125 ] ]
88
[ [ 0 , 0.0645161 ] , [ 0.0408163 , 0.0344828 ] +i [ 0.0107527 , 0.0294118 ] , [
0.0243902 , 0.0298507 ] ]
89
[ [ -0.111111 , 0.0444444 ] , [ 0.0210526 , 0.222222 ] +i [ 0.0377358 , 0.0208333 ] , [ 0.0606061 , 0.0277778 ] ]
90
[ [ -1 , 0.0769231 ] , [ 0.0408163 , 0.0833333 ] +i [ 0.0192308 , -0.0133333 ] , [
0.0588235 , 0.0108696 ] ]
91
[ [ 0 , 0.0487805 ] , [ 0.0113636 , 0.01 ] +i [ 0.0384615 , -0.0119048 ] , [
0.0512821 , 0.0215054 ] ]
92
[ [ 0.0125 , 0.0487805 ] , [ 0.333333 , 0.0217391 ] +i [ 0.0107527 , 0.0909091 ]
, [ 0.02 , 0.0126582 ] ]
93
[ [ -0.02 , 0.010989 ] , [ 0.0120482 , 0.0126582 ] +i [ 0.0333333 , 0.0526316 ] ,
[ 0.0222222 , 0.0333333 ] ]
94
[ [ 0 , 0.0140845 ] , [ 0.25 , 0.0206186 ] +i [ 0.0133333 , -0.0434783 ] , [
0.0833333 , 0.1 ] ]
95
[ [ -0.01 , 0.0181818 ] , [ 0.0714286 , 0.015873 ] +i [ 0.0206186 , 0 ] , [ 0.0625 ,
0.4 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
196
96
[ [ 0.166667 , 0.285714 ] , [ 0.0140845 , 0.0238095 ] +i [ 0.0120482 , 0.02 ] , [
0.0833333 , 0.0169492 ] ]
97
[ [ -0.012987 , 0.025641 ] , [ 0.0196078 , 0.25 ] +i [ 0.0666667 , -0.0121951 ] , [
0.0104167 , 0.0253165 ] ]
98
[ [ 0.0204082 , 0.0333333 ] , [ 0.0666667 , 0.0144928 ] +i [ 0.0357143 , 0.0108696 ] , [ 0.027027 , 0.0434783 ] ]
99
[ [ -0.0625 , 0.0266667 ] , [ 0.0108696 , 0.0142857 ] +i [ 0.0769231 , 0 ] , [
0.0212766 , 0.0108696 ] ]
100 [ [ 0.0151515 , 0.031746 ] , [ 0.0178571 , 0.0119048 ] +i [ 0.0105263 , 0 ] , [
0.0204082 , 0.030303 ] ]
101 [ [ 0.0151515 , 0.0217391 ] , [ 0.028169 , 0.0131579 ] +i [ 0.0111111 , 0.0196078
] , [ 0.02 , 0.0294118 ] ]
102 [ [ 0 , 0.181818 ] , [ 0.0238095 , 0.03125 ] +i [ 0.0113636 , 0 ] , [ 25 , 0.0454545
]]
103 [ [ 0 , 0.0298507 ] , [ 0.0229885 , 0.0357143 ] +i [ 0.0344828 , 0.0666667 ] , [
0.0327869 , 0.0185185 ] ]
104 [ [ -0.04 , 0.0377358 ] , [ 0.0454545 , 0.0103093 ] +i [ 0.0243902 , 0.0454545 ]
, [ 0.0178571 , 0.0416667 ] ]
105 [ [ -0.0123457 , 0.0434783 ] , [ 0.0277778 , 0.0454545 ] +i [ 0.0224719 , 0.0185185 ] , [ 0.0606061 , 0.0416667 ] ]
106 [ [ 0.0185185 , 0.117647 ] , [ 0.027027 , 0.016129 ] +i [ 0.0434783 , 0.0135135
] , [ 0.0133333 , 0.0392157 ] ]
107 [ [ 0.166667 , 0.0121951 ] , [ 0.153846 , 0.012987 ] +i [ 0.0243902 , 0.0208333
] , [ 0.010989 , 0.0277778 ] ]
108 [ [ -0.0102041 , 0.142857 ] , [ 0.0253165 , 0.0204082 ] +i [ 0.285714 , 0.0138889
] , [ 0.0298507 , 0.0103093 ] ]
109 [ [ 0.0102041 , 0.0555556 ] , [ 125 , 0.0740741 ] +i [ 0.0117647 , 0.0144928 ] ,
[ 0.142857 , 0.0344828 ] ]
110 [ [ 0.0147059 , 0.0138889 ] , [ 0.0714286 , 125 ] +i [ 0.0116279 , 0 ] , [ 0.0123457
, 0.0625 ] ]
111 [ [ 0.2 , 0.0188679 ] , [ 0.0138889 , 0.0144928 ] +i [ 0.0212766 , 0.0116279 ] , [
0.0263158 , 0.166667 ] ]
112 [ [ 0 , 0.0512821 ] , [ 0.0224719 , 0.0357143 ] +i [ 0.0222222 , 0 ] , [ 0.0243902
, 0.0212766 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
197
113 [ [ -0.0121951 , 0.0185185 ] , [ 0.2 , 0.0235294 ] +i [ 0.0208333 , 0.0384615 ] ,
[ 0.0454545 , 0.0153846 ] ]
114 [ [ 0 , 0.166667 ] , [ 0.142857 , 0.0289855 ] +i [ 0.0384615 , 0 ] , [ 0.0125 ,
0.0289855 ] ]
115 [ [ -0.0384615 , 0.0151515 ] , [ 0.0266667 , 0.047619 ] +i [ 0.0277778 , 0.0123457 ] , [ 0.025974 , 0.0178571 ] ]
116 [ [ 0.333333 , 0.0131579 ] , [ 0.015873 , 0.0116279 ] +i [ 0.015873 , 0.0123457
] , [ 0.027027 , 0.0102041 ] ]
117 [ [ 125 , 0.0133333 ] , [ 0.027027 , 0.0102041 ] +i [ 0.0246914 , 0.0277778 ] , [
0.0273973 , 1 ] ]
118 [ [ -0.0232558 , 0.0384615 ] , [ 0.1 , 0.0769231 ] +i [ 0.027027 , 0.0178571 ] , [
0.031746 , 0.0227273 ] ]
119 [ [ 0 , 0.0392157 ] , [ 0.021978 , 0.0555556 ] +i [ 0.0333333 , 0.0142857 ] , [
0.0104167 , 0.5 ] ]
120 [ [ -0.0666667 , 0.0294118 ] , [ 0.0666667 , 0.0227273 ] +i [ 0.0232558 , 0.0185185 ] , [ 0.0238095 , 0.047619 ] ]
121 [ [ 0.0243902 , 0.166667 ] , [ 0.0208333 , 0.0105263 ] +i [ 0.0227273 , 0.037037
] , [ 0.025974 , 0.0416667 ] ]
122 [ [ -0.0277778 , 0.0119048 ] , [ 0.0222222 , 0.0178571 ] +i [ 0.0253165 , -0.0125
] , [ 0.285714 , 0.015873 ] ]
123 [ [ 0 , 0.031746 ] , [ 0.0151515 , 1 ] +i [ 0.333333 , 0 ] , [ 0.0147059 , 0.0142857
]]
124 [ [ 0.2 , 0.0273973 ] , [ 0.03125 , 0.0344828 ] +i [ 0.0307692 , 0.5 ] , [ 0.0833333
, 0.021978 ] ]
125 [ [ -0.0434783 , 0.0909091 ] , [ 0.030303 , 0.0909091 ] +i [ 0.0434783 ,
0.0909091 ] , [ 0.0208333 , 0.0238095 ] ]
126 [ [ 0 , 0.111111 ] , [ 0.0181818 , 0.0869565 ] +i [ 0.25 , 0.0217391 ] , [ 0.025641
, 0.0444444 ] ]
127 [ [ 0 , 0.0322581 ] , [ 0.0294118 , 0.0833333 ] +i [ 0.0105263 , -0.0322581 ] , [
0.0425532 , 0.0227273 ] ]
128 [ [ -0.0136986 , 0.2 ] , [ 0.0322581 , 0.08 ] +i [ 0.111111 , -0.0263158 ] , [
0.0133333 , 0.0952381 ] ]
129 [ [ -0.0119048 , 0.0120482 ] , [ 0.1 , 0.0238095 ] +i [ 0.0606061 , 0 ] , [ 25 , 25 ]
]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
198
130 [ [ -0.030303 , 0.0263158 ] , [ 0.0217391 , 0.0350877 ] +i [ 0.0104167 , 0.0163934 ] , [ 1 , 0.0106383 ] ]
131 [ [ -0.0108696 , 0.025974 ] , [ 0.0238095 , 0.0384615 ] +i [ 0.0666667 , 0.010989
] , [ 0.0266667 , 0.0273973 ] ]
132 [ [ 0.010101 , 0.5 ] , [ 0.333333 , 0.025974 ] +i [ 25 , 0 ] , [ 25 , 0.0144928 ] ]
133 [ [ 0.0285714 , 0.0689655 ] , [ 0.0121951 , 0.02 ] +i [ 0.0126582 , 0 ] , [
0.0833333 , 0.0227273 ] ]
134 [ [ 0.0277778 , 0.0108696 ] , [ 0.0526316 , 0.0714286 ] +i [ 1 , -0.0588235 ] , [
0.021978 , 0.015873 ] ]
135 [ [ -0.0833333 , 0.03125 ] , [ 0.0869565 , 0.0208333 ] +i [ 0.0298507 , 0.0163934 ] , [ 0.0512821 , 0.0224719 ] ]
136 [ [ 0 , 0.333333 ] , [ 0.0555556 , 0.02 ] +i [ 0.0416667 , -0.037037 ] , [ 0.5 ,
0.0204082 ] ]
137 [ [ 0 , 0.1 ] , [ 0.0131579 , 0.0350877 ] +i [ 0.03125 , -0.0104167 ] , [ 0.0444444
, 0.0217391 ] ]
138 [ [ 0 , 0.0263158 ] , [ 0.0232558 , 0.0285714 ] +i [ 1 , 0 ] , [ 0.0126582 ,
0.0232558 ] ]
139 [ [ 0.0169492 , 0.0833333 ] , [ 0.021978 , 0.025641 ] +i [ 0.0238095 , 0 ] , [
0.0208333 , 0.0377358 ] ]
140 [ [ 0 , 0.0555556 ] , [ 0.222222 , 0.0322581 ] +i [ 0.0465116 , 0 ] , [ 0.01 ,
0.0224719 ] ]
141 [ [ 0 , 0.0307692 ] , [ 0.0909091 , 0.0322581 ] +i [ 0.0116279 , 0 ] , [ 0.4 ,
0.015873 ] ]
142 [ [ 0.0135135 , 0.0444444 ] , [ 0.0444444 , 0.04 ] +i [ 0.105263 , 0 ] , [ 0.015625
, 0.0377358 ] ]
143 [ [ 0 , 0.0188679 ] , [ 0.0125 , 0.037037 ] +i [ 0.0227273 , 0.0434783 ] , [
0.011236 , 0.03125 ] ]
144 [ [ -0.0125 , 0.117647 ] , [ 0.025974 , 0.0126582 ] +i [ 0.047619 , 0.0625 ] , [
0.0204082 , 0.010101 ] ]
145 [ [ -0.0107527 , 0.0869565 ] , [ 0.027027 , 0.047619 ] +i [ 0.0229885 , 0.011236
] , [ 0.111111 , 0.111111 ] ]
146 [ [ 0 , 0.5 ] , [ 0.0645161 , 0.0344828 ] +i [ 0.0625 , 0 ] , [ 0.0188679 , 0.0645161
]]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
199
147 [ [ 0 , 0.0138889 ] , [ 0.0540541 , 0.0166667 ] +i [ 0.0454545 , 0 ] , [ 0.0294118
, 0.0263158 ] ]
148 [ [ 0 , 0.25 ] , [ 0.0204082 , 0.0384615 ] +i [ 0.0833333 , 0 ] , [ 0.111111 ,
0.0487805 ] ]
149 [ [ 0 , 1 ] , [ 0.0487805 , 0.2 ] +i [ 0.0204082 , -0.0119048 ] , [ 0.0196078 ,
0.0338983 ] ]
150 [ [ -0.0344828 , 0.025641 ] , [ 1 , 0.0322581 ] +i [ 0.016129 , 0.0526316 ] , [
0.333333 , 0.0243902 ] ]
151 [ [ 0.025641 , 0.0294118 ] , [ 0.0212766 , 0.0206186 ] +i [ 0.016129 , 0 ] , [
0.025641 , 0.028169 ] ]
152 [ [ -0.0204082 , 0.0178571 ] , [ 0.030303 , 0.0740741 ] +i [ 1 , -0.0285714 ] , [
0.0166667 , 0.0212766 ] ]
153 [ [ 0 , 0.0210526 ] , [ 0.0289855 , 0.0714286 ] +i [ 0.010101 , -0.0111111 ] , [
0.0204082 , 25 ] ]
154 [ [ 0 , 0.0833333 ] , [ 0.0227273 , 0.03125 ] +i [ 0.0363636 , 0.016129 ] , [
0.0571429 , 0.0116279 ] ]
155 [ [ -0.010989 , 0.0215054 ] , [ 0.0147059 , 0.0408163 ] +i [ 0.0142857 , 0 ] , [
0.0833333 , 0.0666667 ] ]
156 [ [ 0.0153846 , 0.0111111 ] , [ 0.0338983 , 0.2 ] +i [ 0.0111111 , -0.0208333 ] ,
[ 0.0243902 , 0.0526316 ] ]
157 [ [ 0 , 0.012987 ] , [ 0.0104167 , 0.0238095 ] +i [ 0.0229885 , 0.0192308 ] , [ 0.1
, 0.0113636 ] ]
158 [ [ 0 , 0.025641 ] , [ 0.015873 , 0.08 ] +i [ 0.030303 , 0 ] , [ 0.030303 , 0.0232558
]]
159 [ [ 0 , 0.0126582 ] , [ 0.0454545 , 0.0357143 ] +i [ 0.0952381 , 0 ] , [ 0.0135135
, 0.0285714 ] ]
160 [ [ 0 , 0.0175439 ] , [ 0.0277778 , 0.0123457 ] +i [ 0.0555556 , 0 ] , [ 0.0240964
, 0.0384615 ] ]
161 [ [ -0.0169492 , 0.05 ] , [ 0.0208333 , 0.0425532 ] +i [ 0.5 , 0 ] , [ 125 , 25 ] ]
162 [ [ -0.25 , 0.0273973 ] , [ 0.0135135 , 0.0246914 ] +i [ 0.025641 , 0 ] , [ 0.0465116
, 0.111111 ] ]
163 [ [ 0 , 0.0253165 ] , [ 25 , 0.0512821 ] +i [ 0.0454545 , -0.037037 ] , [ 0.015625
, 0.025641 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
200
164 [ [ 0.0166667 , 0.0117647 ] , [ 0.117647 , 0.0263158 ] +i [ 0.25 , 0.0106383 ] , [
0.0235294 , 0.0444444 ] ]
165 [ [ 0.0625 , 0.0108696 ] , [ 0.0307692 , 0.0833333 ] +i [ 0.0625 , -0.0136986 ] ,
[ 0.0666667 , 0.047619 ] ]
166 [ [ 0 , 0.0333333 ] , [ 0.0204082 , 0.0357143 ] +i [ 0.020202 , 0.04 ] , [ 0.08 ,
0.0133333 ] ]
167 [ [ 0 , 0.0833333 ] , [ 0.0232558 , 1 ] +i [ 0.04 , -0.0106383 ] , [ 0.166667 ,
0.153846 ] ]
168 [ [ -0.0526316 , 0.0454545 ] , [ 0.0232558 , 0.0285714 ] +i [ 0.010989 ,
0.0232558 ] , [ 0.010101 , 0.0229885 ] ]
169 [ [ 0 , 0.0106383 ] , [ 0.0289855 , 0.0149254 ] +i [ 0.333333 , -0.025641 ] , [ 1 ,
0.05 ] ]
170 [ [ 0 , 0.0113636 ] , [ 25 , 0.0266667 ] +i [ 0.047619 , 0.0357143 ] , [ 0.0181818
, 0.0224719 ] ]
171 [ [ 0.0232558 , 0.0294118 ] , [ 0.222222 , 0.016129 ] +i [ 0.0588235 , 0.0114943
] , [ 0.4 , 0.0232558 ] ]
172 [ [ 0 , 0.03125 ] , [ 0.0108696 , 0.0285714 ] +i [ 0.0625 , 0.0175439 ] , [
0.0322581 , 0.0769231 ] ]
173 [ [ 0.0769231 , 0.0192308 ] , [ 1 , 0.0111111 ] +i [ 0.0169492 , -0.0238095 ] , [
0.021978 , 0.142857 ] ]
174 [ [ 0.25 , 0.0298507 ] , [ 0.0192308 , 0.0263158 ] +i [ 0.0689655 , -0.030303 ] ,
[ 0.016129 , 0.0285714 ] ]
175 [ [ 0.1 , 0.0136986 ] , [ 125 , 0.0210526 ] +i [ 0.333333 , 0.0243902 ] , [
0.0238095 , 0.015873 ] ]
176 [ [ 0.0140845 , 0.0416667 ] , [ 0.0333333 , 0.0222222 ] +i [ 0.0149254 , 0.0113636 ] , [ 0.0350877 , 0.0606061 ] ]
177 [ [ 0.0175439 , 0.0166667 ] , [ 0.0114943 , 0.0113636 ] +i [ 0.0666667 , 0 ] , [
0.111111 , 0.0434783 ] ]
178 [ [ 125 , 0.025641 ] , [ 0.0147059 , 0.012987 ] +i [ 0.020202 , 0 ] , [ 0.047619 ,
0.037037 ] ]
179 [ [ 0.0555556 , 0.0106383 ] , [ 0.0645161 , 0.0555556 ] +i [ 0.0227273 , 0.012987
] , [ 0.0666667 , 0.0740741 ] ]
180 [ [ 0.0125 , 0.0307692 ] , [ 0.0263158 , 2 ] +i [ 0.153846 , 0 ] , [ 0.0192308 ,
0.012987 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
201
181 [ [ 0.0322581 , 0.016129 ] , [ 0.015625 , 0.2 ] +i [ 0.0425532 , 0 ] , [ 0.111111 ,
0.0344828 ] ]
182 [ [ 0 , 0.0215054 ] , [ 0.0217391 , 0.030303 ] +i [ 0.0833333 , -0.016129 ] , [
0.0217391 , 0.016129 ] ]
183 [ [ 0.0135135 , 0.0208333 ] , [ 0.047619 , 0.027027 ] +i [ 0.0294118 , 0.0344828
] , [ 0.037037 , 0.1 ] ]
184 [ [ -0.0138889 , 0.0645161 ] , [ 0.0172414 , 0.0121951 ] +i [ 0.0294118 , 0 ] , [
0.0298507 , 0.0113636 ] ]
185 [ [ 0 , 0.0833333 ] , [ 0.0172414 , 0.333333 ] +i [ 0.0185185 , 0.0138889 ] , [
0.0123457 , 0.0487805 ] ]
186 [ [ 0.0357143 , 0.0625 ] , [ 0.0444444 , 0.011236 ] +i [ 0.0909091 , -0.0526316
] , [ 0.1 , 0.0166667 ] ]
187 [ [ -0.0105263 , 0.0645161 ] , [ 0.0106383 , 0.285714 ] +i [ 0.04 , -0.0181818 ] ,
[ 0.0273973 , 0.0327869 ] ]
188 [ [ -0.016129 , 0.0454545 ] , [ 0.011236 , 0.0149254 ] +i [ 0.0294118 , 0.0116279
] , [ 0.028169 , 0.0666667 ] ]
189 [ [ -0.0294118 , 0.0227273 ] , [ 0.0512821 , 0.0142857 ] +i [ 0.0238095 , 0.0243902 ] , [ 0.0104167 , 0.0298507 ] ]
190 [ [ 0 , 0.0454545 ] , [ 0.0212766 , 0.0298507 ] +i [ 0.0384615 , 0.0243902 ] , [
0.0105263 , 0.0526316 ] ]
191 [ [ 0 , 0.0322581 ] , [ 0.0714286 , 0.0206186 ] +i [ 0.0909091 , -0.0111111 ] , [
0.0344828 , 0.1 ] ]
192 [ [ -0.0714286 , 0.0666667 ] , [ 0.0714286 , 0.25 ] +i [ 0.0105263 , 0.166667 ] ,
[ 0.0714286 , 0.166667 ] ]
193 [ [ 0 , 0.0204082 ] , [ 0.0289855 , 0.08 ] +i [ 0.166667 , -0.0181818 ] , [ 0.0277778
, 0.0357143 ] ]
194 [ [ -0.0104167 , 2 ] , [ 0.0169492 , 0.025974 ] +i [ 0.0363636 , 0 ] , [ 0.0645161
, 0.03125 ] ]
195 [ [ 0 , 0.0246914 ] , [ 0.0185185 , 0.0106383 ] +i [ 0.0909091 , -0.0116279 ] , [
0.0344828 , 0.0227273 ] ]
196 [ [ 0.0769231 , 0.0243902 ] , [ 0.0229885 , 0.0571429 ] +i [ 0.0204082 , 0 ] , [
0.0151515 , 0.0103093 ] ]
197 [ [ -0.0222222 , 0.028169 ] , [ 0.0196078 , 0.0120482 ] +i [ 0.5 , 0.0106383 ] , [
0.01 , 0.0606061 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
202
198 [ [ 0 , 0.0833333 ] , [ 0.0227273 , 0.0238095 ] +i [ 0.0246914 , 0 ] , [ 0.105263 ,
0.0166667 ] ]
199 [ [ -0.0136986 , 25 ] , [ 0.025641 , 0.0263158 ] +i [ 0.666667 , -0.0625 ] , [
0.0107527 , 0.0416667 ] ]
200 [ [ -0.0175439 , 0.166667 ] , [ 0.0212766 , 0.030303 ] +i [ 0.0243902 , -0.333333
] , [ 0.181818 , 0.0344828 ] ]
201 [ [ 0 , 0.0253165 ] , [ 0.0217391 , 0.0487805 ] +i [ 0.0294118 , 0.0116279 ] , [ 1
, 0.0144928 ] ]
202 [ [ -0.0263158 , 0.0120482 ] , [ 1 , 0.285714 ] +i [ 0.0555556 , 0 ] , [ 0.0138889
, 0.0714286 ] ]
203 [ [ 0.0169492 , 0.0125 ] , [ 0.0571429 , 0.153846 ] +i [ 0.0106383 , 0.0322581 ]
, [ 0.0322581 , 0.0285714 ] ]
204 [ [ -0.0357143 , 0.04 ] , [ 0.0106383 , 0.0555556 ] +i [ 0.04 , -0.0105263 ] , [
0.0120482 , 0.0294118 ] ]
205 [ [ 0.0384615 , 0.0253165 ] , [ 0.0175439 , 0.025641 ] +i [ 0.25 , -0.0232558 ] ,
[ 1 , 0.166667 ] ]
206 [ [ -0.0172414 , 0.0555556 ] , [ 0.010101 , 0.0384615 ] +i [ 0.0714286 , 0 ] , [
0.0769231 , 0.105263 ] ]
207 [ [ 0.0357143 , 0.0123457 ] , [ 0.0178571 , 0.0169492 ] +i [ 0.0208333 , 0.0140845 ] , [ 0.021978 , 0.0135135 ] ]
208 [ [ -0.0106383 , 0.0769231 ] , [ 0.0714286 , 0.08 ] +i [ 0.0666667 , 0.0104167 ]
, [ 0.25 , 0.0105263 ] ]
209 [ [ 0 , 2 ] , [ 0.25 , 0.0909091 ] +i [ 0.0215054 , 0 ] , [ 0.0555556 , 0.0555556 ] ]
210 [ [ 0 , 0.0196078 ] , [ 0.0215054 , 0.0222222 ] +i [ 0.0181818 , -0.0416667 ] , [
0.0185185 , 0.0540541 ] ]
211 [ [ 0.0149254 , 0.01 ] , [ 0.0350877 , 0.0689655 ] +i [ 0.0294118 , 0 ] , [ 0.1 ,
0.0217391 ] ]
212 [ [ 0 , 0.0222222 ] , [ 0.0102041 , 0.5 ] +i [ 0.0344828 , -0.0232558 ] , [ 0.4 ,
0.0289855 ] ]
213 [ [ 0 , 0.0235294 ] , [ 0.0266667 , 0.0117647 ] +i [ 0.0333333 , 0 ] , [ 0.133333 ,
0.0104167 ] ]
214 [ [ 0.0204082 , 0.111111 ] , [ 0.0119048 , 0.0526316 ] +i [ 0.0235294 , 0.0188679
] , [ 0.0229885 , 0.0142857 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
203
215 [ [ 0.0227273 , 0.0277778 ] , [ 0.0285714 , 0.0106383 ] +i [ 0.0128205 , 0 ] , [
0.4 , 0.0117647 ] ]
216 [ [ -0.0526316 , 0.0212766 ] , [ 0.0133333 , 0.04 ] +i [ 0.0133333 , 0 ] , [
0.0135135 , 0.0285714 ] ]
217 [ [ -0.0454545 , 0.0224719 ] , [ 0.0434783 , 0.03125 ] +i [ 0.047619 , 0.142857
] , [ 0.0277778 , 0.0144928 ] ]
218 [ [ -0.0196078 , 0.142857 ] , [ 0.0222222 , 0.0175439 ] +i [ 0.0217391 , 0 ] , [
0.0833333 , 0.0526316 ] ]
219 [ [ -0.0666667 , 0.0444444 ] , [ 0.0227273 , 0.0238095 ] +i [ 0.0217391 , 0 ] , [
0.04 , 0.333333 ] ]
220 [ [ 0.0169492 , 0.666667 ] , [ 0.0114943 , 0.0144928 ] +i [ 0.020202 , 0.0125 ] ,
[ 0.0833333 , 0.0111111 ] ]
221 [ [ 0 , 0.0434783 ] , [ 0.0666667 , 0.0273973 ] +i [ 0.0540541 , -0.0128205 ] , [
0.037037 , 0.025974 ] ]
222 [ [ -0.0103093 , 0.0136986 ] , [ 0.0588235 , 0.0588235 ] +i [ 0.0344828 , 0 ] , [
0.0384615 , 0.0512821 ] ]
223 [ [ -0.0123457 , 0.0114943 ] , [ 0.111111 , 0.0128205 ] +i [ 0.0689655 , -0.0125
] , [ 0.0416667 , 0.04 ] ]
224 [ [ 0.0175439 , 0.0232558 ] , [ 0.0625 , 0.142857 ] +i [ 0.0117647 , -0.0181818
] , [ 0.0285714 , 0.1 ] ]
225 [ [ 0.0128205 , 0.025641 ] , [ 0.04 , 0.166667 ] +i [ 0.0229885 , -0.011236 ] , [
0.0131579 , 0.0454545 ] ]
226 [ [ -125 , 0.011236 ] , [ 125 , 0.222222 ] +i [ 0.181818 , -0.0243902 ] , [ 0.02 ,
0.0102041 ] ]
227 [ [ 0 , 0.0240964 ] , [ 0.0119048 , 0.0192308 ] +i [ 0.0333333 , 0 ] , [ 0.0588235
,1]]
228 [ [ 0.0107527 , 0.0526316 ] , [ 0.0117647 , 0.01 ] +i [ 0.5 , -0.0142857 ] , [
0.0238095 , 0.0350877 ] ]
229 [ [ 0 , 0.0102041 ] , [ 0.025641 , 0.0266667 ] +i [ 0.0285714 , 0.0185185 ] , [
0.0294118 , 0.0126582 ] ]
230 [ [ -0.0163934 , 0.4 ] , [ 0.0869565 , 0.0178571 ] +i [ 0.0714286 , 0 ] , [ 0.027027
, 0.0117647 ] ]
231 [ [ 0 , 0.0625 ] , [ 0.0102041 , 0.166667 ] +i [ 0.0540541 , 0.0172414 ] , [ 0.02 ,
0.010989 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
204
232 [ [ 0 , 0.0512821 ] , [ 0.0465116 , 0.0344828 ] +i [ 0.0208333 , 0 ] , [ 0.0263158
, 0.285714 ] ]
233 [ [ -0.016129 , 25 ] , [ 0.285714 , 0.2 ] +i [ 0.0107527 , 0.01 ] , [ 0.0263158 ,
0.0540541 ] ]
234 [ [ -0.0222222 , 0.0645161 ] , [ 0.010989 , 0.0571429 ] +i [ 125 , 0.0114943 ] , [
0.0416667 , 0.0298507 ] ]
235 [ [ -0.142857 , 0.0116279 ] , [ 2 , 0.021978 ] +i [ 0.0116279 , 0 ] , [ 0.0526316 ,
0.0144928 ] ]
236 [ [ 0 , 0.0117647 ] , [ 0.0208333 , 0.0344828 ] +i [ 0.0540541 , 0 ] , [ 2 ,
0.0416667 ] ]
237 [ [ -0.0126582 , 0.0217391 ] , [ 0.285714 , 0.0224719 ] +i [ 0.0175439 , -125 ] ,
[ 0.0149254 , 0.0172414 ] ]
238 [ [ 0 , 0.0555556 ] , [ 0.021978 , 0.0147059 ] +i [ 125 , -0.0285714 ] , [ 0.0212766
, 0.031746 ] ]
239 [ [ 0.0172414 , 0.012987 ] , [ 0.0434783 , 0.0125 ] +i [ 1 , 0 ] , [ 0.012987 ,
0.0307692 ] ]
240 [ [ 0.0125 , 0.0350877 ] , [ 0.0322581 , 0.0208333 ] +i [ 0.05 , 0 ] , [ 0.021978 ,
0.0377358 ] ]
241 [ [ -0.0285714 , 0.1 ] , [ 0.0138889 , 0.0465116 ] +i [ 0.05 , 0 ] , [ 0.0454545 ,
0.5 ] ]
242 [ [ 0.0416667 , 0.333333 ] , [ 0.0512821 , 0.030303 ] +i [ 0.0151515 , -0.0588235
] , [ 0.0121951 , 25 ] ]
243 [ [ -0.025641 , 0.0111111 ] , [ 0.142857 , 0.0333333 ] +i [ 0.0192308 , 0.0138889
] , [ 0.0238095 , 0.0153846 ] ]
244 [ [ 0 , 0.02 ] , [ 0.0104167 , 0.0869565 ] +i [ 0.047619 , 0.0588235 ] , [ 0.0128205
, 0.0188679 ] ]
245 [ [ 0 , 25 ] , [ 0.0238095 , 0.0408163 ] +i [ 0.4 , 0 ] , [ 0.0289855 , 0.0238095 ] ]
246 [ [ 0.0121951 , 0.0625 ] , [ 0.0133333 , 0.0188679 ] +i [ 0.0212766 , 0 ] , [ 0.08
, 0.0149254 ] ]
247 [ [ -0.0555556 , 0.0217391 ] , [ 0.0238095 , 0.0151515 ] +i [ 0.0217391 ,
0.0138889 ] , [ 0.0166667 , 1 ] ]
248 [ [ 0.0188679 , 0.0131579 ] , [ 0.0425532 , 0.030303 ] +i [ 0.0222222 , 0.0212766
] , [ 0.0434783 , 0.25 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
205
249 [ [ 0.0175439 , 0.0384615 ] , [ 0.0140845 , 0.027027 ] +i [ 0.0104167 , 0.0106383
] , [ 0.0833333 , 0.030303 ] ]
250 [ [ 0.0285714 , 0.0196078 ] , [ 0.0625 , 0.027027 ] +i [ 0.016129 , 0.0163934 ] ,
[ 0.0235294 , 0.0333333 ] ]
251 [ [ 0 , 0.0298507 ] , [ 0.0588235 , 0.011236 ] +i [ 0.0769231 , -0.5 ] , [ 0.0909091
, 0.0196078 ] ]
252 [ [ -0.010989 , 0.0294118 ] , [ 0.0952381 , 0.0434783 ] +i [ 0.0238095 , 0 ] , [
0.0206186 , 0.0588235 ] ]
253 [ [ 0 , 0.142857 ] , [ 1 , 0.0188679 ] +i [ 0.0434783 , -0.016129 ] , [ 0.0384615 ,
0.0526316 ] ]
254 [ [ 0 , 0.0149254 ] , [ 0.03125 , 0.0232558 ] +i [ 0.010101 , -0.0434783 ] , [
0.0178571 , 0.0227273 ] ]
255 [ [ -0.0140845 , 0.0212766 ] , [ 0.0243902 , 0.0102041 ] +i [ 0.0232558 , 0.0153846 ] , [ 0.0210526 , 0.0235294 ] ]
256 [ [ 0 , 0.0294118 ] , [ 0.0625 , 0.0434783 ] +i [ 0.0263158 , -0.0181818 ] , [
0.0204082 , 0.1 ] ]
257 [ [ 0.047619 , 0.0169492 ] , [ 0.0434783 , 0.0333333 ] +i [ 0.0204082 , -0.01 ] ,
[ 0.02 , 0.0952381 ] ]
258 [ [ -125 , 0.0147059 ] , [ 0.222222 , 0.0444444 ] +i [ 0.0142857 , -0.0121951 ] ,
[ 25 , 0.111111 ] ]
259 [ [ -0.0144928 , 0.0235294 ] , [ 0.0689655 , 0.0212766 ] +i [ 0.0434783 ,
0.0121951 ] , [ 0.133333 , 0.04 ] ]
260 [ [ 0 , 0.0238095 ] , [ 0.0227273 , 0.0294118 ] +i [ 0.0204082 , 0.0125 ] , [
0.027027 , 0.0178571 ] ]
261 [ [ 0.0131579 , 0.0136986 ] , [ 0.012987 , 1 ] +i [ 0.0625 , 0 ] , [ 0.0625 ,
0.0246914 ] ]
262 [ [ 0.010989 , 0.0232558 ] , [ 0.105263 , 0.0140845 ] +i [ 0.03125 , -0.016129 ]
, [ 0.1 , 0.0121951 ] ]
263 [ [ 0.0222222 , 0.0416667 ] , [ 0.0217391 , 0.285714 ] +i [ 0.0434783 , 0 ] , [
0.0210526 , 0.025641 ] ]
264 [ [ 0 , 0.0144928 ] , [ 0.0322581 , 0.0178571 ] +i [ 0.0149254 , 0 ] , [ 0.153846 ,
0.0175439 ] ]
265 [ [ 0 , 0.153846 ] , [ 0.0196078 , 0.0131579 ] +i [ 0.0833333 , 0 ] , [ 0.0208333 ,
0.0224719 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
206
266 [ [ -0.030303 , 0.031746 ] , [ 0.0227273 , 0.0338983 ] +i [ 0.0166667 , 0.0138889 ] , [ 0.0588235 , 0.0273973 ] ]
267 [ [ 0.0113636 , 0.0119048 ] , [ 0.166667 , 0.0204082 ] +i [ 0.0425532 , 0.0142857 ] , [ 0.0131579 , 0.111111 ] ]
268 [ [ 0.0116279 , 0.025641 ] , [ 0.0229885 , 0.0243902 ] +i [ 0.0116279 , 0 ] , [
0.0217391 , 25 ] ]
269 [ [ 0.027027 , 0.0377358 ] , [ 0.0454545 , 0.0163934 ] +i [ 0.0120482 , 0 ] , [
0.0224719 , 0.05 ] ]
270 [ [ 0 , 0.0208333 ] , [ 0.0454545 , 0.333333 ] +i [ 0.0434783 , 0 ] , [ 0.0153846 ,
0.05 ] ]
271 [ [ -0.01 , 0.0163934 ] , [ 0.0909091 , 0.0108696 ] +i [ 0.0147059 , -0.0294118 ]
, [ 0.0131579 , 0.0540541 ] ]
272 [ [ 0.010101 , 0.0625 ] , [ 0.0465116 , 0.0208333 ] +i [ 0.0149254 , -0.0175439
] , [ 0.0114943 , 0.0263158 ] ]
273 [ [ 0 , 0.0363636 ] , [ 0.153846 , 0.0188679 ] +i [ 0.0512821 , -0.142857 ] , [
0.0769231 , 0.0645161 ] ]
274 [ [ 0.0140845 , 0.0285714 ] , [ 25 , 0.111111 ] +i [ 0.030303 , 0 ] , [ 0.0135135 ,
0.0243902 ] ]
275 [ [ 0.0149254 , 0.015625 ] , [ 0.0138889 , 0.047619 ] +i [ 0.0333333 , 0 ] , [
0.0136986 , 0.0666667 ] ]
276 [ [ 0 , 0.0253165 ] , [ 0.142857 , 0.0357143 ] +i [ 0.142857 , 0 ] , [ 0.0277778 ,
0.0714286 ] ]
277 [ [ 0.166667 , 0.0740741 ] , [ 0.0208333 , 0.0104167 ] +i [ 0.142857 , -0.142857
] , [ 0.0140845 , 0.0333333 ] ]
278 [ [ 0 , 0.0116279 ] , [ 0.030303 , 0.0138889 ] +i [ 0.0222222 , 125 ] , [ 0.0277778
, 0.0113636 ] ]
279 [ [ 0.0166667 , 0.0333333 ] , [ 0.0172414 , 0.0229885 ] +i [ 0.1 , -0.0151515 ] ,
[ 0.0114943 , 0.1 ] ]
280 [ [ -0.0833333 , 0.0126582 ] , [ 0.0266667 , 0.0208333 ] +i [ 0.0454545 ,
0.0133333 ] , [ 0.0588235 , 0.08 ] ]
281 [ [ 1 , 0.0169492 ] , [ 0.0104167 , 0.0869565 ] +i [ 0.0119048 , 0 ] , [ 0.25 ,
0.0606061 ] ]
282 [ [ 0 , 0.016129 ] , [ 0.047619 , 0.0344828 ] +i [ 0.0350877 , 0 ] , [ 0.0606061 ,
0.0107527 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
207
283 [ [ 0.0147059 , 0.0307692 ] , [ 0.133333 , 0.0212766 ] +i [ 0.010989 , -0.0384615
] , [ 0.0178571 , 0.015625 ] ]
284 [ [ 0 , 0.0125 ] , [ 0.0217391 , 0.0149254 ] +i [ 0.0113636 , -0.111111 ] , [
0.037037 , 0.0384615 ] ]
285 [ [ 0 , 0.0163934 ] , [ 0.0384615 , 0.111111 ] +i [ 0.0253165 , 0 ] , [ 0.0111111 ,
0.04 ] ]
286 [ [ 0 , 0.0833333 ] , [ 0.05 , 0.1 ] +i [ 0.0714286 , 0.0263158 ] , [ 0.0114943 ,
0.117647 ] ]
287 [ [ 0 , 0.0126582 ] , [ 0.012987 , 0.0169492 ] +i [ 0.0377358 , -0.0212766 ] , [
0.0263158 , 0.0625 ] ]
288 [ [ 0.02 , 0.015873 ] , [ 0.0588235 , 0.04 ] +i [ 0.0666667 , 0 ] , [ 0.0235294 ,
0.0136986 ] ]
289 [ [ -0.01 , 0.0333333 ] , [ 0.0357143 , 0.111111 ] +i [ 0.0444444 , 0 ] , [ 0.0454545
, 0.04 ] ]
290 [ [ 0.037037 , 0.0263158 ] , [ 0.0133333 , 0.0232558 ] +i [ 0.5 , 0.0434783 ] , [
0.222222 , 0.0104167 ] ]
291 [ [ 0 , 0.0363636 ] , [ 0.0869565 , 0.025974 ] +i [ 0.0263158 , -0.0588235 ] , [
0.25 , 0.021978 ] ]
292 [ [ 0 , 0.0181818 ] , [ 0.0666667 , 0.0571429 ] +i [ 0.0512821 , -0.0133333 ] , [
0.0740741 , 0.03125 ] ]
293 [ [ 0.012987 , 0.0208333 ] , [ 0.0125 , 0.016129 ] +i [ 0.0222222 , 0 ] , [
0.0322581 , 0.25 ] ]
294 [ [ 0 , 0.0277778 ] , [ 0.0333333 , 0.0588235 ] +i [ 0.030303 , 0 ] , [ 0.0338983 ,
0.02 ] ]
295 [ [ -0.0232558 , 0.0217391 ] , [ 0.011236 , 0.0512821 ] +i [ 0.0307692 , 0.2 ] , [
0.0128205 , 0.037037 ] ]
296 [ [ 0 , 0.0555556 ] , [ 0.010989 , 0.0425532 ] +i [ 0.0344828 , 0.0178571 ] , [ 0.2
, 0.047619 ] ]
297 [ [ -25 , 0.016129 ] , [ 0.0416667 , 0.166667 ] +i [ 0.010989 , -0.0142857 ] , [
0.0166667 , 0.0344828 ] ]
298 [ [ 0.0153846 , 0.0217391 ] , [ 0.0769231 , 0.181818 ] +i [ 0.010101 , 0.0588235
] , [ 0.0123457 , 125 ] ]
299 [ [ 0 , 0.166667 ] , [ 0.0113636 , 0.030303 ] +i [ 0.025641 , -0.0151515 ] , [
0.0307692 , 0.105263 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
208
300 [ [ 0 , 0.0285714 ] , [ 0.0444444 , 0.015873 ] +i [ 0.0142857 , 0.02 ] , [ 0.105263
, 0.0147059 ] ]
301 [ [ 0 , 1 ] , [ 0.0289855 , 0.0833333 ] +i [ 0.0208333 , -0.0103093 ] , [ 0.0298507
, 0.0645161 ] ]
302 [ [ 0.0285714 , 0.08 ] , [ 0.0344828 , 0.0163934 ] +i [ 0.0338983 , -0.0384615 ]
, [ 0.0147059 , 0.153846 ] ]
303 [ [ 0 , 0.0153846 ] , [ 0.0196078 , 0.0327869 ] +i [ 0.0434783 , -0.0147059 ] , [
0.0363636 , 0.0113636 ] ]
304 [ [ -0.0121951 , 0.0142857 ] , [ 0.0229885 , 0.0322581 ] +i [ 0.2 , -0.0243902 ] ,
[ 0.0909091 , 0.1 ] ]
305 [ [ 0.02 , 0.027027 ] , [ 0.0333333 , 0.0392157 ] +i [ 0.0344828 , -0.166667 ] , [
0.030303 , 0.0571429 ] ]
306 [ [ 0.0181818 , 0.0128205 ] , [ 0.0163934 , 0.166667 ] +i [ 0.037037 , -0.0108696
] , [ 0.015873 , 0.025974 ] ]
307 [ [ 0.0526316 , 0.0454545 ] , [ 0.016129 , 0.0222222 ] +i [ 0.0166667 , 0.0149254
] , [ 0.0116279 , 0.05 ] ]
308 [ [ 0.0169492 , 0.020202 ] , [ 0.0215054 , 0.117647 ] +i [ 0.0120482 , 0 ] , [
0.0588235 , 0.0166667 ] ]
309 [ [ 0 , 0.0128205 ] , [ 0.142857 , 0.0104167 ] +i [ 0.0229885 , -0.25 ] , [ 0.0188679
, 0.105263 ] ]
310 [ [ 0.0294118 , 0.037037 ] , [ 0.0344828 , 0.0526316 ] +i [ 0.047619 , -0.025641
] , [ 0.0212766 , 0.0206186 ] ]
311 [ [ 0 , 0.05 ] , [ 0.0117647 , 0.0833333 ] +i [ 0.02 , 0 ] , [ 0.04 , 0.0465116 ] ]
312 [ [ 0.0169492 , 2 ] , [ 0.0338983 , 0.142857 ] +i [ 0.025641 , 0 ] , [ 0.0952381 ,
0.0149254 ] ]
313 [ [ 0 , 0.0238095 ] , [ 0.0224719 , 0.05 ] +i [ 0.0212766 , -0.010989 ] , [ 0.0131579
, 0.0285714 ] ]
314 [ [ 0 , 0.047619 ] , [ 0.0526316 , 1 ] +i [ 0.0606061 , -0.0131579 ] , [ 0.0540541
, 0.025641 ] ]
315 [ [ 0.01 , 0.028169 ] , [ 0.0540541 , 0.0243902 ] +i [ 0.028169 , 0.02 ] , [
0.0408163 , 0.025641 ] ]
316 [ [ 0 , 0.012987 ] , [ 0.0666667 , 0.0625 ] +i [ 0.0222222 , 0.0232558 ] , [
0.0294118 , 2 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
209
317 [ [ 0.0217391 , 0.0625 ] , [ 0.02 , 0.05 ] +i [ 0.02 , 0.0131579 ] , [ 0.01 , 0.03125
]]
318 [ [ 0.0135135 , 0.0434783 ] , [ 0.0140845 , 0.0119048 ] +i [ 0.111111 , 0 ] , [
0.0188679 , 0.08 ] ]
319 [ [ -0.0147059 , 0.0666667 ] , [ 0.0123457 , 0.0338983 ] +i [ 0.0169492 , 0 ] , [
0.111111 , 0.0833333 ] ]
320 [ [ 0 , 1 ] , [ 0.0153846 , 0.0131579 ] +i [ 0.0117647 , 0 ] , [ 0.0833333 , 0.285714
]]
321 [ [ 0.0909091 , 0.0769231 ] , [ 0.0208333 , 0.0212766 ] +i [ 0.0333333 , 0 ] , [
0.0138889 , 0.0175439 ] ]
322 [ [ 0.0285714 , 0.0266667 ] , [ 0.0454545 , 0.0666667 ] +i [ 0.027027 , -0.015625
] , [ 0.117647 , 0.0169492 ] ]
323 [ [ 0.0153846 , 0.08 ] , [ 2 , 0.0263158 ] +i [ 0.0526316 , 0 ] , [ 1 , 0.04 ] ]
324 [ [ 0 , 0.285714 ] , [ 0.0263158 , 0.0138889 ] +i [ 0.010989 , -0.0117647 ] , [
0.05 , 0.0125 ] ]
325 [ [ 0 , 0.0149254 ] , [ 0.0869565 , 0.0344828 ] +i [ 0.0185185 , -0.0138889 ] , [
0.0178571 , 0.0111111 ] ]
326 [ [ 0 , 0.111111 ] , [ 0.0215054 , 0.0645161 ] +i [ 0.105263 , 0.0204082 ] , [
0.0350877 , 0.021978 ] ]
327 [ [ 0 , 0.0625 ] , [ 0.0107527 , 0.0555556 ] +i [ 0.037037 , 0 ] , [ 0.0123457 ,
0.0588235 ] ]
328 [ [ -0.0138889 , 0.285714 ] , [ 0.0217391 , 0.0140845 ] +i [ 125 , -0.0104167 ] ,
[ 0.0454545 , 0.015625 ] ]
329 [ [ -0.0192308 , 0.0869565 ] , [ 0.0344828 , 0.0645161 ] +i [ 0.0333333 , -0.04 ]
, [ 0.01 , 0.037037 ] ]
330 [ [ 0.0131579 , 0.0714286 ] , [ 0.666667 , 0.0338983 ] +i [ 0.666667 , -0.0185185
] , [ 0.02 , 0.0338983 ] ]
331 [ [ -0.0227273 , 0.0113636 ] , [ 0.0238095 , 0.037037 ] +i [ 0.0645161 , 0 ] , [
0.0952381 , 0.0277778 ] ]
332 [ [ 0.0120482 , 0.0105263 ] , [ 0.0869565 , 0.027027 ] +i [ 0.021978 , 0.0625 ] ,
[ 0.0188679 , 0.0363636 ] ]
333 [ [ 0 , 0.0227273 ] , [ 0.0454545 , 0.0416667 ] +i [ 0.0117647 , -0.0111111 ] , [
0.0144928 , 0.0224719 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
210
334 [ [ -0.011236 , 0.0240964 ] , [ 0.0444444 , 0.0232558 ] +i [ 0.0408163 , 0.027027 ] , [ 0.0185185 , 0.04 ] ]
335 [ [ 0 , 0.04 ] , [ 0.0126582 , 0.0232558 ] +i [ 0.25 , -0.0121951 ] , [ 0.025641 ,
0.0196078 ] ]
336 [ [ 0 , 0.0377358 ] , [ 0.015873 , 0.0909091 ] +i [ 0.0294118 , 0 ] , [ 0.0151515 ,
0.0333333 ] ]
337 [ [ 0 , 0.0232558 ] , [ 0.0434783 , 0.5 ] +i [ 0.0322581 , 0 ] , [ 0.0238095 ,
0.0196078 ] ]
338 [ [ -0.0909091 , 0.0344828 ] , [ 0.028169 , 0.0909091 ] +i [ 0.0103093 , 0 ] , [
0.0666667 , 0.02 ] ]
339 [ [ 0.0104167 , 0.0104167 ] , [ 0.0192308 , 0.0149254 ] +i [ 0.0238095 , 0.0909091 ] , [ 0.0338983 , 0.0273973 ] ]
340 [ [ 0.0113636 , 0.0131579 ] , [ 0.021978 , 0.0384615 ] +i [ 0.0833333 , 0.0147059
] , [ 0.0240964 , 0.0238095 ] ]
341 [ [ 0 , 0.0327869 ] , [ 0.333333 , 0.166667 ] +i [ 0.0215054 , 0 ] , [ 0.0392157 ,
0.0588235 ] ]
342 [ [ -0.0120482 , 0.0487805 ] , [ 0.0204082 , 0.0357143 ] +i [ 0.25 , 0.02 ] , [
0.0217391 , 0.0327869 ] ]
343 [ [ 0.011236 , 0.0625 ] , [ 0.04 , 125 ] +i [ 0.0384615 , 0 ] , [ 0.0238095 ,
0.0142857 ] ]
344 [ [ 0.016129 , 0.166667 ] , [ 0.0147059 , 0.030303 ] +i [ 0.0243902 , 0 ] , [
0.0178571 , 0.0344828 ] ]
345 [ [ -0.0666667 , 0.2 ] , [ 0.0204082 , 0.0151515 ] +i [ 0.0454545 , 0 ] , [ 0.0263158
, 0.0238095 ] ]
346 [ [ 0.0333333 , 0.0224719 ] , [ 0.0149254 , 0.117647 ] +i [ 0.0175439 , 0.0123457
] , [ 0.0666667 , 0.0263158 ] ]
347 [ [ -0.0125 , 0.0377358 ] , [ 0.0240964 , 0.0689655 ] +i [ 0.0149254 , 0 ] , [
0.0212766 , 0.0338983 ] ]
348 [ [ -0.0294118 , 0.0952381 ] , [ 0.25 , 0.0136986 ] +i [ 0.0952381 , 0 ] , [
0.0185185 , 0.04 ] ]
349 [ [ 0.25 , 0.037037 ] , [ 0.0689655 , 0.0125 ] +i [ 0.0444444 , -0.25 ] , [ 0.04 ,
0.0588235 ] ]
350 [ [ 0.0169492 , 0.015625 ] , [ 0.016129 , 0.0151515 ] +i [ 0.01 , -0.0192308 ] , [
0.0526316 , 0.0243902 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
211
351 [ [ 0 , 0.0434783 ] , [ 0.0175439 , 0.0294118 ] +i [ 0.0327869 , 0 ] , [ 0.0454545
, 0.0571429 ] ]
352 [ [ -0.0277778 , 0.0384615 ] , [ 0.0327869 , 0.020202 ] +i [ 0.0138889 , 0 ] , [
0.0210526 , 0.0117647 ] ]
353 [ [ 0 , 0.111111 ] , [ 0.0606061 , 0.0408163 ] +i [ 0.181818 , 0.0104167 ] , [ 0.05
, 0.0408163 ] ]
354 [ [ -0.015873 , 0.0571429 ] , [ 0.0235294 , 0.0128205 ] +i [ 0.153846 , 0.0238095
] , [ 0.4 , 0.0103093 ] ]
355 [ [ 0.0172414 , 0.0210526 ] , [ 0.0740741 , 0.0253165 ] +i [ 0.0217391 , 0.0344828 ] , [ 0.333333 , 0.02 ] ]
356 [ [ 0 , 0.0294118 ] , [ 0.04 , 0.025974 ] +i [ 0.0357143 , -0.0232558 ] , [ 0.0408163
, 0.25 ] ]
357 [ [ -0.0114943 , 0.037037 ] , [ 0.0144928 , 0.0377358 ] +i [ 0.0126582 , 0 ] , [
0.0121951 , 0.0104167 ] ]
358 [ [ 0.0833333 , 0.0363636 ] , [ 0.0273973 , 0.222222 ] +i [ 0.0350877 , 0.0138889
] , [ 0.0416667 , 0.5 ] ]
359 [ [ -0.01 , 0.0555556 ] , [ 0.0107527 , 0.030303 ] +i [ 0.025974 , -0.0147059 ] , [
0.5 , 0.0147059 ] ]
360 [ [ -0.0133333 , 0.0769231 ] , [ 0.0625 , 0.0222222 ] +i [ 0.0740741 , -0.0208333
] , [ 0.01 , 0.0222222 ] ]
361 [ [ -0.0181818 , 0.0357143 ] , [ 0.0322581 , 0.0188679 ] +i [ 0.0103093 , 0.0212766 ] , [ 0.0238095 , 0.0204082 ] ]
362 [ [ 0.01 , 0.0606061 ] , [ 0.0227273 , 0.333333 ] +i [ 0.0285714 , -0.0120482 ] ,
[ 0.0111111 , 0.0526316 ] ]
363 [ [ 0 , 0.0106383 ] , [ 0.0138889 , 0.02 ] +i [ 0.010989 , 0 ] , [ 0.0128205 ,
0.166667 ] ]
364 [ [ -0.0166667 , 0.0192308 ] , [ 0.0117647 , 0.0526316 ] +i [ 125 , 0 ] , [
0.0243902 , 0.0133333 ] ]
365 [ [ 0.0138889 , 0.0212766 ] , [ 0.0196078 , 0.015625 ] +i [ 0.016129 , -0.0212766
] , [ 0.0169492 , 0.0105263 ] ]
366 [ [ 0 , 0.05 ] , [ 0.0555556 , 0.0588235 ] +i [ 0.0714286 , -0.0277778 ] , [
0.0107527 , 0.105263 ] ]
367 [ [ 0 , 0.166667 ] , [ 0.0740741 , 1 ] +i [ 0.0135135 , -0.142857 ] , [ 0.0123457 ,
0.0212766 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
212
368 [ [ 0 , 0.031746 ] , [ 0.333333 , 0.0144928 ] +i [ 0.0133333 , -0.0188679 ] , [
0.0408163 , 0.0555556 ] ]
369 [ [ 0 , 0.0140845 ] , [ 0.0217391 , 0.0217391 ] +i [ 0.0235294 , 0.0666667 ] , [
0.0116279 , 0.0125 ] ]
370 [ [ -0.333333 , 0.0224719 ] , [ 0.01 , 0.0769231 ] +i [ 0.0103093 , 0.0142857 ] ,
[ 0.03125 , 0.133333 ] ]
371 [ [ 0 , 0.0185185 ] , [ 0.166667 , 0.0238095 ] +i [ 0.0147059 , 0.015873 ] , [
0.0357143 , 0.0243902 ] ]
372 [ [ 0.0107527 , 0.0227273 ] , [ 0.030303 , 0.0526316 ] +i [ 0.0555556 , 0.0263158
] , [ 0.01 , 0.01 ] ]
373 [ [ 0 , 0.0131579 ] , [ 0.0107527 , 0.0909091 ] +i [ 0.0322581 , -0.030303 ] , [
0.0689655 , 0.0434783 ] ]
374 [ [ -0.0204082 , 0.0769231 ] , [ 0.05 , 0.0909091 ] +i [ 0.0243902 , 0.0243902 ]
, [ 0.0298507 , 0.0243902 ] ]
375 [ [ 0 , 0.5 ] , [ 0.012987 , 0.0243902 ] +i [ 0.0833333 , -0.0133333 ] , [ 0.0181818
, 0.0142857 ] ]
376 [ [ -0.0113636 , 0.0135135 ] , [ 0.03125 , 0.4 ] +i [ 0.0238095 , 0.0108696 ] , [
0.0869565 , 0.181818 ] ]
377 [ [ -0.0555556 , 0.0232558 ] , [ 0.025641 , 0.0833333 ] +i [ 0.0136986 , 0.0344828 ] , [ 0.0555556 , 0.02 ] ]
378 [ [ -0.0102041 , 0.2 ] , [ 0.012987 , 0.153846 ] +i [ 0.0108696 , 0.0106383 ] , [
0.2 , 0.047619 ] ]
379 [ [ 0 , 0.0232558 ] , [ 0.0952381 , 0.0114943 ] +i [ 0.0425532 , 0.0153846 ] , [
0.0114943 , 0.0138889 ] ]
380 [ [ -0.0135135 , 0.0121951 ] , [ 0.0212766 , 0.0344828 ] +i [ 0.0232558 , 0 ] , [
0.0392157 , 0.0606061 ] ]
381 [ [ -0.0204082 , 0.2 ] , [ 0.0113636 , 0.0104167 ] +i [ 0.0434783 , 0.0769231 ] ,
[ 0.05 , 0.0277778 ] ]
382 [ [ -0.047619 , 0.0769231 ] , [ 0.025641 , 0.0416667 ] +i [ 0.0136986 , 0 ] , [
0.0116279 , 0.0229885 ] ]
383 [ [ 0.0131579 , 0.0277778 ] , [ 0.02 , 0.117647 ] +i [ 0.010989 , -0.0147059 ] , [
0.285714 , 0.0909091 ] ]
384 [ [ -0.0120482 , 0.0120482 ] , [ 0.333333 , 0.015873 ] +i [ 0.0222222 , 0 ] , [
0.0140845 , 0.0465116 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
213
385 [ [ 0.0263158 , 0.0133333 ] , [ 0.0128205 , 0.0363636 ] +i [ 0.0666667 ,
0.0120482 ] , [ 0.0384615 , 0.0285714 ] ]
386 [ [ 0.1 , 0.0116279 ] , [ 0.015873 , 0.0333333 ] +i [ 0.0327869 , -0.0526316 ] , [
0.027027 , 0.0125 ] ]
387 [ [ -0.0111111 , 0.030303 ] , [ 0.0289855 , 0.0117647 ] +i [ 0.016129 , 0 ] , [
0.0114943 , 0.0298507 ] ]
388 [ [ 0 , 0.0144928 ] , [ 0.0117647 , 0.0555556 ] +i [ 0.0307692 , -0.0588235 ] , [
0.0666667 , 0.0298507 ] ]
389 [ [ -0.0344828 , 0.047619 ] , [ 0.0357143 , 0.0204082 ] +i [ 0.0192308 ,
0.0121951 ] , [ 0.0277778 , 0.0769231 ] ]
390 [ [ 0 , 0.0204082 ] , [ 0.0147059 , 0.0363636 ] +i [ 0.0128205 , -0.010989 ] , [
0.0204082 , 0.0350877 ] ]
391 [ [ -0.0111111 , 0.0294118 ] , [ 0.047619 , 0.0163934 ] +i [ 0.0208333 , 0 ] , [
0.0240964 , 0.285714 ] ]
392 [ [ -0.02 , 0.0416667 ] , [ 0.166667 , 0.0243902 ] +i [ 0.0107527 , 0 ] , [ 0.0140845
, 0.05 ] ]
393 [ [ 0 , 0.222222 ] , [ 0.0126582 , 0.025641 ] +i [ 0.0416667 , 0.166667 ] , [
0.166667 , 0.0106383 ] ]
394 [ [ -0.0277778 , 0.0540541 ] , [ 0.153846 , 0.0133333 ] +i [ 0.0588235 ,
0.0243902 ] , [ 0.5 , 0.0238095 ] ]
395 [ [ 0 , 0.0333333 ] , [ 0.0243902 , 0.0289855 ] +i [ 0.0240964 , -0.0204082 ] , [
0.0149254 , 0.021978 ] ]
396 [ [ 0.011236 , 0.25 ] , [ 0.01 , 0.0322581 ] +i [ 0.0131579 , -0.25 ] , [ 25 ,
0.0210526 ] ]
397 [ [ -0.02 , 0.142857 ] , [ 0.0377358 , 0.028169 ] +i [ 0.0126582 , -0.0149254 ] , [
0.4 , 0.0588235 ] ]
398 [ [ 0.0277778 , 0.0263158 ] , [ 0.0149254 , 0.0666667 ] +i [ 0.0178571 , 0 ] , [
0.0212766 , 0.0240964 ] ]
399 [ [ 0 , 0.0238095 ] , [ 0.0769231 , 0.0133333 ] +i [ 0.08 , 0 ] , [ 0.015625 , 0.04 ]
]
400 [ [ -0.0714286 , 0.0142857 ] , [ 0.0131579 , 0.05 ] +i [ 0.0103093 , 0 ] , [
0.0138889 , 0.0144928 ] ]
401 [ [ 0 , 0.0333333 ] , [ 0.25 , 0.285714 ] +i [ 0.0217391 , 0 ] , [ 0.0206186 ,
0.0238095 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
214
402 [ [ -0.0102041 , 0.0217391 ] , [ 0.0588235 , 0.04 ] +i [ 125 , 0.0526316 ] , [
0.0227273 , 0.0224719 ] ]
403 [ [ -0.05 , 0.0714286 ] , [ 0.0169492 , 0.0540541 ] +i [ 0.0263158 , 0 ] , [ 0.012987
, 0.01 ] ]
404 [ [ 0 , 0.0540541 ] , [ 0.0119048 , 0.0606061 ] +i [ 0.0224719 , 0 ] , [ 0.166667 ,
0.028169 ] ]
405 [ [ 0.333333 , 0.0363636 ] , [ 0.25 , 0.0105263 ] +i [ 0.031746 , -0.0151515 ] , [
0.0181818 , 2 ] ]
406 [ [ -0.010101 , 0.0192308 ] , [ 0.02 , 0.5 ] +i [ 0.0232558 , -0.0123457 ] , [
0.117647 , 0.021978 ] ]
407 [ [ -0.0163934 , 0.0357143 ] , [ 0.0136986 , 0.0111111 ] +i [ 0.0169492 , 0.0188679 ] , [ 0.0333333 , 0.0487805 ] ]
408 [ [ 0 , 0.0175439 ] , [ 0.0384615 , 0.0108696 ] +i [ 0.0571429 , -0.03125 ] , [
0.0434783 , 0.0125 ] ]
409 [ [ 0.0151515 , 0.0357143 ] , [ 0.0133333 , 0.0163934 ] +i [ 0.01 , -0.0232558 ]
, [ 0.0357143 , 0.0212766 ] ]
410 [ [ 0 , 0.011236 ] , [ 0.0204082 , 0.0377358 ] +i [ 0.0263158 , -0.0196078 ] , [
0.0253165 , 0.0178571 ] ]
411 [ [ 0 , 0.0243902 ] , [ 0.142857 , 0.0111111 ] +i [ 0.0909091 , 0.011236 ] , [
0.015625 , 0.047619 ] ]
412 [ [ 0.0120482 , 0.0384615 ] , [ 0.04 , 0.0526316 ] +i [ 0.333333 , -0.047619 ] , [
0.0166667 , 0.011236 ] ]
413 [ [ 0 , 0.0588235 ] , [ 0.0740741 , 0.0229885 ] +i [ 0.666667 , -0.0263158 ] , [
0.5 , 1 ] ]
414 [ [ -0.010989 , 0.0169492 ] , [ 0.0235294 , 0.0909091 ] +i [ 0.285714 , 0 ] , [
0.0113636 , 0.0277778 ] ]
415 [ [ 0.0263158 , 0.0192308 ] , [ 125 , 0.2 ] +i [ 0.0232558 , 0.0294118 ] , [
0.0153846 , 0.4 ] ]
416 [ [ -0.012987 , 0.011236 ] , [ 0.0333333 , 0.0204082 ] +i [ 0.0487805 , 0 ] , [ 1 ,
0.0227273 ] ]
417 [ [ 0.0188679 , 0.0384615 ] , [ 0.133333 , 0.01 ] +i [ 0.0588235 , 0 ] , [ 0.0571429
, 0.02 ] ]
418 [ [ -0.0217391 , 0.0151515 ] , [ 0.166667 , 0.0555556 ] +i [ 0.0833333 , 0.015625 ] , [ 0.0909091 , 0.142857 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
215
419 [ [ -0.0333333 , 0.333333 ] , [ 0.0769231 , 0.0166667 ] +i [ 0.037037 , 125 ] , [
0.142857 , 0.0454545 ] ]
420 [ [ -0.0263158 , 0.0222222 ] , [ 0.0126582 , 0.0338983 ] +i [ 0.0117647 ,
0.025641 ] , [ 0.0238095 , 0.025641 ] ]
421 [ [ -0.02 , 0.4 ] , [ 0.0212766 , 0.153846 ] +i [ 0.2 , 0.0217391 ] , [ 0.0769231 ,
0.0444444 ] ]
422 [ [ -0.0277778 , 0.0322581 ] , [ 0.0425532 , 0.0606061 ] +i [ 0.0119048 , 0 ] , [
0.05 , 0.0246914 ] ]
423 [ [ -0.01 , 0.03125 ] , [ 0.0222222 , 0.0454545 ] +i [ 0.333333 , 0 ] , [ 0.0714286
, 0.0571429 ] ]
424 [ [ -0.0104167 , 0.0526316 ] , [ 0.03125 , 0.0357143 ] +i [ 0.0384615 , 0.0192308 ] , [ 0.021978 , 0.0377358 ] ]
425 [ [ 0.0136986 , 0.5 ] , [ 0.0126582 , 0.0227273 ] +i [ 0.0125 , 1 ] , [ 0.0625 , 0.1
]]
426 [ [ 0 , 0.0217391 ] , [ 0.0253165 , 0.0227273 ] +i [ 0.016129 , -0.0454545 ] , [
0.0526316 , 0.020202 ] ]
427 [ [ 0.0144928 , 0.04 ] , [ 0.0196078 , 0.0425532 ] +i [ 0.0232558 , 0 ] , [
0.0357143 , 0.0333333 ] ]
428 [ [ -1 , 0.0307692 ] , [ 0.0588235 , 0.0384615 ] +i [ 0.0243902 , -0.0384615 ] , [
0.08 , 0.0212766 ] ]
429 [ [ 0 , 0.0188679 ] , [ 0.05 , 0.028169 ] +i [ 0.0147059 , 0 ] , [ 0.0266667 ,
0.0227273 ] ]
430 [ [ 0 , 0.666667 ] , [ 0.047619 , 0.4 ] +i [ 0.027027 , -0.0294118 ] , [ 0.0188679 ,
0.166667 ] ]
431 [ [ -0.142857 , 0.0102041 ] , [ 0.142857 , 0.0138889 ] +i [ 0.0114943 , 0.015873
] , [ 0.021978 , 0.0117647 ] ]
432 [ [ 0 , 0.25 ] , [ 25 , 0.020202 ] +i [ 0.0294118 , -0.0217391 ] , [ 0.5 , 0.0645161
]]
433 [ [ 0.0114943 , 0.0204082 ] , [ 0.08 , 0.0215054 ] +i [ 0.0526316 , 1 ] , [
0.0444444 , 0.0625 ] ]
434 [ [ 0.0151515 , 0.0138889 ] , [ 0.0869565 , 0.0322581 ] +i [ 0.0217391 , 0.0188679 ] , [ 0.0192308 , 0.0833333 ] ]
435 [ [ -0.01 , 0.037037 ] , [ 0.0769231 , 0.0240964 ] +i [ 0.012987 , -0.0172414 ] , [
0.0111111 , 0.0107527 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
216
436 [ [ 0.0294118 , 0.047619 ] , [ 0.0217391 , 0.0333333 ] +i [ 0.0144928 , 0.0238095 ] , [ 0.031746 , 0.0285714 ] ]
437 [ [ 0.0117647 , 0.0151515 ] , [ 0.0588235 , 0.0666667 ] +i [ 0.0714286 ,
0.0181818 ] , [ 0.0344828 , 0.1 ] ]
438 [ [ 0.0153846 , 0.0204082 ] , [ 0.010989 , 0.0285714 ] +i [ 0.0222222 , -0.01 ] ,
[ 0.0454545 , 0.0357143 ] ]
439 [ [ 0 , 0.0227273 ] , [ 0.0123457 , 0.0232558 ] +i [ 0.0307692 , 0.0285714 ] , [
0.025974 , 125 ] ]
440 [ [ -0.0238095 , 0.0714286 ] , [ 0.0206186 , 0.0333333 ] +i [ 0.04 , 0.01 ] , [
0.037037 , 1 ] ]
441 [ [ -0.047619 , 0.0206186 ] , [ 0.05 , 0.0126582 ] +i [ 0.025641 , -0.0238095 ] , [
0.25 , 0.285714 ] ]
442 [ [ -0.0116279 , 0.05 ] , [ 0.010101 , 0.027027 ] +i [ 0.0512821 , -0.0625 ] , [
0.666667 , 0.0238095 ] ]
443 [ [ -0.0204082 , 0.0120482 ] , [ 0.0625 , 0.0277778 ] +i [ 0.021978 , 0.0769231
] , [ 0.0350877 , 0.666667 ] ]
444 [ [ 0 , 0.105263 ] , [ 0.0512821 , 0.04 ] +i [ 0.028169 , -0.0119048 ] , [ 0.0434783
, 0.0689655 ] ]
445 [ [ 0.0140845 , 0.0416667 ] , [ 0.0714286 , 0.0114943 ] +i [ 0.0235294 , -0.1 ] ,
[ 0.0285714 , 2 ] ]
446 [ [ 1 , 0.0555556 ] , [ 0.0119048 , 0.0714286 ] +i [ 0.02 , -0.016129 ] , [ 0.010989
, 0.0555556 ] ]
447 [ [ -0.0357143 , 25 ] , [ 0.02 , 0.5 ] +i [ 125 , -0.0104167 ] , [ 0.05 , 0.0117647 ] ]
448 [ [ 0 , 0.0263158 ] , [ 0.0142857 , 0.2 ] +i [ 0.010989 , -0.0227273 ] , [ 0.0172414
, 0.0344828 ] ]
449 [ [ 0 , 0.0123457 ] , [ 0.0125 , 0.0243902 ] +i [ 125 , 0.05 ] , [ 0.025641 ,
0.0384615 ] ]
450 [ [ 0.5 , 0.0526316 ] , [ 0.0307692 , 0.1 ] +i [ 0.25 , 0 ] , [ 0.0392157 , 0.0238095
]]
451 [ [ -0.1 , 0.0243902 ] , [ 0.0625 , 0.0140845 ] +i [ 0.0181818 , -0.0277778 ] , [
0.5 , 0.0217391 ] ]
452 [ [ 0 , 0.0322581 ] , [ 0.030303 , 0.0277778 ] +i [ 0.0555556 , -0.0217391 ] , [
0.0454545 , 0.105263 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
217
453 [ [ 0 , 0.0277778 ] , [ 0.025641 , 0.0263158 ] +i [ 0.166667 , -0.0196078 ] , [
0.0232558 , 0.0181818 ] ]
454 [ [ 0 , 0.0294118 ] , [ 0.2 , 0.181818 ] +i [ 0.0273973 , 0.0188679 ] , [ 0.0266667
, 0.025641 ] ]
455 [ [ -0.015873 , 0.0357143 ] , [ 0.0357143 , 0.133333 ] +i [ 0.0119048 , 0.0263158
] , [ 0.030303 , 0.02 ] ]
456 [ [ -0.0120482 , 0.0224719 ] , [ 0.04 , 0.0285714 ] +i [ 0.0588235 , -0.25 ] , [
0.0384615 , 0.0434783 ] ]
457 [ [ -0.05 , 0.0512821 ] , [ 0.0625 , 0.0151515 ] +i [ 0.037037 , 0 ] , [ 0.015625 ,
0.0253165 ] ]
458 [ [ 0 , 0.03125 ] , [ 25 , 25 ] +i [ 0.0188679 , -0.0322581 ] , [ 0.0133333 ,
0.0243902 ] ]
459 [ [ 0 , 0.02 ] , [ 0.0144928 , 0.0232558 ] +i [ 0.0571429 , 0.0178571 ] , [
0.0444444 , 0.0222222 ] ]
460 [ [ 0.0294118 , 0.0117647 ] , [ 0.1 , 0.030303 ] +i [ 0.0487805 , 0 ] , [ 0.0140845
, 0.0204082 ] ]
461 [ [ 0 , 0.02 ] , [ 0.0392157 , 0.0322581 ] +i [ 0.0103093 , -0.2 ] , [ 0.03125 ,
0.333333 ] ]
462 [ [ 0 , 0.117647 ] , [ 0.0344828 , 0.0229885 ] +i [ 0.0298507 , 0 ] , [ 0.0227273 ,
0.0273973 ] ]
463 [ [ 0 , 0.0238095 ] , [ 0.037037 , 0.0416667 ] +i [ 0.0689655 , -0.0108696 ] , [
0.0204082 , 0.01 ] ]
464 [ [ 0 , 0.0298507 ] , [ 0.0416667 , 0.0714286 ] +i [ 0.0869565 , 0 ] , [ 0.0133333
, 0.011236 ] ]
465 [ [ 0 , 0.047619 ] , [ 0.0111111 , 0.010101 ] +i [ 0.0102041 , 0.0149254 ] , [
0.0163934 , 0.0108696 ] ]
466 [ [ 0 , 0.037037 ] , [ 125 , 0.0212766 ] +i [ 0.0833333 , 0 ] , [ 0.04 , 0.105263 ] ]
467 [ [ 0 , 0.0208333 ] , [ 0.0322581 , 0.02 ] +i [ 2 , 0 ] , [ 0.0210526 , 0.0322581 ] ]
468 [ [ 0 , 0.016129 ] , [ 0.0384615 , 0.181818 ] +i [ 0.0128205 , 0.012987 ] , [ 25 ,
0.0869565 ] ]
469 [ [ 0.0102041 , 0.222222 ] , [ 0.047619 , 0.0121951 ] +i [ 0.0350877 , 0 ] , [ 0.04
, 0.0217391 ] ]
470 [ [ -0.0217391 , 0.0392157 ] , [ 0.02 , 0.0384615 ] +i [ 0.0243902 , 0.010101 ] ,
[ 0.0434783 , 0.0263158 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
218
471 [ [ -0.0217391 , 0.0625 ] , [ 0.01 , 0.020202 ] +i [ 0.0133333 , 0.0113636 ] , [
0.0333333 , 0.015873 ] ]
472 [ [ -0.0144928 , 0.04 ] , [ 0.0206186 , 0.0232558 ] +i [ 0.0416667 , 0.0103093 ]
, [ 0.0555556 , 0.0833333 ] ]
473 [ [ -0.0192308 , 0.0384615 ] , [ 0.2 , 0.0444444 ] +i [ 0.0454545 , 0.0163934 ] ,
[ 0.0833333 , 0.0434783 ] ]
474 [ [ -0.2 , 0.0714286 ] , [ 0.0123457 , 0.333333 ] +i [ 0.0120482 , 0 ] , [ 0.133333
, 0.0769231 ] ]
475 [ [ -0.04 , 0.0153846 ] , [ 0.047619 , 0.0740741 ] +i [ 0.0114943 , 0.0277778 ] ,
[ 0.0588235 , 0.0384615 ] ]
476 [ [ 0.25 , 0.0714286 ] , [ 0.0952381 , 0.333333 ] +i [ 0.0714286 , -0.0263158 ] ,
[ 0.0909091 , 0.0119048 ] ]
477 [ [ 0.0204082 , 0.0571429 ] , [ 0.0833333 , 0.0333333 ] +i [ 0.037037 , 0.0322581 ] , [ 0.222222 , 0.0322581 ] ]
478 [ [ -0.0116279 , 0.2 ] , [ 0.0266667 , 0.047619 ] +i [ 0.0232558 , 0 ] , [ 0.0163934
, 0.0408163 ] ]
479 [ [ 0.0212766 , 0.03125 ] , [ 0.0227273 , 0.028169 ] +i [ 0.0769231 , 0.0117647
] , [ 0.666667 , 0.0357143 ] ]
480 [ [ -0.0909091 , 0.027027 ] , [ 0.0172414 , 0.1 ] +i [ 0.027027 , -0.0625 ] , [
0.0289855 , 0.0119048 ] ]
481 [ [ -0.0120482 , 0.016129 ] , [ 0.0147059 , 0.5 ] +i [ 0.0149254 , 0.025641 ] , [
0.037037 , 0.0212766 ] ]
482 [ [ -0.0217391 , 0.0289855 ] , [ 0.0454545 , 0.0135135 ] +i [ 0.020202 , 0 ] , [
0.0338983 , 0.05 ] ]
483 [ [ -0.0322581 , 0.0126582 ] , [ 0.0909091 , 0.117647 ] +i [ 0.031746 , 0.0113636
] , [ 0.222222 , 0.025641 ] ]
484 [ [ -0.0149254 , 0.0232558 ] , [ 0.0238095 , 0.0204082 ] +i [ 0.0212766 , 0.01 ]
, [ 0.031746 , 0.142857 ] ]
485 [ [ 0.01 , 0.133333 ] , [ 0.0769231 , 125 ] +i [ 0.0434783 , 0.0357143 ] , [
0.0107527 , 0.047619 ] ]
486 [ [ -0.0169492 , 0.0212766 ] , [ 0.0111111 , 0.0224719 ] +i [ 0.133333 , 0 ] , [
0.0289855 , 0.0425532 ] ]
487 [ [ 0 , 0.0454545 ] , [ 125 , 0.028169 ] +i [ 0.04 , 0 ] , [ 0.05 , 0.0188679 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
219
488 [ [ -0.1 , 0.0133333 ] , [ 0.0175439 , 0.0128205 ] +i [ 0.0136986 , 0.027027 ] , [
0.222222 , 0.0206186 ] ]
489 [ [ 0 , 0.05 ] , [ 0.0144928 , 0.0133333 ] +i [ 0.5 , -0.016129 ] , [ 0.0357143 ,
0.0298507 ] ]
490 [ [ 0.0120482 , 0.0416667 ] , [ 0.0103093 , 0.03125 ] +i [ 0.0487805 , 0 ] , [
0.0277778 , 0.0606061 ] ]
491 [ [ -0.0769231 , 0.027027 ] , [ 0.0105263 , 0.05 ] +i [ 0.037037 , 0 ] , [ 0.0294118
, 0.0120482 ] ]
492 [ [ 0.0196078 , 0.0135135 ] , [ 0.0338983 , 0.333333 ] +i [ 0.025641 , -0.0169492
] , [ 0.166667 , 0.0121951 ] ]
493 [ [ 0 , 0.0526316 ] , [ 0.0128205 , 0.0243902 ] +i [ 0.030303 , 0.0188679 ] , [
0.0714286 , 0.0138889 ] ]
494 [ [ -0.04 , 0.0232558 ] , [ 0.0204082 , 0.0215054 ] +i [ 0.027027 , 0 ] , [ 0.0555556
, 0.0666667 ] ]
495 [ [ -0.0147059 , 0.333333 ] , [ 0.0243902 , 0.0289855 ] +i [ 0.0666667 , -0.5 ] , [
0.0588235 , 0.0210526 ] ]
496 [ [ 0 , 0.0769231 ] , [ 0.0123457 , 0.111111 ] +i [ 0.04 , -0.02 ] , [ 0.0229885 ,
0.0266667 ] ]
497 [ [ -0.012987 , 0.0140845 ] , [ 0.031746 , 0.0217391 ] +i [ 0.0344828 , 0 ] , [
0.0769231 , 0.0103093 ] ]
498 [ [ -0.0128205 , 0.0338983 ] , [ 0.0344828 , 0.0434783 ] +i [ 0.0232558 ,
0.025641 ] , [ 0.0163934 , 0.027027 ] ]
499 [ [ 0.030303 , 0.0909091 ] , [ 0.0204082 , 0.0144928 ] +i [ 0.0117647 , -0.047619
] , [ 0.0217391 , 0.0512821 ] ]
500 [ [ 0 , 0.0210526 ] , [ 0.666667 , 0.0833333 ] +i [ 0.133333 , 0 ] , [ 0.0285714 ,
0.0285714 ] ]
501 [ [ 0.025641 , 0.0625 ] , [ 0.03125 , 0.0555556 ] +i [ 0.0555556 , -0.01 ] , [
0.0384615 , 0.0227273 ] ]
502 [ [ -0.0833333 , 0.0217391 ] , [ 0.222222 , 0.105263 ] +i [ 0.0384615 , 0.0128205 ] , [ 0.0833333 , 0.0377358 ] ]
503 [ [ 0 , 0.0227273 ] , [ 0.03125 , 0.0714286 ] +i [ 0.0224719 , -0.0128205 ] , [
0.0666667 , 0.0212766 ] ]
504 [ [ 0 , 0.0163934 ] , [ 0.0188679 , 0.333333 ] +i [ 0.0322581 , 0.047619 ] , [
0.0246914 , 0.047619 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
220
505 [ [ 0.0169492 , 0.0240964 ] , [ 0.4 , 0.0185185 ] +i [ 0.0123457 , 0 ] , [ 0.166667
, 0.142857 ] ]
506 [ [ -0.011236 , 0.0666667 ] , [ 0.333333 , 0.04 ] +i [ 0.142857 , -0.0909091 ] , [
125 , 0.0277778 ] ]
507 [ [ 0 , 0.0434783 ] , [ 0.25 , 0.0666667 ] +i [ 0.0149254 , -0.0357143 ] , [
0.0384615 , 2 ] ]
508 [ [ -0.0117647 , 0.0192308 ] , [ 125 , 0.0322581 ] +i [ 0.25 , -0.0208333 ] , [
0.0377358 , 0.0357143 ] ]
509 [ [ 0 , 0.0126582 ] , [ 0.0338983 , 0.0243902 ] +i [ 0.0212766 , 0 ] , [ 0.0869565
, 0.0107527 ] ]
510 [ [ 0.0125 , 0.0212766 ] , [ 0.0338983 , 0.0606061 ] +i [ 0.015625 , 0 ] , [ 0.03125
, 0.047619 ] ]
511 [ [ 0.0107527 , 0.0714286 ] , [ 25 , 0.0425532 ] +i [ 25 , 0.025641 ] , [ 0.0243902
, 0.020202 ] ]
512 [ [ -0.0123457 , 0.0588235 ] , [ 0.0210526 , 0.025641 ] +i [ 0.0224719 , 0.0131579 ] , [ 0.0138889 , 0.0909091 ] ]
513 [ [ 0 , 0.0208333 ] , [ 0.0235294 , 0.0344828 ] +i [ 0.0105263 , -0.030303 ] , [
0.0298507 , 0.0169492 ] ]
514 [ [ 0 , 0.0163934 ] , [ 0.0119048 , 0.0135135 ] +i [ 0.0298507 , -0.142857 ] , [
0.0425532 , 0.0133333 ] ]
515 [ [ -0.010989 , 0.0117647 ] , [ 0.0333333 , 0.0294118 ] +i [ 0.0126582 , 0.0322581 ] , [ 0.0454545 , 0.0217391 ] ]
516 [ [ 0.0178571 , 0.0196078 ] , [ 0.0769231 , 0.031746 ] +i [ 0.0240964 , 0 ] , [
0.0243902 , 1 ] ]
517 [ [ -0.016129 , 0.1 ] , [ 0.0229885 , 0.285714 ] +i [ 0.0952381 , -0.0227273 ] , [
0.285714 , 0.0465116 ] ]
518 [ [ 0.0188679 , 0.0465116 ] , [ 0.0188679 , 0.0294118 ] +i [ 0.0243902 , 0 ] , [
0.0357143 , 0.0357143 ] ]
519 [ [ 0.0212766 , 0.0714286 ] , [ 0.0416667 , 0.0714286 ] +i [ 0.25 , 0 ] , [ 0.030303
, 0.0263158 ] ]
520 [ [ 0.111111 , 0.0294118 ] , [ 0.0689655 , 0.0235294 ] +i [ 0.25 , -0.0222222 ] ,
[ 0.012987 , 0.0133333 ] ]
521 [ [ 0.037037 , 0.0444444 ] , [ 0.0344828 , 0.153846 ] +i [ 0.2 , 0 ] , [ 0.0217391
, 0.142857 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
221
522 [ [ 0.0285714 , 0.020202 ] , [ 0.105263 , 0.05 ] +i [ 0.0217391 , 0.04 ] , [
0.0147059 , 0.0392157 ] ]
523 [ [ 0.0204082 , 0.222222 ] , [ 0.0163934 , 0.0120482 ] +i [ 0.0229885 , 0.0104167 ] , [ 0.0434783 , 0.0555556 ] ]
524 [ [ 0.05 , 0.0212766 ] , [ 0.0204082 , 0.142857 ] +i [ 0.0526316 , 0 ] , [ 0.0769231
, 0.030303 ] ]
525 [ [ 0 , 0.025641 ] , [ 0.0540541 , 0.0769231 ] +i [ 0.285714 , -0.0151515 ] , [
0.0238095 , 0.0185185 ] ]
526 [ [ 0.037037 , 0.0119048 ] , [ 0.0416667 , 0.0833333 ] +i [ 0.0121951 , 0 ] , [
0.0222222 , 0.04 ] ]
527 [ [ 0 , 0.0769231 ] , [ 0.0327869 , 0.0285714 ] +i [ 0.0246914 , 0.0416667 ] , [
0.0208333 , 0.666667 ] ]
528 [ [ -0.04 , 0.0833333 ] , [ 0.0222222 , 0.0222222 ] +i [ 0.0131579 , 0.0111111 ]
, [ 0.166667 , 0.0175439 ] ]
529 [ [ -0.015625 , 0.0294118 ] , [ 0.0126582 , 0.027027 ] +i [ 0.0227273 , 0 ] , [
0.0606061 , 0.025974 ] ]
530 [ [ -0.011236 , 0.0588235 ] , [ 0.0666667 , 0.0232558 ] +i [ 0.0196078 , 0.0108696 ] , [ 0.0106383 , 0.0224719 ] ]
531 [ [ 0 , 0.0307692 ] , [ 0.0298507 , 0.0133333 ] +i [ 0.0215054 , 0.0204082 ] , [
0.0769231 , 0.0107527 ] ]
532 [ [ 0.25 , 0.0392157 ] , [ 0.0206186 , 0.0206186 ] +i [ 0.0126582 , -0.111111 ] ,
[ 0.0114943 , 0.0526316 ] ]
533 [ [ 0.0227273 , 0.0363636 ] , [ 0.0105263 , 0.4 ] +i [ 0.0232558 , -0.04 ] , [
0.0142857 , 0.0243902 ] ]
534 [ [ 0 , 0.166667 ] , [ 1 , 0.030303 ] +i [ 0.0175439 , -0.027027 ] , [ 0.181818 ,
0.111111 ] ]
535 [ [ 0.0135135 , 0.0217391 ] , [ 0.05 , 0.0277778 ] +i [ 0.285714 , 0 ] , [ 0.0135135
, 0.0285714 ] ]
536 [ [ 0 , 0.0869565 ] , [ 0.0153846 , 0.0204082 ] +i [ 0.111111 , -0.0136986 ] , [
0.111111 , 0.010989 ] ]
537 [ [ 0 , 0.0147059 ] , [ 0.333333 , 0.0833333 ] +i [ 0.0119048 , 0.0185185 ] , [
0.05 , 0.0740741 ] ]
538 [ [ -0.030303 , 0.0140845 ] , [ 0.181818 , 0.333333 ] +i [ 0.1 , 0 ] , [ 0.0277778 ,
0.0232558 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
222
539 [ [ 0.011236 , 0.0172414 ] , [ 0.0151515 , 0.0263158 ] +i [ 0.0645161 , 0 ] , [
0.333333 , 0.0196078 ] ]
540 [ [ 0.0294118 , 0.0107527 ] , [ 0.0106383 , 0.02 ] +i [ 0.030303 , 0 ] , [ 0.0135135
, 0.0227273 ] ]
541 [ [ 0.0285714 , 0.0434783 ] , [ 0.0185185 , 0.1 ] +i [ 0.0104167 , -0.0208333 ] ,
[ 0.111111 , 0.1 ] ]
542 [ [ 0.0714286 , 0.0204082 ] , [ 0.0151515 , 0.031746 ] +i [ 0.0144928 , -0.05 ] ,
[ 0.0142857 , 0.0240964 ] ]
543 [ [ 0 , 0.0208333 ] , [ 0.285714 , 0.03125 ] +i [ 0.04 , 0.047619 ] , [ 0.0175439 ,
0.0588235 ] ]
544 [ [ -0.01 , 0.025641 ] , [ 0.0253165 , 0.0102041 ] +i [ 0.0285714 , 0 ] , [ 0.02 ,
0.0140845 ] ]
545 [ [ -0.0555556 , 0.0204082 ] , [ 0.0106383 , 0.0169492 ] +i [ 0.0172414 , 0.0138889 ] , [ 0.0338983 , 0.0120482 ] ]
546 [ [ 0 , 0.0227273 ] , [ 0.117647 , 0.0126582 ] +i [ 0.142857 , -0.04 ] , [ 125 ,
0.0135135 ] ]
547 [ [ 0 , 0.0416667 ] , [ 0.0769231 , 0.0229885 ] +i [ 0.028169 , -0.0149254 ] , [
0.0232558 , 0.0289855 ] ]
548 [ [ 0 , 0.0434783 ] , [ 0.0104167 , 0.0833333 ] +i [ 0.0625 , 0 ] , [ 0.0909091 ,
0.0263158 ] ]
549 [ [ 0 , 0.0235294 ] , [ 0.030303 , 0.285714 ] +i [ 0.030303 , -1 ] , [ 0.0235294 ,
0.0222222 ] ]
550 [ [ 0.0212766 , 0.0769231 ] , [ 0.0625 , 0.0128205 ] +i [ 0.02 , -0.142857 ] , [ 1 ,
0.0555556 ] ]
551 [ [ -0.0144928 , 0.25 ] , [ 0.0238095 , 0.0625 ] +i [ 0.025641 , -0.0105263 ] , [
0.0123457 , 0.0357143 ] ]
552 [ [ 0 , 0.0327869 ] , [ 0.027027 , 0.0416667 ] +i [ 0.0222222 , 0 ] , [ 0.0833333 ,
0.0227273 ] ]
553 [ [ 0.0555556 , 0.0714286 ] , [ 0.0322581 , 0.0666667 ] +i [ 0.01 , -0.010101 ] ,
[ 0.25 , 0.010101 ] ]
554 [ [ 0.0322581 , 0.0740741 ] , [ 0.0147059 , 0.0555556 ] +i [ 125 , 0 ] , [ 0.0138889
, 0.333333 ] ]
555 [ [ -0.0555556 , 0.0298507 ] , [ 0.0588235 , 0.166667 ] +i [ 0.0126582 , 0.010989
] , [ 0.166667 , 0.0487805 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
223
556 [ [ 0 , 0.0212766 ] , [ 0.010989 , 0.0144928 ] +i [ 0.0740741 , 0.0114943 ] , [
0.181818 , 0.02 ] ]
557 [ [ -0.0131579 , 0.012987 ] , [ 0.010989 , 0.0333333 ] +i [ 0.0357143 , 0 ] , [
0.025641 , 0.0235294 ] ]
558 [ [ 0 , 0.0526316 ] , [ 0.0833333 , 0.0434783 ] +i [ 0.5 , 0 ] , [ 0.0114943 ,
0.0571429 ] ]
559 [ [ 125 , 0.0588235 ] , [ 0.0327869 , 0.0769231 ] +i [ 0.037037 , 0.0384615 ] , [
0.021978 , 0.0111111 ] ]
560 [ [ 0 , 0.037037 ] , [ 0.0243902 , 0.0714286 ] +i [ 0.2 , 0 ] , [ 0.030303 , 0.030303
]]
561 [ [ 0.333333 , 1 ] , [ 0.0277778 , 0.0833333 ] +i [ 0.0126582 , 0 ] , [ 0.0224719 ,
0.0289855 ] ]
562 [ [ -0.2 , 0.0232558 ] , [ 0.1 , 0.0212766 ] +i [ 0.142857 , 0.0103093 ] , [
0.0111111 , 0.0210526 ] ]
563 [ [ 0.0107527 , 0.021978 ] , [ 0.0416667 , 0.030303 ] +i [ 0.04 , 0 ] , [ 0.0384615
, 0.0185185 ] ]
564 [ [ 0.027027 , 0.03125 ] , [ 0.0285714 , 0.5 ] +i [ 0.0138889 , 0.025641 ] , [
0.0350877 , 0.0151515 ] ]
565 [ [ 0 , 0.0384615 ] , [ 0.0246914 , 0.111111 ] +i [ 0.01 , 0 ] , [ 0.0147059 ,
0.0689655 ] ]
566 [ [ -0.0108696 , 0.0166667 ] , [ 0.0166667 , 0.0322581 ] +i [ 0.0322581 , 0 ] , [
0.0487805 , 0.0512821 ] ]
567 [ [ 0 , 0.05 ] , [ 0.0714286 , 0.0344828 ] +i [ 0.0103093 , 0.2 ] , [ 0.0289855 ,
0.0206186 ] ]
568 [ [ 0.0188679 , 0.027027 ] , [ 0.5 , 0.25 ] +i [ 0.0104167 , 0 ] , [ 0.0555556 ,
0.0327869 ] ]
569 [ [ 0 , 0.153846 ] , [ 0.0133333 , 0.04 ] +i [ 0.0322581 , 0 ] , [ 0.0104167 ,
0.0238095 ] ]
570 [ [ 25 , 0.0212766 ] , [ 0.0103093 , 0.0135135 ] +i [ 0.0322581 , 0 ] , [ 0.117647
,1]]
571 [ [ -0.0128205 , 0.01 ] , [ 0.0126582 , 0.0149254 ] +i [ 0.0909091 , -0.0232558 ]
, [ 0.0208333 , 0.0147059 ] ]
572 [ [ 0.0526316 , 0.0408163 ] , [ 0.0119048 , 0.0222222 ] +i [ 0.0243902 ,
0.0131579 ] , [ 0.028169 , 0.0416667 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
224
573 [ [ -0.0131579 , 0.0144928 ] , [ 0.0327869 , 0.0769231 ] +i [ 1 , 0.0769231 ] , [
0.0285714 , 0.025641 ] ]
574 [ [ 0 , 0.133333 ] , [ 0.0153846 , 2 ] +i [ 0.020202 , 0.0120482 ] , [ 0.0131579 ,
0.028169 ] ]
575 [ [ -1 , 0.0294118 ] , [ 0.028169 , 0.05 ] +i [ 0.0178571 , 0 ] , [ 0.0357143 ,
0.0151515 ] ]
576 [ [ 0 , 0.333333 ] , [ 0.0909091 , 0.0689655 ] +i [ 0.0714286 , -0.047619 ] , [
0.0120482 , 0.0606061 ] ]
577 [ [ -0.0144928 , 0.037037 ] , [ 0.0210526 , 0.0714286 ] +i [ 0.011236 , 0.0181818
] , [ 0.333333 , 0.0298507 ] ]
578 [ [ 0 , 0.0357143 ] , [ 0.0116279 , 0.0229885 ] +i [ 0.0555556 , 0.0238095 ] , [
0.03125 , 0.0204082 ] ]
579 [ [ 0 , 0.0333333 ] , [ 0.0120482 , 0.111111 ] +i [ 0.333333 , -0.0105263 ] , [
0.0277778 , 0.142857 ] ]
580 [ [ -0.0769231 , 0.5 ] , [ 0.0384615 , 0.0689655 ] +i [ 0.0166667 , 0 ] , [ 0.0140845
, 0.04 ] ]
581 [ [ 0 , 0.0131579 ] , [ 0.0117647 , 0.142857 ] +i [ 0.0338983 , -0.0102041 ] , [
0.0105263 , 0.0166667 ] ]
582 [ [ -25 , 0.166667 ] , [ 0.0104167 , 0.0113636 ] +i [ 0.0227273 , -0.0238095 ] , [
0.05 , 0.0224719 ] ]
583 [ [ -0.0232558 , 0.0235294 ] , [ 0.0416667 , 0.0144928 ] +i [ 25 , -0.01 ] , [
0.0625 , 0.0869565 ] ]
584 [ [ 0 , 0.0338983 ] , [ 0.0384615 , 0.0714286 ] +i [ 0.0289855 , -0.0153846 ] , [
0.0178571 , 0.166667 ] ]
585 [ [ 0 , 0.0740741 ] , [ 0.0229885 , 0.0833333 ] +i [ 0.0434783 , 0.0142857 ] , [
0.0169492 , 0.166667 ] ]
586 [ [ 0 , 0.0263158 ] , [ 0.0769231 , 0.0416667 ] +i [ 0.05 , 0.0108696 ] , [
0.0204082 , 0.0327869 ] ]
587 [ [ -0.0555556 , 0.0235294 ] , [ 0.0416667 , 0.0357143 ] +i [ 0.0277778 , 0.333333 ] , [ 2 , 0.016129 ] ]
588 [ [ 0 , 0.03125 ] , [ 0.0232558 , 0.0222222 ] +i [ 0.25 , -0.0222222 ] , [ 0.0277778
, 0.0307692 ] ]
589 [ [ 0 , 125 ] , [ 0.047619 , 0.0350877 ] +i [ 0.2 , 0.05 ] , [ 0.0357143 , 0.031746 ]
]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
225
590 [ [ -0.0142857 , 0.0512821 ] , [ 0.142857 , 0.0217391 ] +i [ 1 , 0.0714286 ] , [
0.0121951 , 0.0384615 ] ]
591 [ [ -0.0106383 , 0.0322581 ] , [ 0.0246914 , 0.0133333 ] +i [ 0.0235294 ,
0.025641 ] , [ 0.142857 , 0.0175439 ] ]
592 [ [ -0.0121951 , 0.0540541 ] , [ 2 , 0.0149254 ] +i [ 0.0107527 , 0 ] , [ 0.0153846
, 0.25 ] ]
593 [ [ -0.037037 , 0.0285714 ] , [ 0.0243902 , 0.027027 ] +i [ 0.0151515 , -0.166667
] , [ 0.0769231 , 0.0136986 ] ]
594 [ [ -0.0175439 , 0.0714286 ] , [ 0.0103093 , 0.037037 ] +i [ 0.030303 , 0.0116279 ] , [ 0.0121951 , 0.0666667 ] ]
595 [ [ 0.04 , 0.0289855 ] , [ 0.0666667 , 0.0454545 ] +i [ 0.117647 , -0.0344828 ] ,
[ 0.0322581 , 0.021978 ] ]
596 [ [ -0.0217391 , 0.25 ] , [ 0.02 , 0.010989 ] +i [ 0.0217391 , 0 ] , [ 0.0217391 ,
0.111111 ] ]
597 [ [ 0 , 0.0689655 ] , [ 0.0178571 , 0.0103093 ] +i [ 0.047619 , -0.0238095 ] , [
0.142857 , 0.0212766 ] ]
598 [ [ 0.0136986 , 0.117647 ] , [ 0.105263 , 0.0222222 ] +i [ 0.4 , 0 ] , [ 25 , 125 ] ]
599 [ [ 0 , 0.0540541 ] , [ 0.0338983 , 1 ] +i [ 0.0869565 , -0.0133333 ] , [ 0.0555556
, 0.0344828 ] ]
600 [ [ 0.333333 , 0.0227273 ] , [ 0.0212766 , 0.0425532 ] +i [ 0.0909091 , 0.0344828 ] , [ 0.0105263 , 0.0526316 ] ]
601 [ [ 1 , 0.0116279 ] , [ 0.166667 , 0.0149254 ] +i [ 0.0181818 , 0 ] , [ 0.0232558 ,
0.0227273 ] ]
602 [ [ 0.0131579 , 0.0232558 ] , [ 0.0212766 , 0.0185185 ] +i [ 0.08 , 0 ] , [
0.0408163 , 0.0833333 ] ]
603 [ [ 0 , 0.0555556 ] , [ 0.0117647 , 0.0142857 ] +i [ 0.25 , -0.0149254 ] , [ 0.4 ,
0.0235294 ] ]
604 [ [ 0.0140845 , 0.0909091 ] , [ 0.0465116 , 0.030303 ] +i [ 0.04 , 0.0169492 ] , [
0.0204082 , 0.0149254 ] ]
605 [ [ 0.0136986 , 125 ] , [ 0.0666667 , 0.08 ] +i [ 0.016129 , 0 ] , [ 2 , 0.0147059 ] ]
606 [ [ 0.0243902 , 0.0263158 ] , [ 0.08 , 0.0425532 ] +i [ 0.0227273 , 0 ] , [
0.0120482 , 0.0277778 ] ]
607 [ [ 0 , 0.0454545 ] , [ 0.0512821 , 0.0117647 ] +i [ 0.0344828 , -25 ] , [ 0.0210526
, 0.0163934 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
226
608 [ [ 0.0714286 , 0.0235294 ] , [ 0.0108696 , 0.01 ] +i [ 0.0217391 , -0.0243902 ]
, [ 0.021978 , 0.142857 ] ]
609 [ [ 0 , 0.0126582 ] , [ 0.0181818 , 0.5 ] +i [ 0.0416667 , 0.0714286 ] , [ 0.010101
, 0.0425532 ] ]
610 [ [ 0 , 0.0338983 ] , [ 0.0357143 , 0.0645161 ] +i [ 0.5 , -0.037037 ] , [ 0.0215054
, 0.0149254 ] ]
611 [ [ 0 , 0.0277778 ] , [ 0.0144928 , 0.01 ] +i [ 0.181818 , -0.0714286 ] , [ 0.222222
, 0.0277778 ] ]
612 [ [ -0.0121951 , 0.0215054 ] , [ 0.0117647 , 0.0121951 ] +i [ 0.0408163 ,
0.0243902 ] , [ 0.08 , 0.5 ] ]
613 [ [ -0.04 , 0.133333 ] , [ 0.25 , 0.0135135 ] +i [ 0.02 , 0.0149254 ] , [ 0.0144928
, 0.0116279 ] ]
614 [ [ 0.0294118 , 0.0227273 ] , [ 0.0232558 , 0.0102041 ] +i [ 0.0224719 , 0.0136986 ] , [ 0.0512821 , 0.142857 ] ]
615 [ [ 0.0142857 , 0.08 ] , [ 0.285714 , 0.0909091 ] +i [ 0.0222222 , 0 ] , [ 0.0512821
, 0.1 ] ]
616 [ [ 0 , 0.0106383 ] , [ 0.02 , 0.0105263 ] +i [ 0.333333 , 0.111111 ] , [ 0.0571429
, 0.0714286 ] ]
617 [ [ 0 , 0.0119048 ] , [ 0.0357143 , 0.027027 ] +i [ 0.166667 , -0.0222222 ] , [
0.0338983 , 0.0263158 ] ]
618 [ [ 0.016129 , 0.5 ] , [ 0.037037 , 0.0357143 ] +i [ 0.0740741 , -0.0103093 ] , [
0.0344828 , 0.0384615 ] ]
619 [ [ 0.02 , 0.0740741 ] , [ 0.0285714 , 0.0571429 ] +i [ 0.015625 , -0.0322581 ] ,
[ 0.0454545 , 0.0147059 ] ]
620 [ [ 0.0263158 , 125 ] , [ 0.02 , 0.0140845 ] +i [ 0.0178571 , 0 ] , [ 0.0909091 ,
0.0123457 ] ]
621 [ [ -0.0106383 , 0.0105263 ] , [ 0.08 , 0.0444444 ] +i [ 0.028169 , -0.0166667 ] ,
[ 0.0294118 , 0.0175439 ] ]
622 [ [ 0 , 0.0952381 ] , [ 0.0102041 , 0.0666667 ] +i [ 0.0266667 , 0 ] , [ 0.0166667
, 0.0307692 ] ]
623 [ [ -0.04 , 0.025641 ] , [ 0.0952381 , 0.0126582 ] +i [ 0.0181818 , -0.0153846 ] ,
[ 0.0208333 , 0.5 ] ]
624 [ [ -0.0243902 , 0.0131579 ] , [ 0.0769231 , 0.0212766 ] +i [ 0.0108696 ,
0.015873 ] , [ 0.0277778 , 0.0526316 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
227
625 [ [ -0.0151515 , 0.142857 ] , [ 0.0116279 , 0.0392157 ] +i [ 0.2 , 0 ] , [ 0.0136986
, 0.0185185 ] ]
626 [ [ 0.0125 , 0.0117647 ] , [ 0.0212766 , 0.0105263 ] +i [ 0.166667 , 0.0166667 ]
, [ 0.025641 , 0.0350877 ] ]
627 [ [ 0 , 0.0210526 ] , [ 0.0454545 , 0.285714 ] +i [ 0.030303 , 0.0125 ] , [ 0.021978
, 0.0555556 ] ]
628 [ [ -0.0102041 , 0.0606061 ] , [ 0.0263158 , 0.0606061 ] +i [ 0.0487805 , 0.03125
] , [ 0.0229885 , 0.016129 ] ]
629 [ [ 0 , 0.0103093 ] , [ 0.0229885 , 0.0555556 ] +i [ 0.0135135 , 0 ] , [ 0.25 , 0.4 ]
]
630 [ [ 0 , 0.0425532 ] , [ 0.0126582 , 0.0232558 ] +i [ 0.0434783 , -0.0322581 ] , [
0.0322581 , 0.0416667 ] ]
631 [ [ 0.011236 , 0.0444444 ] , [ 0.666667 , 0.0344828 ] +i [ 0.047619 , -0.0588235
] , [ 0.025641 , 0.03125 ] ]
632 [ [ 0 , 0.0285714 ] , [ 0.047619 , 0.0151515 ] +i [ 0.0350877 , -0.0294118 ] , [
0.0229885 , 0.0689655 ] ]
633 [ [ 0 , 0.105263 ] , [ 0.0588235 , 0.0103093 ] +i [ 0.0111111 , 0 ] , [ 0.105263 ,
0.25 ] ]
634 [ [ 0 , 0.0434783 ] , [ 0.028169 , 0.0714286 ] +i [ 0.027027 , -0.0909091 ] , [
0.0289855 , 0.142857 ] ]
635 [ [ 0 , 0.0227273 ] , [ 0.0666667 , 0.0625 ] +i [ 0.0113636 , 0 ] , [ 0.0102041 ,
0.0285714 ] ]
636 [ [ 0 , 0.1 ] , [ 0.0289855 , 0.0645161 ] +i [ 0.025641 , -0.030303 ] , [ 1 , 0.666667
]]
637 [ [ -0.010989 , 0.0526316 ] , [ 0.04 , 0.153846 ] +i [ 0.0212766 , 0.0526316 ] , [
0.0512821 , 0.0111111 ] ]
638 [ [ 0.0149254 , 0.0142857 ] , [ 25 , 0.0144928 ] +i [ 0.0263158 , 0 ] , [ 0.0175439
, 0.0224719 ] ]
639 [ [ -0.0454545 , 0.0217391 ] , [ 0.0232558 , 0.0454545 ] +i [ 0.0113636 , -0.1 ] ,
[ 0.0222222 , 0.0238095 ] ]
640 [ [ 0 , 0.142857 ] , [ 0.05 , 0.0454545 ] +i [ 0.666667 , 0 ] , [ 0.0454545 ,
0.0215054 ] ]
641 [ [ 125 , 0.0227273 ] , [ 0.0263158 , 0.0125 ] +i [ 0.0169492 , 0 ] , [ 0.0425532 ,
0.0113636 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
228
642 [ [ 0 , 0.0181818 ] , [ 0.0273973 , 0.0425532 ] +i [ 0.0350877 , 0 ] , [ 2 ,
0.0106383 ] ]
643 [ [ 0 , 0.0238095 ] , [ 0.333333 , 0.0106383 ] +i [ 0.0105263 , -0.0172414 ] , [
0.0454545 , 0.0350877 ] ]
644 [ [ -0.0909091 , 0.047619 ] , [ 0.666667 , 0.666667 ] +i [ 0.0204082 , 0 ] , [
0.0714286 , 0.0322581 ] ]
645 [ [ 0.025641 , 0.5 ] , [ 0.0142857 , 0.2 ] +i [ 0.0224719 , -0.0133333 ] , [
0.0133333 , 0.0294118 ] ]
646 [ [ 0.0357143 , 0.0769231 ] , [ 0.333333 , 125 ] +i [ 0.105263 , 1 ] , [ 0.0689655
, 0.0253165 ] ]
647 [ [ 0 , 0.0215054 ] , [ 0.0740741 , 0.0526316 ] +i [ 0.0166667 , 25 ] , [ 0.0243902
, 0.0188679 ] ]
648 [ [ -0.0104167 , 0.015625 ] , [ 0.0714286 , 0.0769231 ] +i [ 0.016129 , 0.0102041 ] , [ 0.016129 , 0.0116279 ] ]
649 [ [ 0.0208333 , 0.0232558 ] , [ 0.0952381 , 0.03125 ] +i [ 0.0588235 , 0 ] , [
0.0571429 , 0.0108696 ] ]
650 [ [ 0 , 0.0408163 ] , [ 0.0416667 , 0.0217391 ] +i [ 0.0298507 , 0.016129 ] , [
0.0121951 , 0.047619 ] ]
651 [ [ 0.0714286 , 0.0689655 ] , [ 0.0625 , 0.0238095 ] +i [ 0.0833333 , -0.0232558
] , [ 0.0909091 , 0.0224719 ] ]
652 [ [ 0 , 2 ] , [ 0.0204082 , 0.166667 ] +i [ 0.111111 , -0.0555556 ] , [ 0.333333 ,
0.0689655 ] ]
653 [ [ -0.0232558 , 0.142857 ] , [ 0.25 , 0.0108696 ] +i [ 0.5 , -0.0153846 ] , [
0.0208333 , 0.010101 ] ]
654 [ [ -0.0714286 , 0.02 ] , [ 0.0204082 , 0.0108696 ] +i [ 0.04 , -0.0188679 ] , [
0.0454545 , 0.0487805 ] ]
655 [ [ 0.0149254 , 0.0243902 ] , [ 0.0123457 , 125 ] +i [ 0.0540541 , 0 ] , [ 0.015873
, 0.03125 ] ]
656 [ [ 0 , 0.0238095 ] , [ 0.02 , 0.0444444 ] +i [ 0.0526316 , 0 ] , [ 0.05 , 0.0147059
]]
657 [ [ -0.0175439 , 0.0416667 ] , [ 0.285714 , 0.0188679 ] +i [ 0.0103093 ,
0.0138889 ] , [ 2 , 0.025641 ] ]
658 [ [ 0 , 0.0606061 ] , [ 25 , 0.0120482 ] +i [ 1 , 0 ] , [ 0.0169492 , 0.0454545 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
229
659 [ [ -0.0106383 , 0.0273973 ] , [ 0.0344828 , 0.0172414 ] +i [ 0.0243902 , 0 ] , [
0.0833333 , 0.0172414 ] ]
660 [ [ 0 , 0.0377358 ] , [ 0.025641 , 0.0172414 ] +i [ 0.0116279 , 0.0106383 ] , [
0.0588235 , 0.0689655 ] ]
661 [ [ 0.030303 , 0.0357143 ] , [ 0.166667 , 0.0217391 ] +i [ 0.0108696 , -0.0119048
] , [ 0.0121951 , 0.028169 ] ]
662 [ [ 0.0117647 , 0.0625 ] , [ 0.0263158 , 0.011236 ] +i [ 0.0178571 , 0 ] , [
0.0384615 , 0.0289855 ] ]
663 [ [ -0.010101 , 0.0606061 ] , [ 0.0338983 , 0.0210526 ] +i [ 0.0363636 , 0 ] , [
0.142857 , 0.0512821 ] ]
664 [ [ 0 , 0.0434783 ] , [ 0.0212766 , 2 ] +i [ 0.010101 , -0.0102041 ] , [ 0.0238095
, 0.0384615 ] ]
665 [ [ 0 , 0.0125 ] , [ 0.0224719 , 0.027027 ] +i [ 1 , -0.0153846 ] , [ 0.0363636 ,
0.0294118 ] ]
666 [ [ 0 , 0.0243902 ] , [ 0.0166667 , 0.0526316 ] +i [ 0.0344828 , 0 ] , [ 0.0434783
, 0.0185185 ] ]
667 [ [ -0.5 , 0.0128205 ] , [ 1 , 0.0266667 ] +i [ 0.0238095 , -0.0121951 ] , [ 0.142857
, 0.0113636 ] ]
668 [ [ 0.0204082 , 0.0666667 ] , [ 0.010101 , 25 ] +i [ 0.0212766 , 0.015873 ] , [
0.0147059 , 0.0181818 ] ]
669 [ [ 0 , 0.0434783 ] , [ 0.0153846 , 0.0227273 ] +i [ 0.05 , 0.037037 ] , [ 0.0204082
, 0.0444444 ] ]
670 [ [ -1 , 0.0169492 ] , [ 0.0666667 , 0.0322581 ] +i [ 0.0125 , 0.25 ] , [ 0.01 ,
0.0232558 ] ]
671 [ [ -25 , 0.0454545 ] , [ 0.0120482 , 0.030303 ] +i [ 0.0121951 , 0 ] , [ 0.0123457
, 0.028169 ] ]
672 [ [ 0 , 0.1 ] , [ 0.0208333 , 0.037037 ] +i [ 0.0217391 , -0.2 ] , [ 0.025641 ,
0.0111111 ] ]
673 [ [ 0.0105263 , 0.0588235 ] , [ 0.0175439 , 0.0689655 ] +i [ 0.0333333 , 0.0322581 ] , [ 0.0425532 , 0.0113636 ] ]
674 [ [ 0 , 0.0126582 ] , [ 0.0111111 , 0.020202 ] +i [ 0.117647 , -1 ] , [ 0.0344828 ,
0.030303 ] ]
675 [ [ -0.01 , 0.0625 ] , [ 0.0188679 , 0.08 ] +i [ 0.105263 , -0.0106383 ] , [
0.0133333 , 0.0285714 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
230
676 [ [ 0 , 0.0344828 ] , [ 0.0246914 , 0.0108696 ] +i [ 0.016129 , 0.011236 ] , [ 0.05
, 0.0163934 ] ]
677 [ [ -0.01 , 0.0540541 ] , [ 0.0540541 , 0.0217391 ] +i [ 0.0769231 , 0 ] , [ 0.025974
, 0.0465116 ] ]
678 [ [ 0.0185185 , 0.0196078 ] , [ 0.0377358 , 0.02 ] +i [ 1 , -0.0108696 ] , [ 0.166667
, 0.133333 ] ]
679 [ [ 0.02 , 0.08 ] , [ 0.0465116 , 0.0363636 ] +i [ 0.111111 , -0.0243902 ] , [
0.0769231 , 0.0235294 ] ]
680 [ [ 0.0111111 , 0.0512821 ] , [ 0.105263 , 0.047619 ] +i [ 0.153846 , 0.0102041
] , [ 0.333333 , 0.0425532 ] ]
681 [ [ 0.0133333 , 0.0645161 ] , [ 0.030303 , 0.0188679 ] +i [ 0.05 , -0.0102041 ] ,
[ 0.0181818 , 0.0344828 ] ]
682 [ [ 0.0243902 , 0.0408163 ] , [ 0.0175439 , 0.08 ] +i [ 1 , -0.0526316 ] , [ 0.166667
, 0.0289855 ] ]
683 [ [ -0.0909091 , 0.0363636 ] , [ 1 , 0.0131579 ] +i [ 0.0625 , -0.0263158 ] , [
0.0625 , 0.0322581 ] ]
684 [ [ 0.0133333 , 0.0588235 ] , [ 0.0625 , 0.0769231 ] +i [ 0.0204082 , -0.03125 ]
, [ 0.0454545 , 0.222222 ] ]
685 [ [ 0 , 0.0136986 ] , [ 0.0434783 , 0.015625 ] +i [ 0.025974 , -0.5 ] , [ 0.142857 ,
0.0222222 ] ]
686 [ [ -0.0138889 , 0.0166667 ] , [ 0.0136986 , 0.0217391 ] +i [ 0.02 , -0.0138889 ]
, [ 0.0144928 , 0.0243902 ] ]
687 [ [ 0 , 0.027027 ] , [ 0.0166667 , 0.0215054 ] +i [ 0.010101 , 0.0113636 ] , [
0.0909091 , 0.333333 ] ]
688 [ [ 0.0555556 , 0.4 ] , [ 0.0142857 , 0.0119048 ] +i [ 0.0289855 , -0.025641 ] , [
0.0266667 , 0.0175439 ] ]
689 [ [ -0.03125 , 0.0175439 ] , [ 0.0140845 , 0.0238095 ] +i [ 25 , -0.0106383 ] , [
0.0206186 , 0.142857 ] ]
690 [ [ 0 , 0.0357143 ] , [ 0.0117647 , 0.0169492 ] +i [ 0.0235294 , -0.0384615 ] , [
0.0131579 , 0.0222222 ] ]
691 [ [ 0 , 0.0298507 ] , [ 0.0555556 , 0.0166667 ] +i [ 0.0487805 , -0.0227273 ] , [
0.0175439 , 0.0181818 ] ]
692 [ [ 0.0147059 , 0.0102041 ] , [ 0.0217391 , 0.666667 ] +i [ 0.0111111 , 0 ] , [
0.0204082 , 0.047619 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
231
693 [ [ 0 , 0.0338983 ] , [ 0.0769231 , 0.010101 ] +i [ 0.0136986 , 0 ] , [ 0.0138889 ,
0.1 ] ]
694 [ [ 0 , 0.0172414 ] , [ 0.0206186 , 0.0526316 ] +i [ 0.0153846 , -0.2 ] , [ 0.105263
, 0.0434783 ] ]
695 [ [ 0 , 0.0606061 ] , [ 0.0338983 , 0.0425532 ] +i [ 0.0163934 , -0.0227273 ] , [
0.0833333 , 0.111111 ] ]
696 [ [ 0 , 0.0263158 ] , [ 0.0133333 , 0.0588235 ] +i [ 0.0121951 , -0.0172414 ] , [
0.030303 , 0.0454545 ] ]
697 [ [ 0.037037 , 2 ] , [ 0.016129 , 0.015625 ] +i [ 0.0178571 , 0.0666667 ] , [
0.0196078 , 0.0144928 ] ]
698 [ [ 0 , 0.027027 ] , [ 0.016129 , 0.333333 ] +i [ 0.02 , 0.0555556 ] , [ 0.2 ,
0.0188679 ] ]
699 [ [ 0 , 0.0113636 ] , [ 0.0128205 , 0.2 ] +i [ 0.015625 , -0.0135135 ] , [ 0.0625 ,
0.0136986 ] ]
700 [ [ -0.0135135 , 0.0555556 ] , [ 0.0102041 , 0.0769231 ] +i [ 0.25 , -0.0117647 ]
, [ 0.0444444 , 0.0869565 ] ]
701 [ [ -0.0107527 , 0.0344828 ] , [ 0.0333333 , 125 ] +i [ 0.0588235 , 0 ] , [
0.0149254 , 0.031746 ] ]
702 [ [ -0.0238095 , 0.0246914 ] , [ 0.0243902 , 1 ] +i [ 0.0246914 , 0.0113636 ] , [
0.0238095 , 0.0322581 ] ]
703 [ [ -0.0116279 , 0.0294118 ] , [ 0.0384615 , 0.0392157 ] +i [ 0.4 , 0.027027 ] , [
0.0147059 , 0.0181818 ] ]
704 [ [ 0.0238095 , 0.0357143 ] , [ 0.1 , 0.0243902 ] +i [ 0.05 , 0 ] , [ 0.0175439 ,
0.0625 ] ]
705 [ [ 0 , 0.030303 ] , [ 0.0666667 , 0.0196078 ] +i [ 0.027027 , -0.0111111 ] , [
0.010101 , 0.0238095 ] ]
706 [ [ -0.0108696 , 0.0212766 ] , [ 0.0232558 , 0.0869565 ] +i [ 0.0588235 , 0.0434783 ] , [ 0.0769231 , 0.0125 ] ]
707 [ [ -0.0147059 , 0.0111111 ] , [ 0.0555556 , 0.0217391 ] +i [ 0.0526316 ,
0.047619 ] , [ 0.5 , 0.0263158 ] ]
708 [ [ 0 , 1 ] , [ 0.0227273 , 0.0588235 ] +i [ 0.105263 , 0 ] , [ 0.0144928 , 0.0540541
]]
709 [ [ -0.0243902 , 0.05 ] , [ 0.0227273 , 0.0204082 ] +i [ 0.181818 , 0 ] , [ 0.181818
, 0.2 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
232
710 [ [ 0 , 0.030303 ] , [ 0.0588235 , 0.0108696 ] +i [ 0.0102041 , 0 ] , [ 0.037037 ,
0.0833333 ] ]
711 [ [ -0.0147059 , 0.0235294 ] , [ 0.0229885 , 0.0277778 ] +i [ 0.0103093 , 0 ] , [
0.015625 , 0.0555556 ] ]
712 [ [ 0 , 0.0588235 ] , [ 0.0210526 , 0.0208333 ] +i [ 0.0526316 , 0 ] , [ 0.0153846
, 0.0769231 ] ]
713 [ [ -0.016129 , 0.05 ] , [ 0.037037 , 0.028169 ] +i [ 0.0392157 , 0 ] , [ 0.0526316
, 0.117647 ] ]
714 [ [ -0.0153846 , 0.030303 ] , [ 0.0232558 , 0.0235294 ] +i [ 0.5 , -0.0277778 ] , [
0.333333 , 0.03125 ] ]
715 [ [ -0.142857 , 0.0487805 ] , [ 0.181818 , 0.025641 ] +i [ 0.25 , 0.02 ] , [
0.0384615 , 0.0196078 ] ]
716 [ [ 0.0113636 , 0.0151515 ] , [ 0.0114943 , 0.027027 ] +i [ 0.0222222 , 0.0116279 ] , [ 0.0121951 , 0.0178571 ] ]
717 [ [ 0 , 0.0277778 ] , [ 0.0188679 , 0.0208333 ] +i [ 0.0909091 , 0 ] , [ 0.0113636
, 0.0714286 ] ]
718 [ [ 0.011236 , 0.111111 ] , [ 0.0178571 , 0.0416667 ] +i [ 0.0384615 , -0.0126582
] , [ 0.010101 , 0.0229885 ] ]
719 [ [ 0 , 0.037037 ] , [ 0.0166667 , 0.0289855 ] +i [ 0.047619 , 0.0555556 ] , [
0.0327869 , 0.0185185 ] ]
720 [ [ 0.0144928 , 0.0208333 ] , [ 0.0434783 , 0.0425532 ] +i [ 0.0212766 , 0 ] , [
0.0140845 , 0.181818 ] ]
721 [ [ 0.0108696 , 1 ] , [ 0.0454545 , 0.1 ] +i [ 0.0285714 , -0.0222222 ] , [ 0.0344828
, 0.0106383 ] ]
722 [ [ 125 , 0.0178571 ] , [ 0.0217391 , 0.0181818 ] +i [ 0.0833333 , 0.0526316 ] ,
[ 0.0113636 , 0.0206186 ] ]
723 [ [ 0 , 0.0444444 ] , [ 0.153846 , 0.0666667 ] +i [ 0.0153846 , -0.0181818 ] , [
0.0212766 , 0.0333333 ] ]
724 [ [ -0.0117647 , 0.0149254 ] , [ 0.0120482 , 0.03125 ] +i [ 0.021978 , 0.0714286
] , [ 0.03125 , 0.4 ] ]
725 [ [ 0 , 0.0185185 ] , [ 0.0266667 , 0.0869565 ] +i [ 0.0116279 , -0.0117647 ] , [
0.047619 , 0.0178571 ] ]
726 [ [ -0.0357143 , 0.0140845 ] , [ 0.0357143 , 0.0153846 ] +i [ 0.0909091 ,
0.0123457 ] , [ 0.0327869 , 0.0253165 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
233
727 [ [ 0 , 0.153846 ] , [ 0.028169 , 0.0625 ] +i [ 0.0277778 , -0.0333333 ] , [ 0.142857
, 0.5 ] ]
728 [ [ 0 , 0.037037 ] , [ 0.0169492 , 0.166667 ] +i [ 0.4 , 0.0217391 ] , [ 0.0188679
, 0.0121951 ] ]
729 [ [ 0 , 0.02 ] , [ 0.028169 , 0.0294118 ] +i [ 0.0363636 , -0.02 ] , [ 0.142857 , 0.2
]]
730 [ [ 0.0232558 , 0.02 ] , [ 0.0465116 , 0.010101 ] +i [ 0.0384615 , -0.0285714 ] ,
[ 0.031746 , 0.0285714 ] ]
731 [ [ 0 , 0.0135135 ] , [ 0.0125 , 0.0357143 ] +i [ 0.0714286 , 0.0102041 ] , [
0.0487805 , 0.0769231 ] ]
732 [ [ -0.0151515 , 0.0138889 ] , [ 0.015625 , 0.0181818 ] +i [ 0.011236 , 0.0322581
] , [ 0.0149254 , 0.166667 ] ]
733 [ [ 0.0238095 , 0.0294118 ] , [ 0.333333 , 0.0625 ] +i [ 0.0140845 , 0 ] , [
0.0224719 , 0.0769231 ] ]
734 [ [ -0.0108696 , 0.0204082 ] , [ 0.0135135 , 0.0126582 ] +i [ 0.0266667 , 0 ] , [
0.05 , 0.0229885 ] ]
735 [ [ 0.0163934 , 0.0208333 ] , [ 0.0135135 , 0.0263158 ] +i [ 0.0434783 , 0 ] , [
0.0240964 , 0.0294118 ] ]
736 [ [ 0 , 0.0240964 ] , [ 0.0215054 , 0.111111 ] +i [ 0.0210526 , 0.0121951 ] , [
0.0333333 , 0.0185185 ] ]
737 [ [ 0.2 , 0.010101 ] , [ 0.0105263 , 0.0222222 ] +i [ 0.0833333 , 0 ] , [ 0.0285714
, 0.05 ] ]
738 [ [ 0 , 0.0285714 ] , [ 0.0289855 , 0.0240964 ] +i [ 0.05 , -0.0125 ] , [ 0.027027 ,
0.0142857 ] ]
739 [ [ 0 , 0.0104167 ] , [ 0.01 , 0.0212766 ] +i [ 0.0714286 , 0 ] , [ 0.0487805 ,
0.0136986 ] ]
740 [ [ -0.04 , 0.0114943 ] , [ 0.0185185 , 0.0465116 ] +i [ 0.0229885 , 0 ] , [
0.0588235 , 0.0188679 ] ]
741 [ [ -0.016129 , 0.105263 ] , [ 0.0363636 , 0.0377358 ] +i [ 0.0454545 , 0 ] , [
0.012987 , 0.010989 ] ]
742 [ [ 0 , 1 ] , [ 0.03125 , 0.0571429 ] +i [ 0.0416667 , 0.0151515 ] , [ 0.0224719 ,
0.4 ] ]
743 [ [ -0.142857 , 0.222222 ] , [ 0.0338983 , 0.0625 ] +i [ 0.031746 , 0 ] , [ 0.666667
, 0.0133333 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
234
744 [ [ -0.01 , 0.03125 ] , [ 0.0909091 , 0.028169 ] +i [ 0.02 , -0.0151515 ] , [
0.0273973 , 0.133333 ] ]
745 [ [ -0.0243902 , 0.0952381 ] , [ 0.0512821 , 0.0119048 ] +i [ 0.181818 , 0.0357143 ] , [ 0.0740741 , 0.08 ] ]
746 [ [ -0.0144928 , 0.0147059 ] , [ 0.166667 , 0.0487805 ] +i [ 0.0102041 ,
0.0217391 ] , [ 0.0140845 , 0.0740741 ] ]
747 [ [ 0 , 0.0392157 ] , [ 0.0689655 , 0.0327869 ] +i [ 0.0147059 , -0.0217391 ] , [
0.0243902 , 0.04 ] ]
748 [ [ 0 , 0.142857 ] , [ 0.111111 , 0.0210526 ] +i [ 0.0526316 , 0.0208333 ] , [
0.0425532 , 0.0555556 ] ]
749 [ [ -0.0434783 , 0.0833333 ] , [ 0.0357143 , 0.0526316 ] +i [ 0.285714 , 0.0285714 ] , [ 0.0555556 , 0.0121951 ] ]
750 [ [ 0.015873 , 0.0229885 ] , [ 0.133333 , 0.0105263 ] +i [ 0.0666667 , -0.0238095
] , [ 0.0121951 , 0.0833333 ] ]
751 [ [ 0.0106383 , 0.0909091 ] , [ 0.0125 , 1 ] +i [ 0.0357143 , 0 ] , [ 0.0833333 ,
0.0188679 ] ]
752 [ [ 0.0192308 , 0.0714286 ] , [ 0.285714 , 0.010101 ] +i [ 0.0135135 , 0.0357143
] , [ 0.333333 , 0.04 ] ]
753 [ [ 0.0285714 , 0.0119048 ] , [ 0.0163934 , 0.0188679 ] +i [ 0.0121951 ,
0.0178571 ] , [ 0.0103093 , 0.0196078 ] ]
754 [ [ 0 , 0.010101 ] , [ 0.0740741 , 0.0140845 ] +i [ 0.0384615 , 0.015625 ] , [
0.0153846 , 0.0208333 ] ]
755 [ [ -0.0232558 , 0.285714 ] , [ 0.021978 , 0.0344828 ] +i [ 0.04 , 0.0133333 ] , [
0.0363636 , 0.047619 ] ]
756 [ [ 0.0222222 , 0.0338983 ] , [ 0.0588235 , 0.153846 ] +i [ 0.0384615 , 0 ] , [
0.0377358 , 0.0222222 ] ]
757 [ [ 0.047619 , 0.0246914 ] , [ 0.0106383 , 0.020202 ] +i [ 0.0322581 , 0 ] , [
0.0333333 , 0.027027 ] ]
758 [ [ 0.0172414 , 0.0350877 ] , [ 0.0119048 , 0.0714286 ] +i [ 0.0350877 ,
0.0147059 ] , [ 25 , 0.020202 ] ]
759 [ [ -0.0121951 , 0.4 ] , [ 0.0212766 , 0.030303 ] +i [ 0.0116279 , 0.0113636 ] , [
0.0106383 , 0.011236 ] ]
760 [ [ 0.0153846 , 0.0103093 ] , [ 0.020202 , 0.0434783 ] +i [ 0.0571429 , 0 ] , [
0.0277778 , 0.25 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
235
761 [ [ -0.012987 , 0.0338983 ] , [ 0.0125 , 0.0240964 ] +i [ 0.0666667 , 0.2 ] , [
0.021978 , 0.222222 ] ]
762 [ [ 0.0434783 , 0.0625 ] , [ 0.25 , 0.142857 ] +i [ 0.0196078 , 0.0104167 ] , [
0.028169 , 0.0142857 ] ]
763 [ [ -0.010101 , 0.0147059 ] , [ 0.166667 , 0.0666667 ] +i [ 25 , 0 ] , [ 0.0151515
, 0.0253165 ] ]
764 [ [ -0.0105263 , 0.04 ] , [ 0.0588235 , 0.0333333 ] +i [ 0.0175439 , 0 ] , [ 0.02 ,
0.333333 ] ]
765 [ [ -0.0208333 , 0.0322581 ] , [ 0.04 , 0.0181818 ] +i [ 0.0125 , 0 ] , [ 0.105263 ,
0.0105263 ] ]
766 [ [ 0 , 0.0125 ] , [ 0.04 , 0.0151515 ] +i [ 0.0357143 , -0.0263158 ] , [ 0.0322581
, 0.0217391 ] ]
767 [ [ 0 , 0.0714286 ] , [ 0.0172414 , 125 ] +i [ 0.0540541 , -0.0204082 ] , [
0.0322581 , 0.222222 ] ]
768 [ [ -0.010101 , 0.0188679 ] , [ 0.0769231 , 0.0131579 ] +i [ 0.030303 , 0.0294118 ] , [ 0.05 , 0.1 ] ]
769 [ [ -0.0166667 , 0.0384615 ] , [ 0.0114943 , 0.047619 ] +i [ 0.0434783 , 0 ] , [
0.021978 , 0.0175439 ] ]
770 [ [ -0.037037 , 0.4 ] , [ 0.0204082 , 0.0212766 ] +i [ 0.03125 , -0.027027 ] , [
0.028169 , 0.027027 ] ]
771 [ [ -0.0344828 , 0.0263158 ] , [ 0.0102041 , 0.030303 ] +i [ 0.0227273 ,
0.0117647 ] , [ 0.0116279 , 0.016129 ] ]
772 [ [ 0 , 0.0126582 ] , [ 0.0208333 , 0.25 ] +i [ 0.01 , 0 ] , [ 0.0277778 , 0.025974 ]
]
773 [ [ 0.0105263 , 0.0151515 ] , [ 0.166667 , 0.0175439 ] +i [ 0.0350877 , -0.166667
] , [ 0.025641 , 2 ] ]
774 [ [ -0.0322581 , 0.0208333 ] , [ 0.0740741 , 0.222222 ] +i [ 0.0246914 , 0.0123457 ] , [ 0.0240964 , 0.0344828 ] ]
775 [ [ 0.0153846 , 0.0689655 ] , [ 0.0172414 , 0.0163934 ] +i [ 0.0588235 ,
0.0142857 ] , [ 0.0322581 , 0.0142857 ] ]
776 [ [ -0.0128205 , 0.0392157 ] , [ 0.0147059 , 0.0384615 ] +i [ 0.4 , 0.0294118 ] ,
[ 0.0104167 , 0.047619 ] ]
777 [ [ 0 , 0.0102041 ] , [ 0.25 , 0.016129 ] +i [ 0.0322581 , 0.0128205 ] , [ 0.181818
, 0.0117647 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
236
778 [ [ 0.0117647 , 0.0357143 ] , [ 0.030303 , 0.0107527 ] +i [ 0.0350877 , 0.0666667
] , [ 0.0232558 , 0.0350877 ] ]
779 [ [ 0 , 0.0377358 ] , [ 0.0363636 , 0.166667 ] +i [ 0.0333333 , -0.0175439 ] , [
0.016129 , 0.0243902 ] ]
780 [ [ 0.0144928 , 0.031746 ] , [ 0.0240964 , 0.0227273 ] +i [ 0.0120482 , 0 ] , [
0.0136986 , 0.0208333 ] ]
781 [ [ -0.0166667 , 0.0869565 ] , [ 0.0434783 , 0.333333 ] +i [ 0.0625 , 0.03125 ] ,
[ 0.5 , 125 ] ]
782 [ [ 0.0344828 , 0.0136986 ] , [ 0.0240964 , 0.0175439 ] +i [ 0.0120482 ,
0.0106383 ] , [ 0.0208333 , 0.0357143 ] ]
783 [ [ -0.0208333 , 0.2 ] , [ 0.05 , 0.010989 ] +i [ 0.0212766 , 0 ] , [ 0.0133333 ,
0.0307692 ] ]
784 [ [ 0.010101 , 0.0344828 ] , [ 0.0363636 , 0.333333 ] +i [ 0.0235294 , 0 ] , [
0.0123457 , 0.0571429 ] ]
785 [ [ 0 , 2 ] , [ 0.037037 , 0.0133333 ] +i [ 0.0204082 , -0.0106383 ] , [ 0.03125 ,
0.105263 ] ]
786 [ [ 0.0181818 , 0.105263 ] , [ 0.0344828 , 0.25 ] +i [ 0.0147059 , 0 ] , [ 0.2 ,
0.0869565 ] ]
787 [ [ -0.0196078 , 0.0235294 ] , [ 0.0606061 , 0.0238095 ] +i [ 0.0172414 , 0 ] , [
0.0131579 , 0.0322581 ] ]
788 [ [ 0 , 0.0454545 ] , [ 0.0105263 , 0.0217391 ] +i [ 125 , -0.015873 ] , [ 0.037037
, 0.0263158 ] ]
789 [ [ -0.0151515 , 0.0138889 ] , [ 2 , 0.0111111 ] +i [ 0.0138889 , 0.1 ] , [ 0.0384615
,2]]
790 [ [ -0.25 , 0.133333 ] , [ 0.0465116 , 0.027027 ] +i [ 1 , -0.333333 ] , [ 0.027027
, 0.0263158 ] ]
791 [ [ -0.25 , 0.025974 ] , [ 0.016129 , 0.0103093 ] +i [ 0.5 , -0.0204082 ] , [
0.117647 , 0.0416667 ] ]
792 [ [ 0 , 0.0227273 ] , [ 0.03125 , 0.142857 ] +i [ 0.166667 , -0.0133333 ] , [
0.0416667 , 0.0116279 ] ]
793 [ [ 0.03125 , 0.0104167 ] , [ 0.0833333 , 0.0123457 ] +i [ 0.117647 , 0.0833333
] , [ 0.0298507 , 0.0408163 ] ]
794 [ [ 0 , 0.010101 ] , [ 0.0128205 , 0.0740741 ] +i [ 0.015873 , 0 ] , [ 0.0294118 ,
0.011236 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
237
795 [ [ 0 , 0.0142857 ] , [ 0.0178571 , 0.0588235 ] +i [ 0.5 , 0.0769231 ] , [ 0.0133333
, 0.030303 ] ]
796 [ [ -0.0108696 , 0.08 ] , [ 0.5 , 0.111111 ] +i [ 0.025641 , -0.0357143 ] , [
0.012987 , 0.0454545 ] ]
797 [ [ -0.0243902 , 0.04 ] , [ 0.0714286 , 0.0869565 ] +i [ 0.0222222 , 0 ] , [ 0.047619
, 0.2 ] ]
798 [ [ 0.0625 , 0.0384615 ] , [ 0.02 , 0.0357143 ] +i [ 0.0135135 , -0.2 ] , [ 0.012987
, 0.0444444 ] ]
799 [ [ 0.0107527 , 0.0625 ] , [ 0.0128205 , 0.0769231 ] +i [ 0.0212766 , 0 ] , [
0.0147059 , 25 ] ]
800 [ [ 0.0151515 , 0.0555556 ] , [ 0.0123457 , 0.0240964 ] +i [ 0.0138889 ,
0.0263158 ] , [ 0.028169 , 0.0153846 ] ]
801 [ [ -0.0192308 , 0.0175439 ] , [ 0.0277778 , 0.0833333 ] +i [ 0.5 , -0.0384615 ] ,
[ 0.0204082 , 1 ] ]
802 [ [ 0.0232558 , 1 ] , [ 0.0322581 , 0.0625 ] +i [ 0.181818 , 0.016129 ] , [
0.0253165 , 0.0208333 ] ]
803 [ [ 0.0188679 , 0.0833333 ] , [ 0.0454545 , 125 ] +i [ 0.0555556 , 0.047619 ] , [
0.0263158 , 0.0465116 ] ]
804 [ [ -0.0111111 , 25 ] , [ 1 , 2 ] +i [ 0.0416667 , 0 ] , [ 0.0273973 , 125 ] ]
805 [ [ -0.012987 , 0.0327869 ] , [ 0.0333333 , 0.0104167 ] +i [ 0.0232558 ,
0.0212766 ] , [ 0.0606061 , 0.0294118 ] ]
806 [ [ 0.0175439 , 0.012987 ] , [ 0.0232558 , 0.0392157 ] +i [ 0.010101 , 0.0344828
] , [ 0.0289855 , 0.04 ] ]
807 [ [ 0 , 0.0444444 ] , [ 0.0116279 , 0.0526316 ] +i [ 0.010989 , 0 ] , [ 0.111111 ,
0.0232558 ] ]
808 [ [ 0.0153846 , 0.0273973 ] , [ 0.015625 , 0.0434783 ] +i [ 0.0392157 , 0.0212766
] , [ 0.0555556 , 0.0666667 ] ]
809 [ [ 0 , 0.105263 ] , [ 0.0377358 , 0.0555556 ] +i [ 0.0487805 , -0.0153846 ] , [
0.025641 , 0.0151515 ] ]
810 [ [ 0.0833333 , 0.0740741 ] , [ 0.04 , 0.0136986 ] +i [ 0.0246914 , 0.0227273 ] ,
[ 0.0113636 , 0.0833333 ] ]
811 [ [ -0.0120482 , 0.133333 ] , [ 0.047619 , 0.021978 ] +i [ 0.0384615 , 0 ] , [
0.0240964 , 0.0869565 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
238
812 [ [ -0.0263158 , 0.0227273 ] , [ 0.025641 , 0.0232558 ] +i [ 0.0238095 , 0.0163934 ] , [ 0.0212766 , 0.0333333 ] ]
813 [ [ 1 , 0.0238095 ] , [ 0.037037 , 0.181818 ] +i [ 0.0206186 , 0 ] , [ 0.0434783 ,
0.0298507 ] ]
814 [ [ 0 , 0.0142857 ] , [ 0.0172414 , 0.0133333 ] +i [ 0.0769231 , 0 ] , [ 0.0102041
, 0.0377358 ] ]
815 [ [ 0.0217391 , 0.0363636 ] , [ 0.0833333 , 0.0140845 ] +i [ 25 , 0 ] , [ 0.111111
, 0.0227273 ] ]
816 [ [ -0.012987 , 0.666667 ] , [ 0.0571429 , 0.0144928 ] +i [ 0.0465116 , 0 ] , [
0.0307692 , 25 ] ]
817 [ [ 0.0136986 , 0.0116279 ] , [ 0.0181818 , 0.117647 ] +i [ 0.01 , 0.04 ] , [
0.0555556 , 0.020202 ] ]
818 [ [ -0.0285714 , 0.133333 ] , [ 0.0116279 , 0.0625 ] +i [ 0.025641 , 0 ] , [
0.0243902 , 0.0487805 ] ]
819 [ [ -0.0666667 , 0.0425532 ] , [ 0.0133333 , 0.020202 ] +i [ 0.0222222 , 0 ] , [
0.047619 , 0.0104167 ] ]
820 [ [ -0.015873 , 0.0192308 ] , [ 0.111111 , 0.015873 ] +i [ 0.0215054 , 0 ] , [ 0.1 ,
0.01 ] ]
821 [ [ 0.142857 , 0.0210526 ] , [ 0.015625 , 0.0588235 ] +i [ 0.0222222 , -0.0133333
] , [ 0.025641 , 0.010101 ] ]
822 [ [ 0 , 0.0227273 ] , [ 0.0285714 , 0.0555556 ] +i [ 0.0119048 , 0 ] , [ 0.0444444
, 0.222222 ] ]
823 [ [ -0.016129 , 0.0689655 ] , [ 0.0238095 , 0.025641 ] +i [ 0.0384615 , 0.0120482
] , [ 0.166667 , 0.0253165 ] ]
824 [ [ 0.015873 , 0.030303 ] , [ 0.0119048 , 0.0377358 ] +i [ 0.0238095 , -0.0212766
] , [ 0.0266667 , 0.0392157 ] ]
825 [ [ -0.015625 , 0.0327869 ] , [ 0.0289855 , 0.0434783 ] +i [ 25 , 0.5 ] , [ 0.0140845
, 0.0106383 ] ]
826 [ [ -0.0263158 , 0.0149254 ] , [ 0.031746 , 0.0338983 ] +i [ 0.0434783 , 0.0126582 ] , [ 0.0384615 , 0.0166667 ] ]
827 [ [ 25 , 0.0208333 ] , [ 0.0666667 , 0.015625 ] +i [ 0.0119048 , -0.2 ] , [ 0.02 ,
0.0116279 ] ]
828 [ [ -0.0178571 , 0.2 ] , [ 0.0253165 , 1 ] +i [ 0.04 , -0.0217391 ] , [ 0.0298507 ,
0.0909091 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
239
829 [ [ 0 , 0.04 ] , [ 0.0126582 , 0.0666667 ] +i [ 0.0294118 , -0.0181818 ] , [
0.0106383 , 0.0227273 ] ]
830 [ [ -0.011236 , 0.0285714 ] , [ 0.0294118 , 0.0333333 ] +i [ 0.0125 , 0.0131579
] , [ 0.0416667 , 0.025641 ] ]
831 [ [ 0 , 0.0273973 ] , [ 1 , 0.0384615 ] +i [ 0.0235294 , -0.0131579 ] , [ 0.0140845
, 0.0625 ] ]
832 [ [ 0.0769231 , 0.031746 ] , [ 0.0204082 , 0.0106383 ] +i [ 0.0465116 , 0.016129
] , [ 0.0126582 , 0.0363636 ] ]
833 [ [ 0 , 0.0243902 ] , [ 0.0204082 , 0.0188679 ] +i [ 0.0555556 , 0 ] , [ 0.0172414
, 0.0273973 ] ]
834 [ [ 0 , 0.0113636 ] , [ 0.0540541 , 0.0113636 ] +i [ 0.0322581 , 0.0181818 ] , [
0.0555556 , 0.0285714 ] ]
835 [ [ 0 , 0.0185185 ] , [ 0.333333 , 0.0232558 ] +i [ 0.0147059 , -0.0625 ] , [
0.020202 , 0.0235294 ] ]
836 [ [ 0.0126582 , 0.0952381 ] , [ 0.0235294 , 0.0151515 ] +i [ 0.0215054 , -0.01 ]
, [ 0.0212766 , 0.0416667 ] ]
837 [ [ 0 , 0.25 ] , [ 0.0363636 , 0.0294118 ] +i [ 0.0208333 , 0 ] , [ 0.0344828 ,
0.0172414 ] ]
838 [ [ 0 , 0.0212766 ] , [ 0.333333 , 0.08 ] +i [ 0.0144928 , 0 ] , [ 0.0416667 ,
0.133333 ] ]
839 [ [ -0.0136986 , 0.0350877 ] , [ 0.1 , 0.142857 ] +i [ 0.0377358 , 0 ] , [ 0.0131579
, 0.0350877 ] ]
840 [ [ 0 , 0.03125 ] , [ 0.02 , 0.0103093 ] +i [ 0.0185185 , -0.0140845 ] , [ 0.0434783
, 0.0131579 ] ]
841 [ [ 0.0285714 , 0.0192308 ] , [ 0.0116279 , 0.4 ] +i [ 0.0416667 , 0 ] , [ 0.0909091
, 0.0666667 ] ]
842 [ [ 0 , 0.0240964 ] , [ 0.0210526 , 0.0204082 ] +i [ 0.01 , 0 ] , [ 0.25 , 0.021978 ]
]
843 [ [ -25 , 2 ] , [ 0.0105263 , 0.0103093 ] +i [ 0.0227273 , -0.0153846 ] , [
0.0555556 , 0.0416667 ] ]
844 [ [ -0.0169492 , 0.0178571 ] , [ 0.0178571 , 0.0114943 ] +i [ 0.011236 , 0 ] , [
0.0133333 , 0.333333 ] ]
845 [ [ 0.0212766 , 0.0606061 ] , [ 0.0208333 , 0.0128205 ] +i [ 0.0588235 , 0 ] , [
0.0909091 , 0.030303 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
240
846 [ [ 0 , 125 ] , [ 0.0487805 , 0.0377358 ] +i [ 0.111111 , 0.0104167 ] , [ 0.030303
, 0.142857 ] ]
847 [ [ -0.0113636 , 0.105263 ] , [ 0.010989 , 0.25 ] +i [ 0.0666667 , 0.030303 ] , [
0.0273973 , 0.0169492 ] ]
848 [ [ 0.0192308 , 0.047619 ] , [ 0.0125 , 0.0357143 ] +i [ 0.0555556 , -0.0147059
] , [ 0.0178571 , 0.027027 ] ]
849 [ [ 0 , 0.285714 ] , [ 0.020202 , 0.0714286 ] +i [ 0.333333 , 0.0192308 ] , [
0.0131579 , 0.0181818 ] ]
850 [ [ -0.0114943 , 0.0116279 ] , [ 0.031746 , 0.0454545 ] +i [ 0.020202 , 0 ] , [
0.0238095 , 0.0227273 ] ]
851 [ [ 0 , 0.0215054 ] , [ 0.0625 , 0.0151515 ] +i [ 0.0121951 , 0 ] , [ 0.0222222 ,
0.0540541 ] ]
852 [ [ -0.05 , 0.0235294 ] , [ 125 , 0.02 ] +i [ 0.4 , -0.0133333 ] , [ 0.030303 ,
0.0416667 ] ]
853 [ [ -0.0769231 , 0.02 ] , [ 0.133333 , 0.0322581 ] +i [ 0.02 , -0.0104167 ] , [ 2 ,
0.2 ] ]
854 [ [ -0.0126582 , 0.0714286 ] , [ 0.0333333 , 0.142857 ] +i [ 0.030303 , 0 ] , [
0.021978 , 0.0204082 ] ]
855 [ [ 0 , 0.0215054 ] , [ 0.0294118 , 0.0266667 ] +i [ 0.0384615 , 0 ] , [ 0.0909091
, 0.0666667 ] ]
856 [ [ 0.0163934 , 0.0103093 ] , [ 0.0166667 , 0.0138889 ] +i [ 0.666667 , 0 ] , [
0.0169492 , 0.027027 ] ]
857 [ [ -0.0140845 , 0.0114943 ] , [ 0.0121951 , 0.166667 ] +i [ 0.0229885 , 0 ] , [
0.0285714 , 0.166667 ] ]
858 [ [ 0.0263158 , 0.666667 ] , [ 0.0357143 , 0.666667 ] +i [ 0.0322581 , -0.01 ] , [
0.0217391 , 0.0714286 ] ]
859 [ [ 0 , 0.5 ] , [ 0.0740741 , 0.0363636 ] +i [ 25 , -0.0103093 ] , [ 0.0487805 ,
0.285714 ] ]
860 [ [ 0.0175439 , 0.1 ] , [ 0.047619 , 0.028169 ] +i [ 0.0909091 , -0.05 ] , [ 0.01 ,
0.0144928 ] ]
861 [ [ -0.010989 , 0.0833333 ] , [ 0.047619 , 0.0121951 ] +i [ 0.0126582 , 0.0120482 ] , [ 0.25 , 0.0102041 ] ]
862 [ [ 0.0140845 , 0.222222 ] , [ 0.037037 , 0.05 ] +i [ 0.025974 , 0 ] , [ 0.0263158
, 0.0344828 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
241
863 [ [ -0.0144928 , 0.0377358 ] , [ 0.0163934 , 0.025641 ] +i [ 0.0114943 ,
0.0555556 ] , [ 1 , 0.0212766 ] ]
864 [ [ 0 , 0.0144928 ] , [ 0.0322581 , 0.142857 ] +i [ 0.0444444 , -0.0135135 ] , [
0.2 , 0.0175439 ] ]
865 [ [ -0.0294118 , 0.010989 ] , [ 0.0232558 , 0.020202 ] +i [ 0.0144928 , 0 ] , [ 0.5
, 0.027027 ] ]
866 [ [ 0.5 , 0.0555556 ] , [ 0.0434783 , 0.0104167 ] +i [ 0.0434783 , 0 ] , [ 0.5 ,
0.0103093 ] ]
867 [ [ 0 , 0.0104167 ] , [ 0.0392157 , 0.0606061 ] +i [ 0.0263158 , -0.0147059 ] , [
0.0555556 , 0.02 ] ]
868 [ [ 0.0104167 , 0.027027 ] , [ 0.0338983 , 0.020202 ] +i [ 0.027027 , 0 ] , [
0.0833333 , 0.0357143 ] ]
869 [ [ 0 , 0.0208333 ] , [ 0.0185185 , 0.0133333 ] +i [ 0.0952381 , 0.0833333 ] , [
0.0125 , 0.25 ] ]
870 [ [ 0 , 0.0273973 ] , [ 0.0377358 , 0.0645161 ] +i [ 0.0454545 , -0.0909091 ] , [
0.0232558 , 0.0384615 ] ]
871 [ [ -0.0434783 , 0.0307692 ] , [ 0.016129 , 0.0363636 ] +i [ 0.333333 , 0.0113636
] , [ 0.0645161 , 0.0208333 ] ]
872 [ [ 0.0181818 , 0.0384615 ] , [ 0.25 , 0.0454545 ] +i [ 0.0125 , -0.142857 ] , [
0.0769231 , 0.0212766 ] ]
873 [ [ 0.02 , 0.0327869 ] , [ 1 , 0.025641 ] +i [ 0.0425532 , 0 ] , [ 0.0338983 ,
0.0243902 ] ]
874 [ [ -0.0138889 , 0.0111111 ] , [ 0.2 , 0.0188679 ] +i [ 0.0119048 , 0 ] , [ 0.0107527
, 0.0212766 ] ]
875 [ [ 0 , 0.0253165 ] , [ 125 , 0.03125 ] +i [ 0.0555556 , 0.0166667 ] , [ 0.0175439
, 0.0111111 ] ]
876 [ [ 0 , 2 ] , [ 0.0185185 , 125 ] +i [ 0.0344828 , 0.0144928 ] , [ 0.0235294 ,
0.0425532 ] ]
877 [ [ 0 , 0.03125 ] , [ 0.025641 , 0.0263158 ] +i [ 0.181818 , 0.1 ] , [ 0.0153846 ,
0.0126582 ] ]
878 [ [ 0 , 0.222222 ] , [ 2 , 0.0229885 ] +i [ 0.0294118 , 0.0126582 ] , [ 0.0196078 ,
0.0512821 ] ]
879 [ [ -0.0232558 , 0.028169 ] , [ 0.0434783 , 0.0294118 ] +i [ 0.01 , -0.0172414 ] ,
[ 25 , 0.0232558 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
242
880 [ [ 0 , 25 ] , [ 0.0178571 , 0.0645161 ] +i [ 0.05 , -0.012987 ] , [ 0.1 , 0.0277778
]]
881 [ [ 0.0625 , 0.03125 ] , [ 0.1 , 0.0147059 ] +i [ 0.0172414 , 0 ] , [ 0.0119048 ,
0.0357143 ] ]
882 [ [ 0.0135135 , 0.5 ] , [ 0.0344828 , 0.25 ] +i [ 0.142857 , 0 ] , [ 0.0263158 ,
0.0740741 ] ]
883 [ [ 0 , 0.0869565 ] , [ 0.0454545 , 0.0119048 ] +i [ 0.0204082 , -0.5 ] , [ 0.0392157
, 0.0229885 ] ]
884 [ [ 0.05 , 0.0487805 ] , [ 0.0384615 , 0.0454545 ] +i [ 0.0217391 , 0.0344828 ] ,
[ 0.020202 , 0.05 ] ]
885 [ [ 0 , 0.0289855 ] , [ 0.0188679 , 0.2 ] +i [ 0.0526316 , 0 ] , [ 0.0465116 ,
0.0240964 ] ]
886 [ [ -0.0243902 , 0.0229885 ] , [ 0.0175439 , 0.25 ] +i [ 0.0240964 , 0.0175439 ]
, [ 0.153846 , 0.047619 ] ]
887 [ [ 0 , 0.0540541 ] , [ 0.0263158 , 0.105263 ] +i [ 0.02 , 0.0106383 ] , [ 0.0217391
, 0.0185185 ] ]
888 [ [ 0.0625 , 125 ] , [ 0.0107527 , 0.0512821 ] +i [ 0.0333333 , 0 ] , [ 0.333333 ,
0.0465116 ] ]
889 [ [ -0.0185185 , 0.0277778 ] , [ 0.0210526 , 0.0243902 ] +i [ 0.0512821 , 0.0131579 ] , [ 0.0740741 , 0.037037 ] ]
890 [ [ -0.0294118 , 0.027027 ] , [ 0.2 , 0.0740741 ] +i [ 0.142857 , 0 ] , [ 0.0952381
, 0.011236 ] ]
891 [ [ 125 , 0.0104167 ] , [ 0.0408163 , 0.0350877 ] +i [ 0.0166667 , 0.0113636 ] ,
[ 0.0153846 , 0.0714286 ] ]
892 [ [ 0.0384615 , 0.0169492 ] , [ 0.010101 , 0.0625 ] +i [ 0.0416667 , 0.0116279 ]
, [ 0.025641 , 2 ] ]
893 [ [ -0.0204082 , 0.0212766 ] , [ 0.0188679 , 0.2 ] +i [ 0.0833333 , -0.0166667 ] ,
[ 0.0322581 , 25 ] ]
894 [ [ 0.0163934 , 0.0434783 ] , [ 0.2 , 0.0344828 ] +i [ 0.0571429 , 0 ] , [ 0.0192308
, 0.105263 ] ]
895 [ [ 0.0119048 , 0.0289855 ] , [ 0.04 , 0.0512821 ] +i [ 0.117647 , 0.0114943 ] , [
0.0206186 , 0.027027 ] ]
896 [ [ -0.02 , 0.05 ] , [ 0.027027 , 0.027027 ] +i [ 0.0208333 , -0.025641 ] , [
0.0153846 , 0.028169 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
243
897 [ [ -0.0107527 , 0.1 ] , [ 0.0120482 , 0.0588235 ] +i [ 0.0113636 , 0.0454545 ] ,
[ 0.0151515 , 0.0294118 ] ]
898 [ [ 0.0217391 , 0.0454545 ] , [ 0.010989 , 0.0131579 ] +i [ 0.0116279 , 0.0128205
] , [ 0.1 , 0.25 ] ]
899 [ [ -0.0151515 , 0.0263158 ] , [ 0.025974 , 125 ] +i [ 0.0108696 , 0.0125 ] , [
0.0769231 , 0.142857 ] ]
900 [ [ -0.0136986 , 0.0106383 ] , [ 0.0344828 , 0.01 ] +i [ 0.0151515 , 0.01 ] , [
0.027027 , 125 ] ]
901 [ [ 0.015625 , 0.0285714 ] , [ 0.0215054 , 0.0666667 ] +i [ 0.0769231 , 0 ] , [ 0.5
, 0.027027 ] ]
902 [ [ 0.0333333 , 0.037037 ] , [ 0.0117647 , 0.4 ] +i [ 0.0333333 , -0.0714286 ] , [
0.117647 , 0.0689655 ] ]
903 [ [ -0.0384615 , 0.027027 ] , [ 0.0243902 , 0.037037 ] +i [ 0.0273973 , 1 ] , [ 0.4
, 0.037037 ] ]
904 [ [ 0 , 0.08 ] , [ 0.0350877 , 0.0869565 ] +i [ 0.0645161 , -0.0181818 ] , [
0.0128205 , 0.0125 ] ]
905 [ [ -0.0384615 , 0.0714286 ] , [ 0.0140845 , 0.0540541 ] +i [ 0.027027 , 0 ] , [
0.0392157 , 0.0555556 ] ]
906 [ [ 0 , 0.0121951 ] , [ 0.1 , 0.0185185 ] +i [ 0.0625 , 0 ] , [ 0.0188679 , 0.0208333
]]
907 [ [ 0.0625 , 0.0408163 ] , [ 0.0333333 , 0.037037 ] +i [ 0.0103093 , -25 ] , [
0.0128205 , 0.0120482 ] ]
908 [ [ 0 , 0.153846 ] , [ 0.25 , 0.027027 ] +i [ 0.027027 , 0 ] , [ 0.0111111 , 0.010989
]]
909 [ [ 0.047619 , 0.333333 ] , [ 0.0212766 , 0.0350877 ] +i [ 0.0327869 , 0 ] , [
0.0465116 , 0.0487805 ] ]
910 [ [ 125 , 0.0120482 ] , [ 0.0147059 , 0.0246914 ] +i [ 0.0384615 , -0.0555556 ] ,
[ 0.0185185 , 0.0740741 ] ]
911 [ [ -0.0243902 , 0.181818 ] , [ 0.0465116 , 0.0235294 ] +i [ 0.04 , -0.015625 ] , [
0.0114943 , 0.333333 ] ]
912 [ [ -0.0333333 , 0.0285714 ] , [ 0.0208333 , 0.016129 ] +i [ 0.0253165 , 0 ] , [
0.010989 , 0.0212766 ] ]
913 [ [ -0.0126582 , 0.0175439 ] , [ 0.0117647 , 0.047619 ] +i [ 0.030303 , 0.0588235 ] , [ 0.0333333 , 0.0294118 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
244
914 [ [ 0 , 0.0215054 ] , [ 0.0714286 , 0.0714286 ] +i [ 0.0555556 , 0 ] , [ 0.010101 ,
0.0769231 ] ]
915 [ [ -0.0192308 , 0.0289855 ] , [ 0.0357143 , 0.0434783 ] +i [ 0.166667 , 0.0333333 ] , [ 0.25 , 0.0227273 ] ]
916 [ [ -0.0153846 , 0.0454545 ] , [ 0.0125 , 0.0210526 ] +i [ 0.0666667 , -0.0120482
] , [ 0.0119048 , 0.133333 ] ]
917 [ [ -0.0909091 , 0.05 ] , [ 0.0416667 , 2 ] +i [ 0.0192308 , 0.2 ] , [ 1 , 0.0285714
]]
918 [ [ 0 , 2 ] , [ 0.0238095 , 0.111111 ] +i [ 2 , 0.0125 ] , [ 0.166667 , 0.0266667 ] ]
919 [ [ -0.0188679 , 0.0163934 ] , [ 0.0117647 , 0.0833333 ] +i [ 0.0238095 ,
0.0138889 ] , [ 0.0377358 , 0.0153846 ] ]
920 [ [ 0 , 0.0232558 ] , [ 0.0408163 , 0.0181818 ] +i [ 0.0104167 , 0 ] , [ 0.0188679
, 0.0144928 ] ]
921 [ [ -0.0769231 , 0.0117647 ] , [ 0.0227273 , 0.0322581 ] +i [ 0.0588235 , 0 ] , [
0.181818 , 0.0526316 ] ]
922 [ [ -0.04 , 0.0217391 ] , [ 0.031746 , 0.0208333 ] +i [ 0.0123457 , 0 ] , [ 0.0540541
, 0.0125 ] ]
923 [ [ -0.03125 , 0.0294118 ] , [ 0.0210526 , 0.25 ] +i [ 0.0350877 , -0.0125 ] , [
0.333333 , 0.02 ] ]
924 [ [ 0 , 0.0217391 ] , [ 0.142857 , 0.027027 ] +i [ 0.0833333 , -125 ] , [ 0.0149254
, 0.0123457 ] ]
925 [ [ 0.016129 , 0.0769231 ] , [ 0.0465116 , 0.0444444 ] +i [ 0.0144928 , 0.0188679 ] , [ 0.0113636 , 0.133333 ] ]
926 [ [ 0 , 0.0208333 ] , [ 0.0377358 , 0.0238095 ] +i [ 0.0119048 , 0 ] , [ 0.0285714
, 0.0714286 ] ]
927 [ [ 0.0172414 , 0.0350877 ] , [ 0.08 , 0.028169 ] +i [ 0.0232558 , 0 ] , [ 0.05 ,
0.0206186 ] ]
928 [ [ 0.0243902 , 0.0243902 ] , [ 0.0294118 , 0.02 ] +i [ 0.0121951 , -0.0434783 ]
, [ 0.0444444 , 0.0104167 ] ]
929 [ [ -0.0188679 , 0.0144928 ] , [ 0.028169 , 0.0263158 ] +i [ 0.0133333 ,
0.0188679 ] , [ 0.142857 , 0.0185185 ] ]
930 [ [ 0.0128205 , 0.0909091 ] , [ 0.111111 , 0.0108696 ] +i [ 0.0909091 , -0.142857
] , [ 0.117647 , 0.0114943 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
245
931 [ [ -0.0555556 , 0.0125 ] , [ 0.0229885 , 0.5 ] +i [ 0.0238095 , 0.0666667 ] , [
0.0151515 , 0.0833333 ] ]
932 [ [ 0 , 0.0222222 ] , [ 0.0108696 , 0.027027 ] +i [ 0.666667 , -0.0133333 ] , [
0.0229885 , 0.0126582 ] ]
933 [ [ 0.0151515 , 0.0222222 ] , [ 0.0277778 , 0.021978 ] +i [ 0.0253165 , 0.0144928 ] , [ 0.1 , 1 ] ]
934 [ [ -0.0114943 , 0.0217391 ] , [ 0.01 , 0.181818 ] +i [ 0.0408163 , 0.0123457 ] ,
[ 0.285714 , 0.025974 ] ]
935 [ [ -0.0208333 , 0.027027 ] , [ 0.0204082 , 0.03125 ] +i [ 0.015873 , -0.333333 ]
, [ 0.0147059 , 0.0210526 ] ]
936 [ [ -0.01 , 0.0740741 ] , [ 0.0222222 , 0.0102041 ] +i [ 0.333333 , 0.0212766 ] ,
[ 0.0444444 , 0.0540541 ] ]
937 [ [ 0.0107527 , 0.0253165 ] , [ 0.0833333 , 0.0322581 ] +i [ 0.0327869 , 0.03125
] , [ 0.0114943 , 0.0133333 ] ]
938 [ [ -0.0212766 , 0.0769231 ] , [ 0.0465116 , 0.02 ] +i [ 0.0266667 , -0.0188679 ]
, [ 0.0588235 , 0.0571429 ] ]
939 [ [ 0 , 0.0253165 ] , [ 0.0108696 , 0.117647 ] +i [ 0.0224719 , 0.0277778 ] , [
0.0645161 , 0.0217391 ] ]
940 [ [ 0 , 0.0111111 ] , [ 0.285714 , 0.0232558 ] +i [ 0.037037 , 0 ] , [ 0.0357143 ,
0.0298507 ] ]
941 [ [ 0 , 0.142857 ] , [ 0.0769231 , 0.0144928 ] +i [ 0.111111 , 0 ] , [ 0.025974 ,
0.1 ] ]
942 [ [ 0.0103093 , 0.027027 ] , [ 0.181818 , 0.0645161 ] +i [ 0.0169492 , -0.0714286
] , [ 125 , 25 ] ]
943 [ [ -0.0120482 , 0.0512821 ] , [ 0.133333 , 0.0106383 ] +i [ 0.0833333 , 0.02 ] ,
[ 0.025641 , 0.0246914 ] ]
944 [ [ -0.015625 , 0.0344828 ] , [ 0.0289855 , 0.0408163 ] +i [ 0.0294118 , 0.027027 ] , [ 0.028169 , 0.0126582 ] ]
945 [ [ 0 , 0.0232558 ] , [ 0.0344828 , 0.333333 ] +i [ 0.0108696 , -0.0416667 ] , [
0.05 , 0.0416667 ] ]
946 [ [ 0.0106383 , 0.0327869 ] , [ 0.0363636 , 0.02 ] +i [ 0.1 , 0.25 ] , [ 0.0181818 ,
125 ] ]
947 [ [ -0.0227273 , 0.020202 ] , [ 0.0151515 , 0.0246914 ] +i [ 0.0526316 , 0.030303
] , [ 0.0123457 , 0.012987 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
246
948 [ [ -0.0116279 , 0.0105263 ] , [ 0.0909091 , 0.05 ] +i [ 0.181818 , 0.0142857 ] ,
[ 0.0222222 , 0.0285714 ] ]
949 [ [ -0.0138889 , 0.666667 ] , [ 0.020202 , 0.0246914 ] +i [ 0.0588235 , 0.0106383
] , [ 0.025641 , 0.0104167 ] ]
950 [ [ -0.0125 , 0.0116279 ] , [ 0.0909091 , 0.166667 ] +i [ 0.0555556 , 0 ] , [
0.111111 , 0.03125 ] ]
951 [ [ 0 , 0.0103093 ] , [ 0.0222222 , 0.05 ] +i [ 0.0111111 , 0.0454545 ] , [ 0.03125
, 25 ] ]
952 [ [ 0.0107527 , 0.0222222 ] , [ 0.0327869 , 0.04 ] +i [ 0.666667 , 0 ] , [ 0.0606061
, 0.142857 ] ]
953 [ [ 0.0125 , 0.0769231 ] , [ 0.0333333 , 0.0215054 ] +i [ 0.4 , -0.0175439 ] , [
0.0434783 , 0.0169492 ] ]
954 [ [ -0.0769231 , 0.0117647 ] , [ 0.0625 , 0.0454545 ] +i [ 0.0163934 , -0.0181818
] , [ 0.047619 , 0.010989 ] ]
955 [ [ 0.25 , 0.0125 ] , [ 0.0606061 , 0.015873 ] +i [ 0.027027 , 0 ] , [ 0.0645161 ,
0.025641 ] ]
956 [ [ 0 , 0.0277778 ] , [ 0.0208333 , 0.025641 ] +i [ 0.025974 , -0.0434783 ] , [
0.0294118 , 0.025974 ] ]
957 [ [ 0 , 0.0163934 ] , [ 0.0121951 , 0.0175439 ] +i [ 0.02 , 0.0384615 ] , [
0.0185185 , 0.0377358 ] ]
958 [ [ 0.03125 , 0.0222222 ] , [ 0.047619 , 0.111111 ] +i [ 0.0106383 , 0.0204082 ]
, [ 0.0117647 , 0.117647 ] ]
959 [ [ 0 , 0.117647 ] , [ 0.0327869 , 0.0833333 ] +i [ 0.0606061 , 0.0120482 ] , [
0.025641 , 0.0117647 ] ]
960 [ [ 0.0125 , 0.0350877 ] , [ 0.0909091 , 0.666667 ] +i [ 0.0246914 , -0.037037 ]
, [ 0.0208333 , 0.0588235 ] ]
961 [ [ 0.0125 , 1 ] , [ 0.05 , 0.0625 ] +i [ 0.0102041 , 0 ] , [ 0.0243902 , 0.0285714 ]
]
962 [ [ -0.0333333 , 0.0140845 ] , [ 0.0204082 , 0.0125 ] +i [ 0.0689655 , 0 ] , [ 0.08
, 0.0217391 ] ]
963 [ [ 0 , 0.0111111 ] , [ 0.153846 , 0.04 ] +i [ 125 , 0 ] , [ 0.0740741 , 0.0588235 ] ]
964 [ [ 0 , 0.0210526 ] , [ 0.0243902 , 0.027027 ] +i [ 0.0392157 , 0.0103093 ] , [
0.0138889 , 0.133333 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
247
965 [ [ -0.0126582 , 0.04 ] , [ 0.04 , 0.0102041 ] +i [ 0.0416667 , 0.0238095 ] , [
0.0285714 , 0.0120482 ] ]
966 [ [ -0.012987 , 0.0588235 ] , [ 0.0645161 , 0.0588235 ] +i [ 0.0181818 ,
0.0222222 ] , [ 0.0224719 , 0.0666667 ] ]
967 [ [ 0 , 1 ] , [ 0.0117647 , 0.027027 ] +i [ 0.222222 , 0.0107527 ] , [ 0.0196078 ,
0.04 ] ]
968 [ [ 0.0120482 , 0.0151515 ] , [ 0.0136986 , 0.4 ] +i [ 0.0277778 , 0 ] , [ 0.0344828
, 0.0322581 ] ]
969 [ [ 0 , 0.05 ] , [ 0.0689655 , 0.0192308 ] +i [ 0.0263158 , -0.016129 ] , [ 0.0102041
, 0.0392157 ] ]
970 [ [ 0.333333 , 0.0952381 ] , [ 0.0243902 , 0.0135135 ] +i [ 0.0240964 , 0.0128205
] , [ 0.0454545 , 0.047619 ] ]
971 [ [ 0 , 0.0606061 ] , [ 0.016129 , 0.0294118 ] +i [ 0.0123457 , 0 ] , [ 0.0384615 ,
0.0232558 ] ]
972 [ [ 0.0172414 , 0.030303 ] , [ 0.0327869 , 0.0740741 ] +i [ 0.0140845 , 0 ] , [
0.0588235 , 0.0232558 ] ]
973 [ [ 0.0208333 , 0.0153846 ] , [ 0.0208333 , 0.0136986 ] +i [ 0.0425532 , -0.25 ]
, [ 0.010101 , 0.0128205 ] ]
974 [ [ -0.0909091 , 0.0285714 ] , [ 0.0322581 , 0.0487805 ] +i [ 0.0144928 ,
0.0344828 ] , [ 0.0212766 , 0.0206186 ] ]
975 [ [ 0.027027 , 0.0229885 ] , [ 0.0266667 , 0.0172414 ] +i [ 0.0116279 , 0 ] , [
0.0416667 , 0.0277778 ] ]
976 [ [ 0.0322581 , 0.0263158 ] , [ 0.4 , 0.04 ] +i [ 0.25 , 0.047619 ] , [ 0.0111111 ,
0.0215054 ] ]
977 [ [ 0 , 0.0120482 ] , [ 0.142857 , 0.047619 ] +i [ 0.0138889 , -0.0169492 ] , [
0.05 , 0.0178571 ] ]
978 [ [ -0.0107527 , 0.5 ] , [ 125 , 0.0166667 ] +i [ 0.0350877 , 0.0136986 ] , [
0.0133333 , 0.0571429 ] ]
979 [ [ 0.0357143 , 0.142857 ] , [ 0.25 , 0.0217391 ] +i [ 0.0333333 , 0.0222222 ] , [
0.117647 , 0.0232558 ] ]
980 [ [ 0 , 0.0869565 ] , [ 0.0235294 , 0.0206186 ] +i [ 0.0555556 , 0 ] , [ 0.0666667
, 0.0425532 ] ]
981 [ [ -0.0103093 , 0.0555556 ] , [ 0.0263158 , 0.0131579 ] +i [ 0.0666667 ,
0.142857 ] , [ 0.08 , 0.0106383 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
248
982 [ [ -0.0172414 , 0.0227273 ] , [ 0.0140845 , 0.0454545 ] +i [ 0.0138889 , 0 ] , [
0.0289855 , 0.0487805 ] ]
983 [ [ 0 , 0.0222222 ] , [ 0.0204082 , 0.025974 ] +i [ 0.0625 , 0.0133333 ] , [
0.0126582 , 0.0294118 ] ]
984 [ [ 0 , 0.0434783 ] , [ 0.0689655 , 0.0163934 ] +i [ 0.117647 , 0.0147059 ] , [
0.0227273 , 0.0208333 ] ]
985 [ [ 0.0416667 , 0.037037 ] , [ 0.012987 , 0.666667 ] +i [ 0.1 , -0.0227273 ] , [
0.0106383 , 0.0212766 ] ]
986 [ [ 0.0344828 , 0.0327869 ] , [ 0.0123457 , 0.25 ] +i [ 0.0952381 , 0.0204082 ] ,
[ 1 , 0.0117647 ] ]
987 [ [ -0.0107527 , 0.0285714 ] , [ 0.0740741 , 0.0103093 ] +i [ 0.0606061 , 0 ] , [
0.0138889 , 0.0714286 ] ]
988 [ [ 0.0131579 , 0.027027 ] , [ 0.142857 , 0.0416667 ] +i [ 0.0204082 , -0.0163934
] , [ 0.0714286 , 0.0178571 ] ]
989 [ [ 0 , 0.0952381 ] , [ 0.0606061 , 0.0444444 ] +i [ 0.0526316 , 0.0714286 ] , [
0.0217391 , 0.0434783 ] ]
990 [ [ 0 , 0.0266667 ] , [ 0.0125 , 0.0689655 ] +i [ 0.03125 , 0.0125 ] , [ 0.25 ,
0.0188679 ] ]
991 [ [ -0.0111111 , 0.0246914 ] , [ 0.02 , 0.0107527 ] +i [ 0.0196078 , -25 ] , [
0.037037 , 0.0147059 ] ]
992 [ [ -0.0102041 , 0.0232558 ] , [ 0.0298507 , 0.0128205 ] +i [ 0.0416667 , 0 ] , [
0.25 , 0.0119048 ] ]
993 [ [ -0.0133333 , 0.0178571 ] , [ 0.0689655 , 0.0102041 ] +i [ 0.0175439 , 0 ] , [
0.0294118 , 0.0425532 ] ]
994 [ [ -1 , 0.0222222 ] , [ 0.0434783 , 0.5 ] +i [ 0.0243902 , 0 ] , [ 0.0243902 ,
0.0204082 ] ]
995 [ [ 0 , 1 ] , [ 0.0229885 , 0.0666667 ] +i [ 0.0416667 , 0 ] , [ 0.0208333 ,
0.0149254 ] ]
996 [ [ 0.0322581 , 0.142857 ] , [ 0.02 , 0.0625 ] +i [ 0.0227273 , 0.0285714 ] , [
0.0322581 , 0.037037 ] ]
997 [ [ 0.0138889 , 0.0263158 ] , [ 0.2 , 0.0238095 ] +i [ 0.0206186 , 0.0526316 ] , [
0.0119048 , 0.0350877 ] ]
998 [ [ -0.0285714 , 0.0322581 ] , [ 0.0128205 , 0.0416667 ] +i [ 0.0769231 , 0.0138889 ] , [ 0.0625 , 0.021978 ] ]
ANEXO E. COMPLEXOS INTERVALARES UTILIZADOS NO TESTE T
249
999 [ [ 0.0119048 , 0.0107527 ] , [ 0.0588235 , 0.4 ] +i [ 0.0133333 , 0.5 ] , [
0.0909091 , 0.0163934 ] ]
1000 [ [ 0 , 0.111111 ] , [ 0.027027 , 0.0131579 ] +i [ 0.0338983 , 0.01 ] , [ 0.0333333
, 0.0327869 ] ]
Download

JAVA-XSC: Módulo Complexo Intervalar