source: trunk/gcc/libjava/java/lang/w_sqrt.c

Last change on this file was 2, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.9 KB
Line 
1
2/* @(#)w_sqrt.c 5.1 93/09/24 */
3/*
4 * ====================================================
5 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6 *
7 * Developed at SunPro, a Sun Microsystems, Inc. business.
8 * Permission to use, copy, modify, and distribute this
9 * software is freely granted, provided that this notice
10 * is preserved.
11 * ====================================================
12 */
13
14/*
15FUNCTION
16 <<sqrt>>, <<sqrtf>>---positive square root
17
18INDEX
19 sqrt
20INDEX
21 sqrtf
22
23ANSI_SYNOPSIS
24 #include <math.h>
25 double sqrt(double <[x]>);
26 float sqrtf(float <[x]>);
27
28TRAD_SYNOPSIS
29 #include <math.h>
30 double sqrt(<[x]>);
31 float sqrtf(<[x]>);
32
33DESCRIPTION
34 <<sqrt>> computes the positive square root of the argument.
35 You can modify error handling for this function with
36 <<matherr>>.
37
38RETURNS
39 On success, the square root is returned. If <[x]> is real and
40 positive, then the result is positive. If <[x]> is real and
41 negative, the global value <<errno>> is set to <<EDOM>> (domain error).
42
43
44PORTABILITY
45 <<sqrt>> is ANSI C. <<sqrtf>> is an extension.
46*/
47
48/*
49 * wrapper sqrt(x)
50 */
51
52#include "fdlibm.h"
53#include <errno.h>
54
55#ifndef _DOUBLE_IS_32BITS
56
57#ifdef __STDC__
58 double sqrt(double x) /* wrapper sqrt */
59#else
60 double sqrt(x) /* wrapper sqrt */
61 double x;
62#endif
63{
64#ifdef _IEEE_LIBM
65 return __ieee754_sqrt(x);
66#else
67 struct exception exc;
68 double z;
69 z = __ieee754_sqrt(x);
70 if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
71 if(x<0.0) {
72 exc.type = DOMAIN;
73 exc.name = "sqrt";
74 exc.err = 0;
75 exc.arg1 = exc.arg2 = x;
76 if (_LIB_VERSION == _SVID_)
77 exc.retval = 0.0;
78 else
79 exc.retval = 0.0/0.0;
80 if (_LIB_VERSION == _POSIX_)
81 errno = EDOM;
82 else if (!matherr(&exc)) {
83 errno = EDOM;
84 }
85 if (exc.err != 0)
86 errno = exc.err;
87 return exc.retval;
88 } else
89 return z;
90#endif
91}
92
93#endif /* defined(_DOUBLE_IS_32BITS) */
Note: See TracBrowser for help on using the repository browser.