// -*- C++ -*-
/***************************************************************************
 *
 * _cfloat.h - C++ Standard library interface to the ANSI C header float.h
 *
 * $Id: //stdlib/dev/include/ansi/_cfloat.h#10 $
 *
 ***************************************************************************
 *
 * Copyright (c) 1994-2005 Quovadx,  Inc., acting through its  Rogue Wave
 * Software division. Licensed under the Apache License, Version 2.0 (the
 * "License");  you may  not use this file except  in compliance with the
 * License.    You    may   obtain   a   copy   of    the   License    at
 * http://www.apache.org/licenses/LICENSE-2.0.    Unless   required    by
 * applicable law  or agreed to  in writing,  software  distributed under
 * the License is distributed on an "AS IS" BASIS,  WITHOUT WARRANTIES OR
 * CONDITIONS OF  ANY KIND, either  express or implied.  See  the License
 * for the specific language governing permissions  and limitations under
 * the License.
 * 
 **************************************************************************/

#ifndef _RWSTD_CFLOAT_H_INCLUDED
#define _RWSTD_CFLOAT_H_INCLUDED


#include <rw/_defs.h>


#define FLT_ROUNDS       _RWSTD_FLT_ROUNDS

#define FLT_DIG          _RWSTD_FLT_DIG
#define FLT_MANT_DIG     _RWSTD_FLT_MANT_DIG
#define FLT_MAX_10_EXP   _RWSTD_FLT_MAX_10_EXP
#define FLT_MAX_EXP      _RWSTD_FLT_MAX_EXP
#define FLT_MIN_10_EXP   _RWSTD_FLT_MIN_10_EXP
#define FLT_MIN_EXP      _RWSTD_FLT_MIN_EXP
#define FLT_RADIX        _RWSTD_FLT_RADIX
#define FLT_MAX          _RWSTD_FLT_MAX
#define FLT_MIN          _RWSTD_FLT_MIN
#define FLT_EPSILON      _RWSTD_FLT_EPSILON

#define DBL_DIG          _RWSTD_DBL_DIG
#define DBL_MANT_DIG     _RWSTD_DBL_MANT_DIG
#define DBL_MAX_10_EXP   _RWSTD_DBL_MAX_10_EXP
#define DBL_MAX_EXP      _RWSTD_DBL_MAX_EXP
#define DBL_MIN_10_EXP   _RWSTD_DBL_MIN_10_EXP
#define DBL_MIN_EXP      _RWSTD_DBL_MIN_EXP
#define DBL_MAX          _RWSTD_DBL_MAX
#define DBL_MIN          _RWSTD_DBL_MIN
#define DBL_EPSILON      _RWSTD_DBL_EPSILON

#define LDBL_DIG         _RWSTD_LDBL_DIG
#define LDBL_MANT_DIG    _RWSTD_LDBL_MANT_DIG
#define LDBL_MAX_10_EXP  _RWSTD_LDBL_MAX_10_EXP
#define LDBL_MAX_EXP     _RWSTD_LDBL_MAX_EXP
#define LDBL_MIN_10_EXP  _RWSTD_LDBL_MIN_10_EXP
#define LDBL_MIN_EXP     _RWSTD_LDBL_MIN_EXP
#define LDBL_MAX         _RWSTD_LDBL_MAX
#define LDBL_MIN         _RWSTD_LDBL_MIN
#define LDBL_EPSILON     _RWSTD_LDBL_EPSILON

#endif   // _RWSTD_CFLOAT_H_INCLUDED
