Numworks Epsilon
1.4.1
Graphing Calculator Operating System
e_acoshf.c
Go to the documentation of this file.
1
/* e_acoshf.c -- float version of e_acosh.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
20
one
= 1.0,
21
ln2 = 6.9314718246e-01;
/* 0x3f317218 */
22
23
float
24
acoshf
(
float
x)
25
{
26
float
t;
27
int32_t
hx;
28
GET_FLOAT_WORD
(hx,x);
29
if
(hx<0x3f800000) {
/* x < 1 */
30
return
(x-x)/(x-x);
31
}
else
if
(hx >=0x4d800000) {
/* x > 2**28 */
32
if
(hx >=0x7f800000) {
/* x is inf of NaN */
33
return
x+x;
34
}
else
35
return
logf
(x)+ln2;
/* acosh(huge)=log(2x) */
36
}
else
if
(hx==0x3f800000) {
37
return
0.0;
/* acosh(1) = 0 */
38
}
else
if
(hx > 0x40000000) {
/* 2**28 > x > 2 */
39
t=x*x;
40
return
logf
((
float
)2.0*x-
one
/(x+
sqrtf
(t-
one
)));
41
}
else
{
/* 1<x<2 */
42
t = x-
one
;
43
return
log1pf
(t+
sqrtf
((
float
)2.0*t+t*t));
44
}
45
}
log1pf
#define log1pf(x)
Definition:
math.h:148
logf
#define logf(x)
Definition:
math.h:150
acoshf
float acoshf(float x)
Definition:
e_acoshf.c:24
one
#define one
Definition:
k_tan.c:68
sqrtf
#define sqrtf(x)
Definition:
math.h:158
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_acoshf.c
Generated by
1.8.14