Numworks Epsilon
1.4.1
Graphing Calculator Operating System
e_sinhf.c
Go to the documentation of this file.
1
/* e_sinhf.c -- float version of e_sinh.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, shuge = 1.0e37;
20
21
float
22
sinhf
(
float
x)
23
{
24
float
t,w,h;
25
int32_t
ix,jx;
26
27
GET_FLOAT_WORD
(jx,x);
28
ix = jx&0x7fffffff;
29
30
/* x is INF or NaN */
31
if
(ix>=0x7f800000)
return
x+x;
32
33
h = 0.5;
34
if
(jx<0) h = -h;
35
/* |x| in [0,22], return sign(x)*0.5*(E+E/(E+1))) */
36
if
(ix < 0x41b00000) {
/* |x|<22 */
37
if
(ix<0x31800000)
/* |x|<2**-28 */
38
if
(shuge+x>
one
)
return
x;
/* sinh(tiny) = tiny with inexact */
39
t =
expm1f
(
fabsf
(x));
40
if
(ix<0x3f800000)
return
h*((float)2.0*t-t*t/(t+
one
));
41
return
h*(t+t/(t+
one
));
42
}
43
44
/* |x| in [22, log(maxdouble)] return 0.5*exp(|x|) */
45
if
(ix < 0x42b17180)
return
h*
expf
(
fabsf
(x));
46
47
/* |x| in [log(maxdouble), overflowthresold] */
48
if
(ix<=0x42b2d4fc) {
49
w =
expf
((
float
)0.5*
fabsf
(x));
50
t = h*w;
51
return
t*w;
52
}
53
54
/* |x| > overflowthresold, sinh(x) overflow */
55
return
x*shuge;
56
}
fabsf
#define fabsf(x)
Definition:
math.h:141
expm1f
#define expm1f(x)
Definition:
math.h:140
one
#define one
Definition:
k_tan.c:68
expf
#define expf(x)
Definition:
math.h:139
GET_FLOAT_WORD
#define GET_FLOAT_WORD(i, d)
Definition:
math_private.h:326
sinhf
float sinhf(float x)
Definition:
e_sinhf.c:22
int32_t
signed int int32_t
Definition:
stdint.h:11
math_private.h
epsilon
liba
src
external
openbsd
e_sinhf.c
Generated by
1.8.14