# Mathomatic

Mathomatic é um sistema algébrico computacional multiplataforma, livre e de código aberto, de propósito geral que pode, simbolicamente, resolver, simplificar, combinar e comparar equações algébricas, bem como representar números complexos, aritmética modular e polinomial, juntamente à aritmética padrão. Ele faz alguns cálculos simbólicos (derivada, extremos, série de Taylor e integração simbólica de polinômios, assim como a Transformada de Laplace), integração numérica e suporta toda a álgebra elementar, exceto logaritmos. As funções trigonométricas podem ser introduzidas e manipuladas utilizando-se exponencial complexa, com o preprocessador GNU M4. Não estão atualmente implementadas as funções gerais como f(x), aritmética de precisão arbitrária e de intervalos e matrizes.

## Recursos

O Mathomatic se destaca ao resolver, diferenciar, simplificar, calcular e visualizar álgebra elementar. Ele também realiza somatórios, multiplicações e exibição automática de cálculos de qualquer tamanho ao ligar valores sequenciais ou de teste em qualquer formula, aproximando-a e simplificando-a antes de exibí-la.
Resultados intermediários (exibição do trabalho) podem ser visualizados ao digitarmos previamente "set debug 1". Isso funciona para resoluções e para quase todos os comandos no Mathomatic. O comando "set debug 2" revela ainda mais detalhes sobre o trabalho realizado.
O software não inclui uma interface gráfica exceto com a marca registrada Mathomatic autorizada, versões para smartphones e tablets rodando iOS. ou Android. O software livre Mathomatic, disponível na página oficial, está autorizado para uso em qualquer outro tipo de software, devido à sua licença livre GNU LGPL. Ele está disponível como uma biblioteca livre e como uma aplicação em modo console que utiliza uma linha de comando colorida com saída amigável à impressão que roda em um emulador de terminal sob quaisquer sistemas operacionais A interface do console é muito simples e requer pouco mais do que aprender a notação algébrica básica para começar. Toda a entrada e saída se dá em uma linha por vez de texto ASCII. Por padrão, a entrada e a saída são os fluxos padrão do sistema. O Mathomatic é tipicamente compilado com o editline ou o GNU readline para entrada mais fácil.
Não há capacidades de programação; o interpretador funciona como uma calculadora algébrica. Expressões e equações são na notação infixa algébrica padrão. As operações são realizadas sobre elas ao se entrar com comandos em Inglês simples.
Pelo fato de toda a aritmética numérica ser de precisão dupla, o ponto flutuante, e erros de arredondamento não são rastreados. O Mathomatic não é adequado para aplicações que requerem alta precisão, tais como cálculos astronômicos. É útil para cálculos simbólico-numéricos com precisão de cerca de 14 dígitos, embora muitos resultados serão exatos, se possível.
O Mathomatic pode ser usado como uma ferramenta de geração de código de aritmética de ponto flutuante ou de inteiros e também para simplificar e converter equações em atribuições otimizadas nas linguagens Python, C, e Java. Os resultados podem ser compatíveis com muitos outros programas matemáticos, exceto os formatos de entrada e de saída TeX e MathML, que estão atualmente indisponíveis. Os caracteres ASCII que são permitidos nos nomes das variáveis do Mathomatic são configuráveis, permitindo nomes de variáveis no formato TeX.
O código-fonte do Mathomatic pode ser compilado como uma biblioteca de matemática simbólica com uma API muito simples, que pode ser conectada a programas em C compatíveis que necessitem usar o motor de matemática simbólica do Mathomatic.

## Exemplos de sessão

Exemplo de geração de código e de resolução, onde o trabalho é exibido:

## História

O desenvolvimento do Mathomatic iniciou no ano de 1986 por George Gesslein II, como um experimento em matemática computacional. Foi originalmente escrito em Microsoft C para MS-DOS. As versões 1 e 2 foram publicadas pela Dynacomp de Rochester, Nova York, em 1987 e 1988 como um produto de software científico para DOS. Mais tarde, foi lançado como shareware e, então, como emailware, com um programa de desenho de gráficos bidimensionais de funções. Na virada do milênio, o Mathomatic foi portado para o Compilador C GNU sob o Linux e se tornou software livre. O programa gráfico foi descontinuado; o desenho de gráficos 2D/3D de equações agora é realizado com o gnuplot.
O nome "Mathomatic" é um amálgama de "math" e "automatic" e foi inspirado pelo nome e pela automação do Rog-O-Matic, que foi um dos primeiros experimentos em inteligência artificial.

## Plataformas disponíveis

Mathomatic está disponível para quase todas as plataformas, incluindo Microsoft Windows usando MinGW. Ele está disponível para o Mac OS X, for iOS, para o Android, a para o Nintendo DS sob o DSLinux e como aplicativo autônomo. Fedora Linux, Slackware, Debian, Ubuntu, Gentoo Linux, e todas as principais distribuições do BSD incluem o Mathomatic como um pacote automaticamente instalável. Existe um porte para JavaScript usando Emscripten, permitindo ao Mathomatic rodar em um navegador. Os portes são todos mantidos por indivíduos autônomos.

## Requisitos

Construir o programa a partir do código-fonte requer um compilador C com as bibliotecas padrão do C. Se o Mathomatic for compilado com o GCC ou com o Tiny C Compiler para um sistema operacional tipo Unix, nenhuma modificação precisa ser feita no código-fonte. O Mathomatic não usa códigos especiais exclusivos do GCC e então geralmente compilará com facilidade com qualquer compilador C. A utilização da Biblioteca de Matemática Simbólica do Mathomatic permite misturar linguagens de programação e é independente do sistema operacional.
O Mathomatic pode ser portado para qualquer computador com pelo menos 1 megabyte de memória RAM livre. A distribuição padrão do Mathomatic requer, por padrão, um máximo de 400 megabytes, dependendo do tamanho dos espaços de equações e de quantas expressões foram inseridas. Os espaços de equações são arrays de tamanho fixo que são alocados conforme necessário e seus tamanhos são definidos durante a compilação ou na inicialização do programa. Cada expressão algébrica ou equação introduzida na linha de comando principal é armazenada em um espaço de equação.
O Mathomatic faz a maioria das manipulações simbólicas com movimentos de memória, como um programa em linguagem assembly. Isso faz o programa travar quando usado com o novo módulo LLVM, que parece incompatível com a função memmove da biblioteca C padrão. Para usar o Mathomatic com um compilador C que utiliza um módulo LLVM, é necessário desabilitar todas as otimizações com "-O0" na linha de comando do compilador C. Caso contrário, os testes de regressão entrarão em um loop infinito. Este é provavelmente um problema de otimização no LLVM. Para auxiliar as tentativas de depurar esse erro de otimização, o Mathomatic falhará quando o LLVM otimizar a simplificação de (32^.5) para 4*(2^.5) e, de forma semelhante, levará para um loop infinito.