OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [uClibc/] [libm/] [powerpc/] [s_ldexp.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1325 phoenix
/*******************************************************************************
2
*                                                                              *
3
*      File frexpldexp.c,                                                      *
4
*      Functions frexp(x) and ldexp(x),                                        *
5
*      Implementation of frexp and ldexp functions for the PowerPC.            *
6
*                                                                              *
7
*      Copyright © 1991 Apple Computer, Inc.  All rights reserved.             *
8
*                                                                              *
9
*      Written by Ali Sazegari, started on January 1991,                       *
10
*                                                                              *
11
*      W A R N I N G:  This routine expects a 64 bit double model.             *
12
*                                                                              *
13
*      December03 1992: first rs6000 implementation.                           *
14
*      October 05 1993: added special cases for NaN and ° in frexp.            *
15
*      May     27 1997: improved the performance of frexp by eliminating the   *
16
*                       switch statement.                                      *
17
*        June      13 2001: (ram) rewrote frexp to eliminate calls to scalb and    *
18
*                               logb.                                                                    *
19
*                                                                              *
20
*******************************************************************************/
21
 
22
#include <limits.h>
23
#include <math.h>
24
 
25
typedef union
26
      {
27
      struct {
28
#if defined(__BIG_ENDIAN__)
29
        unsigned long int hi;
30
        unsigned long int lo;
31
#else
32
        unsigned long int lo;
33
        unsigned long int hi;
34
#endif
35
      } words;
36
      double dbl;
37
      } DblInHex;
38
 
39
double ldexp ( double value, int exp )
40
      {
41
      if ( exp > SHRT_MAX )
42
            exp = SHRT_MAX;
43
      else if ( exp < -SHRT_MAX )
44
            exp = -SHRT_MAX;
45
      return scalb ( value, exp  );
46
      }
47
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.