// -*- C++ -*-
/***************************************************************************
 *
 * _cfloat.h - C++ Standard library interface to the ANSI C header float.h
 *
 * $Id$
 *
 ***************************************************************************
 *
 * Licensed to the Apache Software  Foundation (ASF) under one or more
 * contributor  license agreements.  See  the NOTICE  file distributed
 * with  this  work  for  additional information  regarding  copyright
 * ownership.   The ASF  licenses this  file to  you 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.
 *
 * Copyright 1994-2006 Rogue Wave Software.
 * 
 **************************************************************************/

#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
