25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER START
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * The contents of this file are subject to the terms of the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Common Development and Distribution License (the "License").
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You may not use this file except in compliance with the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * See the License for the specific language governing permissions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and limitations under the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER END
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Copyright (C) 1989 AT&T */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* All Rights Reserved */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Use is subject to license terms.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifndef _FLOATINGPOINT_H
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define _FLOATINGPOINT_H
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __STDC__
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#include <stdio_tag.h>
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#include <sys/ieeefp.h>
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __cplusplus
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern "C" {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * <floatingpoint.h> contains definitions for constants, types, variables,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and functions for:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * IEEE floating-point arithmetic base conversion;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * IEEE floating-point arithmetic modes;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * IEEE floating-point arithmetic exception handling.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifndef __P
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __STDC__
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define __P(p) p
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#else
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define __P(p) ()
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif /* !defined(__P) */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#if defined(__STDC__) && !defined(_FILEDEFED)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define _FILEDEFED
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef __FILE FILE;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define N_IEEE_EXCEPTION 5 /* Number of floating-point exceptions. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef int sigfpe_code_type; /* Type of SIGFPE code. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef void (*sigfpe_handler_type)(); /* Pointer to exception handler */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SIGFPE_DEFAULT (void (*)())0 /* default exception handling */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SIGFPE_IGNORE (void (*)())1 /* ignore this exception or code */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SIGFPE_ABORT (void (*)())2 /* force abort on exception */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern sigfpe_handler_type sigfpe __P((sigfpe_code_type, sigfpe_handler_type));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Types for IEEE floating point.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef float single;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifndef _EXTENDED
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define _EXTENDED
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef unsigned extended[3];
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef long double quadruple; /* Quadruple-precision type. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef unsigned fp_exception_field_type;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * A field containing fp_exceptions OR'ed
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * together.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Definitions for base conversion.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define DECIMAL_STRING_LENGTH 512 /* Size of buffer in decimal_record. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef char decimal_string[DECIMAL_STRING_LENGTH];
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* Decimal significand. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef struct {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis enum fp_class_type fpclass;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int sign;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int exponent;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis decimal_string ds; /* Significand - each char contains an ascii */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* digit, except the string-terminating */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* ascii null. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int more; /* On conversion from decimal to binary, != 0 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* indicates more non-zero digits following */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* ds. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int ndigits; /* On fixed_form conversion from binary to */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* decimal, contains number of digits */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* required for ds. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis} decimal_record;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisenum decimal_form {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fixed_form, /* Fortran F format: ndigits specifies number */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* of digits after point; if negative, */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* specifies rounding to occur to left of */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* point. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis floating_form /* Fortran E format: ndigits specifies number */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* of significant digits. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis};
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtistypedef struct {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis enum fp_direction_type rd;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* Rounding direction. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis enum decimal_form df; /* Format for conversion from binary to */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* decimal. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int ndigits; /* Number of digits for conversion. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis} decimal_mode;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisenum decimal_string_form { /* Valid decimal number string formats. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis invalid_form, /* Not a valid decimal string format. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis whitespace_form, /* All white space - valid in Fortran! */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fixed_int_form, /* <digs> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fixed_intdot_form, /* <digs>. */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fixed_dotfrac_form, /* .<digs> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fixed_intdotfrac_form, /* <digs>.<frac> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis floating_int_form, /* <digs><exp> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis floating_intdot_form, /* <digs>.<exp> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis floating_dotfrac_form, /* .<digs><exp> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis floating_intdotfrac_form, /* <digs>.<digs><exp> */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis inf_form, /* inf */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis infinity_form, /* infinity */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis nan_form, /* nan */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis nanstring_form /* nan(string) */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis};
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void single_to_decimal __P((single *, decimal_mode *, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void double_to_decimal __P((double *, decimal_mode *, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void extended_to_decimal __P((extended *, decimal_mode *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis decimal_record *, fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void quadruple_to_decimal __P((quadruple *, decimal_mode *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis decimal_record *, fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void decimal_to_single __P((single *, decimal_mode *, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void decimal_to_double __P((double *, decimal_mode *, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void decimal_to_extended __P((extended *, decimal_mode *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis decimal_record *, fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void decimal_to_quadruple __P((quadruple *, decimal_mode *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis decimal_record *, fp_exception_field_type *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void string_to_decimal __P((char **, int, int, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis enum decimal_string_form *, char **));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void func_to_decimal __P((char **, int, int, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis enum decimal_string_form *, char **,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int (*)(void), int *, int (*)(int)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern void file_to_decimal __P((char **, int, int, decimal_record *,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis enum decimal_string_form *, char **,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis FILE *, int *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *seconvert __P((single *, int, int *, int *, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *sfconvert __P((single *, int, int *, int *, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *sgconvert __P((single *, int, int, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *econvert __P((double, int, int *, int *, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *fconvert __P((double, int, int *, int *, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *gconvert __P((double, int, int, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *qeconvert __P((quadruple *, int, int *, int *, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *qfconvert __P((quadruple *, int, int *, int *, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *qgconvert __P((quadruple *, int, int, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *ecvt __P((double, int, int *, int *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *fcvt __P((double, int, int *, int *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern char *gcvt __P((double, int, char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#if __cplusplus >= 199711L
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisnamespace std {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * ANSI C Standard says the following entry points should be
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * prototyped in <stdlib.h>. They are now, but weren't before.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern double atof __P((const char *));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern double strtod __P((const char *, char **));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#if __cplusplus >= 199711L
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis}
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisusing std::atof;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisusing std::strtod;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif /* end of namespace std */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __cplusplus
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis}
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif /* _FLOATINGPOINT_H */