~mingw-w64/mingw-w64/experimental

« back to all changes in this revision

Viewing changes to ros-privexp/mingw-w64-crt/testcases/complex/carg.c

  • Committer: NightStrike
  • Date: 2010-08-11 22:20:57 UTC
  • Revision ID: svn-v4:4407c894-4637-0410-b4f5-ada5f102cad1:experimental:3266
Branch for adding option for supporting ros

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 This Software is provided under the Zope Public License (ZPL) Version 2.1.
 
3
 
 
4
 Copyright (c) 2009, 2010 by the mingw-w64 project
 
5
 
 
6
 See the AUTHORS file for the list of contributors to the mingw-w64 project.
 
7
 
 
8
 This license has been certified as open source. It has also been designated
 
9
 as GPL compatible by the Free Software Foundation (FSF).
 
10
 
 
11
 Redistribution and use in source and binary forms, with or without
 
12
 modification, are permitted provided that the following conditions are met:
 
13
 
 
14
   1. Redistributions in source code must retain the accompanying copyright
 
15
      notice, this list of conditions, and the following disclaimer.
 
16
   2. Redistributions in binary form must reproduce the accompanying
 
17
      copyright notice, this list of conditions, and the following disclaimer
 
18
      in the documentation and/or other materials provided with the
 
19
      distribution.
 
20
   3. Names of the copyright holders must not be used to endorse or promote
 
21
      products derived from this software without prior written permission
 
22
      from the copyright holders.
 
23
   4. The right to distribute this software or to use it for any purpose does
 
24
      not give you the right to use Servicemarks (sm) or Trademarks (tm) of
 
25
      the copyright holders.  Use of them is covered by separate agreement
 
26
      with the copyright holders.
 
27
   5. If any files are modified, you must cause the modified files to carry
 
28
      prominent notices stating that you changed the files and the date of
 
29
      any change.
 
30
 
 
31
 Disclaimer
 
32
 
 
33
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
 
34
 OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
35
 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
 
36
 EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
 
37
 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
38
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 
39
 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 
40
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 
41
 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 
42
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
43
*/
 
44
 
 
45
#include "complex_test.h"
 
46
 
 
47
/**
 
48
 * Annex G, carg (z) == atan2 (__imag__ z, __real__ z).
 
49
 *
 
50
 * Annex F.9, Unless otherwise specified, where the symbol "+/-" occurs in both
 
51
 * an argument and the result, the result has the same sign as the argument.
 
52
 *
 
53
 * Annex F.9.1.4 The atan2 functions
 
54
 * atan2(+/-0, -0) returns +/-pi (footnote: no invalid or divide-by-zero exceptions)
 
55
 * atan2(+/-0, +0) returns +/-0.
 
56
 * atan2(+/-0, x) returns +/-pi for x < 0.
 
57
 * atan2(+/-0, x) returns +/-0 for x > 0.
 
58
 * atan2(y, +/-0) returns -pi /2 for y < 0.
 
59
 * atan2(y, +/-0) returns pi /2 for y > 0.
 
60
 * atan2(+/-y, -inf) returns +/-pi for finite y > 0.
 
61
 * atan2(+/-y, +inf) returns +/-0 for finite y > 0.
 
62
 * atan2(+/-inf, x) returns +/-pi /2 for finite x.
 
63
 * atan2(+/-inf, -inf) returns +/-3pi /4.
 
64
 * atan2(+/-inf, +inf) returns +/-pi /4.
 
65
 *
 
66
 */
 
67
  
 
68
int __FLT_ABI(test_function_carg) ()
 
69
{
 
70
  _DEFINE_DEFAULT_TEST_FUNCTION_REAL (carg, 0);
 
71
 
 
72
  /* These tests return a real -- expected imaginary is ignored.  */
 
73
  /* Note to self - reverse input for correct expected, since the imaginary value
 
74
     is the first to be passed to atan2.  */
 
75
  DEFAULT_TESTS_START
 
76
 
 
77
  DEFINE_TEST (-__FLT_CST(0.0), -__FLT_CST(0.0),       -__FLT_PI, __FLT_NAN, 0, 0)
 
78
  DEFINE_TEST (-__FLT_CST(0.0),  __FLT_CST(0.0),        __FLT_PI, __FLT_NAN, 0, 0)
 
79
  DEFINE_TEST ( __FLT_CST(0.0), -__FLT_CST(0.0), -__FLT_CST(0.0), __FLT_NAN, 0, 0)
 
80
  DEFINE_TEST ( __FLT_CST(0.0),  __FLT_CST(0.0),  __FLT_CST(0.0), __FLT_NAN, 0, 0)
 
81
 
 
82
  DEFINE_TEST (-__FLT_CST(0.0), -__FLT_CST(42.42), -__FLT_PI_2, __FLT_NAN, 0, 0)
 
83
  DEFINE_TEST ( __FLT_CST(0.0), -__FLT_CST(42.42), -__FLT_PI_2, __FLT_NAN, 0, 0)
 
84
  DEFINE_TEST (-__FLT_CST(0.0),  __FLT_CST(42.42),  __FLT_PI_2, __FLT_NAN, 0, 0)
 
85
  DEFINE_TEST ( __FLT_CST(0.0),  __FLT_CST(42.42),  __FLT_PI_2, __FLT_NAN, 0, 0)
 
86
 
 
87
  DEFINE_TEST (-__FLT_CST(42.42), -__FLT_CST(0.0),       -__FLT_PI, __FLT_NAN, 0, 0)
 
88
  DEFINE_TEST (-__FLT_CST(42.42),  __FLT_CST(0.0),        __FLT_PI, __FLT_NAN, 0, 0)
 
89
  DEFINE_TEST ( __FLT_CST(42.42), -__FLT_CST(0.0), -__FLT_CST(0.0), __FLT_NAN, 0, 0)
 
90
  DEFINE_TEST ( __FLT_CST(42.42),  __FLT_CST(0.0),  __FLT_CST(0.0), __FLT_NAN, 0, 0)
 
91
 
 
92
  DEFINE_TEST (-__FLT_CST(42.42), -INFINITY, -__FLT_PI_2, __FLT_NAN, 0, 0)
 
93
  DEFINE_TEST ( __FLT_CST(42.42), -INFINITY, -__FLT_PI_2, __FLT_NAN, 0, 0)
 
94
  DEFINE_TEST (-__FLT_CST(42.42),  INFINITY,  __FLT_PI_2, __FLT_NAN, 0, 0)
 
95
  DEFINE_TEST ( __FLT_CST(42.42),  INFINITY,  __FLT_PI_2, __FLT_NAN, 0, 0)
 
96
 
 
97
  DEFINE_TEST (-INFINITY, -__FLT_CST(42.42),       -__FLT_PI, __FLT_NAN, 0, 0)
 
98
  DEFINE_TEST (-INFINITY,  __FLT_CST(42.42),        __FLT_PI, __FLT_NAN, 0, 0)
 
99
  DEFINE_TEST ( INFINITY, -__FLT_CST(42.42), -__FLT_CST(0.0), __FLT_NAN, 0, 0)
 
100
  DEFINE_TEST ( INFINITY,  __FLT_CST(42.42),  __FLT_CST(0.0), __FLT_NAN, 0, 0)
 
101
 
 
102
  DEFINE_TEST (-INFINITY, -INFINITY, -__FLT_PI_3_4, __FLT_NAN, 0, 0)
 
103
  DEFINE_TEST (-INFINITY,  INFINITY,  __FLT_PI_3_4, __FLT_NAN, 0, 0)
 
104
  DEFINE_TEST ( INFINITY, -INFINITY,   -__FLT_PI_4, __FLT_NAN, 0, 0)
 
105
  DEFINE_TEST ( INFINITY,  INFINITY,    __FLT_PI_4, __FLT_NAN, 0, 0)
 
106
 
 
107
  DEFINE_TEST (      __FLT_NAN,  __FLT_CST(0.0), __FLT_NAN, __FLT_NAN, 0, 0)
 
108
  DEFINE_TEST (      __FLT_NAN, -__FLT_CST(0.0), __FLT_NAN, __FLT_NAN, 0, 0)
 
109
  DEFINE_TEST ( __FLT_CST(0.0),       __FLT_NAN, __FLT_NAN, __FLT_NAN, 0, 0)
 
110
  DEFINE_TEST (-__FLT_CST(0.0),       __FLT_NAN, __FLT_NAN, __FLT_NAN, 0, 0)
 
111
  DEFINE_TEST (      __FLT_NAN,        INFINITY, __FLT_NAN, __FLT_NAN, 0, 0)
 
112
  DEFINE_TEST (      __FLT_NAN,       -INFINITY, __FLT_NAN, __FLT_NAN, 0, 0)
 
113
  DEFINE_TEST (       INFINITY,       __FLT_NAN, __FLT_NAN, __FLT_NAN, 0, 0)
 
114
  DEFINE_TEST (      -INFINITY,       __FLT_NAN, __FLT_NAN, __FLT_NAN, 0, 0)
 
115
 
 
116
  TESTS_END
 
117
 
 
118
  return RUN_DEFAULT_TESTS(carg);
 
119
}