logb, logbf, logbl
              
  | 
             
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
           
           Défini dans l'en-tête
            
         
            
             
              <math.h>
             
            
           
           | 
         ||
| 
           
           
            
             float
            
            logbf
            
             (
            
            
             float
            
            arg
            
             )
            
            
             ;
            
           
           
          | 
         (1) | (depuis C99) | 
| 
           
           
            
             double
            
            logb
            
             (
            
            
             double
            
            arg
            
             )
            
            
             ;
            
           
           
          | 
         (2) | (depuis C99) | 
| 
           
           
            
             long
            
            
             double
            
            logbl
            
             (
            
            
             long
            
            
             double
            
            arg
            
             )
            
            
             ;
            
           
           
          | 
         (3) | (depuis C99) | 
| 
           
           Défini dans l'en-tête
            
         
            
             
              <tgmath.h>
             
            
           
           | 
         ||
| 
           
           
            
             #define logb( arg )
            
           
           
          | 
         (4) | (depuis C99) | 
        logbl
       
       est appelé. Sinon, si
       
        
         arg
        
       
       a un type entier ou le type
       
        
         
          double
         
        
       
       ,
       
        logb
       
       est appelé. Sinon,
       
        logbf
       
       est appelé.
      
       Formellement, l'exposant non biaisé est la partie entière signée de
       
        log
        
         r
        
        |arg|
       
       (retournée par cette fonction comme valeur flottante), pour un
       
        
         arg
        
       
       non nul, où
       
        r
       
       est
       
        
         FLT_RADIX
        
       
       . Si
       
        
         arg
        
       
       est sous-normal, il est traité comme s'il était normalisé.
      
         Table des matières | 
       
Paramètres
| arg | - | valeur à virgule flottante | 
Valeur de retour
Si aucune erreur ne se produit, l'exposant non biaisé de arg est renvoyé comme une valeur flottante signée.
Si une erreur de domaine se produit, une valeur définie par l'implémentation est retournée.
       Si une erreur de pôle se produit,
       
        
         -HUGE_VAL
        
       
       ,
       
        -HUGE_VALF
       
       , ou
       
        -HUGE_VALL
       
       est retourné.
      
Gestion des erreurs
       Les erreurs sont signalées comme spécifié dans
       
        
         math_errhandling
        
       
       .
      
Une erreur de domaine ou de plage peut survenir si arg est nul.
Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559),
- Si arg est ±0, -∞ est retourné et FE_DIVBYZERO est déclenché.
 - Si arg est ±∞, +∞ est retourné.
 - Si arg est NaN, NaN est retourné.
 - Dans tous les autres cas, le résultat est exact ( FE_INEXACT n'est jamais déclenché) et le mode d'arrondi actuel est ignoré.
 
Notes
POSIX exige qu'une erreur de pôle se produise si arg est ±0.
       La valeur de l'exposant retournée par
       
        logb
       
       est toujours
       
        
         
          1
         
        
       
       de moins que l'exposant retourné par
       
        
         frexp
        
       
       en raison des différentes exigences de normalisation : pour l'exposant
       
        e
       
       retourné par
       
        logb
       
       ,
       
        |arg*r
        
         -e
         
        
        |
       
       est compris entre
       
        
         
          1
         
        
       
       et
       
        r
       
       (généralement entre
       
        
         
          1
         
        
       
       et
       
        
         
          2
         
        
       
       ), mais pour l'exposant
       
        e
       
       retourné par
       
        
         frexp
        
       
       ,
       
        |arg*2
        
         -e
         
        
        |
       
       est compris entre
       
        
         
          0.5
         
        
       
       et
       
        
         
          1
         
        
       
       .
      
Exemple
Compare différentes fonctions de décomposition en virgule flottante.
#include <fenv.h> #include <float.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { double f = 123.45; printf("Given the number %.2f or %a in hex,\n", f, f); double f3; double f2 = modf(f, &f3); printf("modf() makes %.0f + %.2f\n", f3, f2); int i; f2 = frexp(f, &i); printf("frexp() makes %f * 2^%d\n", f2, i); i = logb(f); printf("logb()/logb() make %f * %d^%d\n", f/scalbn(1.0, i), FLT_RADIX, i); // error handling feclearexcept(FE_ALL_EXCEPT); printf("logb(0) = %f\n", logb(0)); if (fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
Sortie possible :
Given the number 123.45 or 0x1.edccccccccccdp+6 in hex,
modf() makes 123 + 0.45
frexp() makes 0.964453 * 2^7
logb()/logb() make 1.928906 * 2^6
logb(0) = -Inf
    FE_DIVBYZERO raised
        Références
- Norme C23 (ISO/CEI 9899:2024) :
 
- 
         
- 7.12.6.11 Les fonctions logb (p: TBD)
 
 
- 
         
- 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
 
 
- 
         
- F.10.3.11 Les fonctions logb (p: TBD)
 
 
- Norme C17 (ISO/CEI 9899:2018) :
 
- 
         
- 7.12.6.11 Les fonctions logb (p: 179-180)
 
 
- 
         
- 7.25 Mathématiques génériques <tgmath.h> (p: 373-375)
 
 
- 
         
- F.10.3.11 Les fonctions logb (p: 381)
 
 
- Norme C11 (ISO/CEI 9899:2011) :
 
- 
         
- 7.12.6.11 Les fonctions logb (p: 246)
 
 
- 
         
- 7.25 Mathématiques génériques de type <tgmath.h> (p: 373-375)
 
 
- 
         
- F.10.3.11 Les fonctions logb (p: 522)
 
 
- Norme C99 (ISO/CEI 9899:1999) :
 
- 
         
- 7.12.6.11 Les fonctions logb (p. 227)
 
 
- 
         
- 7.22 Mathématiques génériques de type <tgmath.h> (p. 335-337)
 
 
- 
         
- F.9.3.11 Les fonctions logb (p. 459)
 
 
Voir aussi
| 
          
           
            
            
            
             
              (C99)
             
            
            
             
              (C99)
             
            
           
           
          | 
        
         décompose un nombre en mantisse et puissance de
         
          2
         
          (fonction)  | 
       
| 
          
           
            
             
              (C99)
             
            
            
             
              (C99)
             
            
            
             
              (C99)
             
            
           
           
          | 
        
         extrait l'exposant du nombre donné
          (fonction)  | 
       
| 
          
           
            
             
              (C99)
             
            
            
             
              (C99)
             
            
            
             
              (C99)
             
            
            
             
              (C99)
             
            
            
             
              (C99)
             
            
            
             
              (C99)
             
            
           
           
          | 
        
         calcule efficacement un nombre multiplié par
         
          
           FLT_RADIX
          
         
         élevé à une puissance
          (fonction)  | 
       
| 
          
          
           
            Documentation C++
           
          
          pour
          
           
            logb
           
          
          
         | 
       |