---
name: "fmax"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/fmax"
---

# fmax(3)

floating-point maximum and minimum functions

## NAME

**fmax**, **fmaxf**, **fmaxl**, **fmin**, **fminf**, **fminl** – floating-point maximum and minimum functions

## LIBRARY

Math Library (libm, -lm)

## SYNOPSIS

**#include \<math.h\>**

*double*\

**fmax**(*double x*, *double y*);

*float*\

**fmaxf**(*float x*, *float y*);

*long double*\

**fmaxl**(*long double x*, *long double y*);

*double*\

**fmin**(*double x*, *double y*);

*float*\

**fminf**(*float x*, *float y*);

*long double*\

**fminl**(*long double x*, *long double y*);

## DESCRIPTION

The **fmax**(), **fmaxf**(), and **fmaxl**() functions return the larger of *x* and *y*, and likewise, the **fmin**(), **fminf**(), and **fminl**() functions return the smaller of *x* and *y*. If one argument is an , then the other argument is returned. If both arguments are s, then the result is an . These routines do not raise any floating-point exceptions.

## SEE ALSO

[fabs(3)](/fabs/3.md), [fdim(3)](/fdim/3.md), [math(3)](/math/3.md)

## STANDARDS

The **fmax**(), **fmaxf**(), **fmaxl**(), **fmin**(), **fminf**(), and **fminl**() functions conform to ISO/IEC 9899:1999 (“ISO C99”).

## CAVEATS

The library implementations of these functions treat +0.0 as being larger than -0.0. This behavior is not specified by the C standard, is not portable, and may not occur in light of compiler optimizations. Applications requiring specific handling of signed zeroes or values are recommended to use [fmaximum\_num(3)](/fmaximum_num/3.md) and [fminimum\_num(3)](/fminimum_num/3.md) instead, which have strictly defined behavior for these cases.

## HISTORY

These routines first appeared in FreeBSD 5.3.
