w_log.c revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng/* @(#)w_log.c 5.1 93/09/24 */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng/*
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * ====================================================
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * Developed at SunPro, a Sun Microsystems, Inc. business.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * Permission to use, copy, modify, and distribute this
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * software is freely granted, provided that this notice
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * is preserved.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * ====================================================
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include <LibConfig.h>
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include <sys/EfiCdefs.h>
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#if defined(LIBM_SCCS) && !defined(lint)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng__RCSID("$NetBSD: w_log.c,v 1.9 2002/05/26 22:02:02 wiz Exp $");
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng/*
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * wrapper log(x)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include "math.h"
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include "math_private.h"
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengdouble
da14cebe459d3275048785f25bd869cb09b5307fEric Chenglog(double x) /* wrapper log */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng{
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#ifdef _IEEE_LIBM
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng return __ieee754_log(x);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#else
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng double z;
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng z = __ieee754_log(x);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng if(_LIB_VERSION == _IEEE_ || isnan(x) || x > 0.0) return z;
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng if(x==0.0)
return __kernel_standard(x,x,16); /* log(0) */
else
return __kernel_standard(x,x,17); /* log(x<0) */
#endif
}