Tipo de dados complexos - Complex data type

Algumas linguagens de programação fornecem um tipo de dados complexo para armazenamento de números complexos e aritmética como um tipo de dados embutido (primitivo) .

Em alguns ambientes de programação, o termo tipo de dados complexo (em contraste com tipos de dados primitivos ) é um sinônimo para o tipo de dados composto .

Aritmética de números complexos

Uma variável ou valor complexo geralmente é representado como um par de números de ponto flutuante . Linguagens que suportam um tipo de dados complexo geralmente fornecem sintaxe especial para construir tais valores e estendem as operações aritméticas básicas ('+', '-', '×', '÷') para agir sobre eles. Essas operações são geralmente traduzidas pelo compilador em uma sequência de instruções de máquina de ponto flutuante ou em chamadas de biblioteca . Essas linguagens também podem fornecer suporte para outras operações, como formatação, teste de igualdade, etc. Como na matemática , essas linguagens frequentemente interpretam um valor de ponto flutuante como equivalente a um valor complexo com uma parte imaginária zero.

Suporte de linguas

  • O tipo FORTRAN COMPLEX.
  • O padrão C99 da linguagem de programação C inclui tipos de dados complexos e funções matemáticas complexas no cabeçalho da biblioteca padrão .<complex.h>
  • A biblioteca padrão C ++ fornece uma complexclasse de modelo, bem como funções matemáticas complexas no <complex>cabeçalho.
  • A linguagem de programação Go tem tipos embutidos complex64(cada componente é float de 32 bits) e complex128(cada componente é float de 64 bits).
  • O módulo principal do Perl Math :: Complex fornece suporte para números complexos.
  • Python fornece o complextipo integrado . Literais de números imaginários podem ser especificados anexando um "j". Funções matemáticas complexas são fornecidas no módulo de biblioteca padrão cmath.
  • Ruby fornece uma classe Complex no complexo de módulo de biblioteca padrão .
  • OCaml suporta números complexos com o módulo de biblioteca padrão Complex .
  • Haskell suporta números complexos com o módulo de biblioteca padrão Data.Complex (anteriormente denominado Complex ).
  • O Mercury fornece números complexos com suporte total à sobrecarga de operador na distribuição de extras, usando libcomplex_numbers .
  • Java não tem uma classe de número complexo padrão, mas existem várias implementações gratuitas incompatíveis de uma classe de número complexo:
    • A biblioteca Apache Commons Math fornece números complexos para Java com sua classe Complex .
    • A biblioteca JScience possui uma classe de número complexo .
    • A biblioteca JAS permite o uso de números complexos.
    • O Netlib tem uma classe de número complexa para Java.
    • javafastcomplex também adiciona suporte a números complexos para Java
    • jcomplexnumber é um projeto de implementação de número complexo em Java.
    • JLinAlg inclui números complexos com precisão arbitrária.
  • Common Lisp : O padrão ANSI Common Lisp suporta números complexos de floats, racionais e inteiros de precisão arbitrária. Suas funções matemáticas básicas são definidas para números complexos, quando aplicável. Por exemplo, a raiz quadrada de -1 é um número complexo:
     ? (sqrt -1)
    #C(0 1)            ; the result of (sqrt -1)
    
  • Esquema : Números complexos e funções (por exemplo sin) estão incluídos na especificação do idioma. Sua implementação, entretanto, é opcional no padrão R5RS, enquanto no R6RS é obrigatória.
  • O .NET Framework fornece System.Numerics.Complex desde a versão 4.0.
  • O BASIC inteligente para iOS naturalmente suporta números complexos em notação a + bi . Qualquer variável, operação matemática ou função pode aceitar números reais e complexos como argumentos e retornar números reais ou complexos dependendo do resultado. Por exemplo, a raiz quadrada de -4 é um número complexo:
    PRINT SQRT(-4)
    2i
    
  • Julia inclui tipos predefinidos para números complexos e racionais desde pelo menos a versão 0.3

Referências