Numworks Epsilon
1.4.1
Graphing Calculator Operating System
e_atanhf.c
Go to the documentation of this file.
1
/* e_atanhf.c -- float version of e_atanh.c.
2
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
3
*/
4
5
/*
6
* ====================================================
7
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
8
*
9
* Developed at SunPro, a Sun Microsystems, Inc. business.
10
* Permission to use, copy, modify, and distribute this
11
* software is freely granted, provided that this notice
12
* is preserved.
13
* ====================================================
14
*/
15
16
#include "math.h"
17
#include "
math_private.h
"
18
19
static
const
float
one
= 1.0, huge = 1e30;
20
static
const
float
zero = 0.0;
21
22
float
23
atanhf
(
float
x)
24
{
25
float
t;
26
int32_t
hx,ix;
27
GET_FLOAT_WORD
(hx,x);
28
ix = hx&0x7fffffff;
29
if
(ix>0x3f800000)
/* |x|>1 */
30
return
(x-x)/(x-x);
31
if
(ix==0x3f800000)
32
return
x/zero;
33
if
(ix<0x31800000&&(huge+x)>zero)
return
x;
/* x<2**-28 */
34
SET_FLOAT_WORD
(x,ix);
35
if
(ix<0x3f000000) {
/* x < 0.5 */
36
t = x+x;
37
t = (float)0.5*
log1pf
(t+t*x/(
one
-x));
38
}
else
39
t = (float)0.5*
log1pf
((x+x)/(
one
-x));
40
if
(hx>=0)
return
t;
else
return
-t;
41
}
log1pf
#define log1pf(x)
Definition:
math.h:148
atanhf
float atanhf(float x)
Definition:
e_atanhf.c:23
one
#define one
Definition:
k_tan.c:68
SET_FLOAT_WORD
#define SET_FLOAT_WORD(d, i)
Definition:
math_private.h:335
GET_FLOAT_WORD
#define GET_FLOAT_WORD(i, d)
Definition:
math_private.h:326
int32_t
signed int int32_t
Definition:
stdint.h:11
math_private.h
epsilon
liba
src
external
openbsd
e_atanhf.c
Generated by
1.8.14