.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" 2000-08-14 added GNU additions from Andreas Jaeger .\" 2000-12-05 some changes inspired by acahalan's remarks .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fenv 3 "2 maio 2024" "Linux man\-pages 6.9.1" .SH NOME feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- tratamento de exceção e arredondamento de ponto flutuante .SH BIBLIOTECA Biblioteca matemática (\fIlibm\fP, \fI\-lm\fP) .SH SINOPSE .nf \fB#include \fP .P \fBint feclearexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fegetexceptflag(fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP \fBint feraiseexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fesetexceptflag(const fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP \fBint fetestexcept(int \fP\fIexcepts\fP\fB);\fP .P \fBint fegetround(void);\fP \fBint fesetround(int \fP\fIrounding_mode\fP\fB);\fP .P \fBint fegetenv(fenv_t *\fP\fIenvp\fP\fB);\fP \fBint feholdexcept(fenv_t *\fP\fIenvp\fP\fB);\fP \fBint fesetenv(const fenv_t *\fP\fIenvp\fP\fB);\fP \fBint feupdateenv(const fenv_t *\fP\fIenvp\fP\fB);\fP .fi .SH DESCRIÇÃO Estas onze funções foram definidas no C99, e descrevem o tratamento de arredondamento e exceções de ponto flutuante (estouro de representação, divisão por zero, etc.). .SS Exceções A exceção \fIdivide\-by\-zero\fP ocorre quando uma operação sobre números finitos produz infinito como resposta exata. .P A exceção \fIoverflow\fP ocorre quando um resultado tem de ser representado como um número de ponto flutuante, mas tem valor absoluto (muito) maior que o maior número de ponto flutuante (finito) que é representável. .P A exceção \fIunderflow\fP ocorre quando um resultado tem de ser representado como um número de ponto flutuante, mas tem valor absoluto menor que o menor número de ponto flutuante positivo normalizado (e perderia muita precisão se representado como um número desnormalizado). .P A exceção \fIinexact\fP ocorre quando o resultado arredondado de uma operação não é igual ao resultado de precisão infinita. Ela pode ocorrer quando quer que \fIoverflow\fP ou \fIunderflow\fP ocorram. .P A exceção \fIinvalid\fP ocorre quando não há resultado bem definido para uma operação, como para 0/0 ou infinito \- infinito ou sqrt(\-1). .SS "Tratamento de Exceções" Exceções são representadas de duas formas: como um único bit (exceção presente/ausente), e esses bits correspondem em alguma forma definida pela implementação com posições de bit em um inteiro, e também como uma estrutura opaca que pode conter mais informação sobre a exceção (talvez o endereço de código onde ela ocorreu). .P Cada uma das macros \fBFE_DIVBYZERO\fP, \fBFE_INEXACT\fP, \fBFE_INVALID\fP, \fBFE_OVERFLOW\fP, \fBFE_UNDERFLOW\fP é definida quando a implementação suporta tratamento da exceção correspondente, e, se sim, então define o(s) bit(s) correspondente(s), de forma que se possa chamar funções de tratamento de exceções, por exemplo, usando o argumento inteiro \fBFE_OVERFLOW\fP|\fBFE_UNDERFLOW\fP. Outras exceções podem ser suportadas. A macro \fBFE_ALL_EXCEPT\fP é o OR bit a bit de todos os bits correspondendo a exceções suportadas. .P A função \fBfeclearexcept\fP() desabilita as exceções suportadas representadas pelos bits no seu argumento. .P A função \fBfegetexceptflag\fP() armazena uma representação do estado dos indicadores de exceção representados pelo argumento \fIexcepts\fP no objeto opaco \fI*flagp\fP. .P A função \fBferaiseexcept\fP() dispara as exceções suportadas representadas pelos bits em \fIexcepts\fP. .P A função \fBfesetexceptflag\fP() define o estado completo para as exceções representadas por \fIexcepts\fP para o valor \fI*flagp\fP. Esse valor deve ter sido obtido por uma chamada anterior a \fBfegetexceptflag\fP() com um último argumento que contivesse todos os bits em \fIexcepts\fP. .P A função \fBfetestexcept\fP() retorna uma palavra na qual os bits definidos são os definidos no argumento \fIexcepts\fP e para os quais a exceção correspondente está atualmente habilitada. .SS "Modo de arredondamento" O modo de arredondamento determina como o resultado de operações de ponto flutuante é tratado quando o resultado não pode ser representado exatamente no significando. Vários modos de arredondamento podem ser fornecidos: arredondar para o mais próximo (o padrão), arredondar para cima (em direção ao infinito positivo), arredondar para baixo (em direção ao infinito negativo) e arredondar para zero. .P Cada uma das macros \fBFE_TONEAREST\fP, \fBFE_UPWARD\fP, \fBFE_DOWNWARD\fP e \fBFE_TOWARDZERO\fP é definida quando a implementação suporta obter e definir a direção de arredondamento correspondente. .P A função \fBfegetround\fP() retorna a macro correspondente ao modo de arredondamento atual. .P A função \fBfesetround\fP() define o modo de arredondamento como especificado por seu argumento e retorna zero quando for bem sucedida. .P C99 e POSIX.1\-2008 especificam um identificador, \fBFLT_ROUNDS\fP, definido em \fI\fP, que indica o comportamento de arredondamento definido pela implementação para adição de ponto flutuante. Este identificador tem um dos seguintes valores: .TP \fB\-1\fP O modo de arredondamento não é determinável. .TP \fB0\fP O arredondamento é para 0. .TP \fB1\fP O arredondamento é para o número mais próximo. .TP \fB2\fP O arredondamento é em direção ao infinito positivo. .TP \fB3\fP O arredondamento é em direção ao infinito negativo. .P Outros valores representam modos de arredondamento não padronizados e dependentes da máquina. .P O valor de \fBFLT_ROUNDS\fP deve refletir o modo de arredondamento atual definido por \fBfesetround\fP() (mas veja BUGS). .SS "Ambiente de Ponto Flutuante" O ambiente de ponto flutuante inteiro, incluindo modos de controle e indicadores de estado, pode ser tratado como um objeto opaco, de tipo \fIfenv_t\fP. O ambiente padrão é denotado por \fBFE_DFL_ENV\fP (de tipo \fIconst fenv_t\ *\fP). Essa é a definição do ambiente ao início do programa e é definida por ISO C como tendo arredondamento para o mais próximo, todas as exceções desabilitadas e um modo 'non\-stop' (continuar nas exceções). .P A função \fBfegetenv\fP() salva o ambiente de ponto flutuante atual no objeto \fI*envp\fP. .P A função \fBfeholdexcept\fP() faz o mesmo, então zera todos indicadores de exceção, e define um modo 'non\-stop' (continuar nas exceções), se disponível. Ela retorna zero quando bem sucedida. .P A função \fBfesetenv\fP() restaura o ambiente de ponto flutuante do objeto \fI*envp\fP. Esse objeto deve ser reconhecidamente válido, por exemplo, o resultado de uma chamada a \fBfegetenv\fP() ou \fBfeholdexcept\fP() ou igual a \fBFE_DFL_ENV\fP. Essa chamada não dispara exceções. .P A função \fBfeupdateenv\fP() instala o ambiente de ponto flutuante representado pelo objeto \fI*envp\fP, exceto que as exceções que estão atualmente disparadas não são desabilitadas. Depois de chamar essa função, as exceções disparadas serão o OR bit a bit daquelas previamente definidas com aquelas em \fI*envp\fP. Como antes, o objeto \fI*envp\fP deve ser reconhecido como sendo válido. .SH "VALOR DE RETORNO" .\" Earlier seven of these functions were listed as returning void. .\" This was corrected in Corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001(E)) .\" of the C99 Standard. Essas funções retornam zero em caso de sucesso e diferente de zero se ocorrer um erro. .SH ATRIBUTOS Para uma explicação dos termos usados nesta seção, consulte \fBattributes\fP(7). .nh .TS allbox; lbx lb lb l l l. Interface Atributo Valor T{ .na .nh \fBfeclearexcept\fP(), \fBfegetexceptflag\fP(), \fBferaiseexcept\fP(), \fBfesetexceptflag\fP(), \fBfetestexcept\fP(), \fBfegetround\fP(), \fBfesetround\fP(), \fBfegetenv\fP(), \fBfeholdexcept\fP(), \fBfesetenv\fP(), \fBfeupdateenv\fP(), \fBfeenableexcept\fP(), \fBfedisableexcept\fP(), \fBfegetexcept\fP() T} Thread safety T{ .na .nh MT\-Safe T} .TE .hy .SH PADRÕES C11, POSIX.1\-2008, IEC 60559 (IEC 559:1989), ANSI/IEEE 854. .SH HISTÓRICO C99, POSIX.1\-2001. glibc 2.1. .SH NOTAS .SS "Notas sobre glibc" Se possível, a Biblioteca C GNU define a macro \fBFE_NOMASK_ENV\fP a qual representa um ambiente em que toda exceção disparada causa a ocorrência de uma captura. Você pode testar por essa macro usando \fB#ifdef\fP. Ela só é definida se \fB_GNU_SOURCE\fP estiver definida. O padrão C99 não define uma forma de definir bits individuais na máscara de ponto flutuante, por exemplo, para capturar quando de indicadores específicos. glibc 2.2 suportará as funções \fIfeenableexcept\fP() e \fIfedisableexcept\fP() para definir capturas de ponto flutuante individuais, e \fIfegetexcept\fP() para obter o estado. .P .nf \fB#define _GNU_SOURCE\fP /* Veja feature_test_macros(7) */ \fB#include \fP .P \fBint feenableexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fedisableexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fegetexcept(void);\fP .fi .P As funções \fBfeenableexcept\fP() e \fBfedisableexcept\fP() habilitam (desabilitam) capturas para cada uma das exceções representadas por \fIexcepts\fP e retornam o conjunto anterior de exceções habilitadas quando bem sucedida, e \-1 caso contrário. A função \fBfegetexcept\fP() retorna o conjunto de todas as exceções atualmente habilitadas. .SH BUGS .\" Aug 08, glibc 2.8 .\" See http://gcc.gnu.org/ml/gcc/2002-02/msg01535.html C99 especifica que o valor de \fBFLT_ROUNDS\fP deve refletir alterações no modo de arredondamento atual, conforme definido por \fBfesetround\fP(). Atualmente, isso não ocorre: \fBFLT_ROUNDS\fP sempre tem o valor 1. .SH "VEJA TAMBÉM" \fBmath_error\fP(7) .PP .SH TRADUÇÃO A tradução para português brasileiro desta página man foi criada por Marcelo M. de Abreu , André Luiz Fassone e Rafael Fontenelle . . .PP Esta tradução é uma documentação livre; leia a .UR https://www.gnu.org/licenses/gpl-3.0.html Licença Pública Geral GNU Versão 3 .UE ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita. .PP Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para .MT debian-l10n-portuguese@lists.debian.org a lista de discussão de tradutores .ME .