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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [dfp/] [convert-complex.c] - Blame information for rev 307

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 298 jeremybenn
/* { dg-options "-O3" } */
2
 
3
/* N1150 5.3 Conversions between decimal floating and complex.
4
   C99 6.3.1.7 Conversions, arithmetic operands, real and complex.  */
5
 
6
#include "dfp-dbg.h"
7
 
8
int
9
main ()
10
{
11
  _Complex float cf;
12
  _Complex double cd;
13
  _Complex long double cld;
14
 
15
  _Decimal32 d32;
16
  _Decimal64 d64;
17
  _Decimal128 d128;
18
 
19
  cf = 2.0f *  __extension__ 1i + 3.0f;
20
  cd = 2.0 * __extension__ 1i + 3.0;
21
  cld = 2.0l * __extension__ 1i + 3.0l;
22
 
23
  /* Convert complex to decimal floating.  */
24
  d32 = cf;
25
  d64 = cd;
26
  d128 = cld;
27
 
28
  if (d32 != 3.0DF)
29
    FAILURE
30
  if (d64 != 3.0dd)
31
    FAILURE
32
  if (d128 != 3.0dl)
33
    FAILURE
34
 
35
  /* Convert decimal floating to complex.  */
36
  d32 = 2.5DF;
37
  d64 = 1.5DD;
38
  d128 = 2.5DL;
39
 
40
  cf = d32;
41
  cd = d64;
42
  cld = d128;
43
 
44
  /* N1107 5.3 Conversions between decimal floating and complex.
45
     When a value of decimal floating type converted to a complex
46
     type, the real part of the complex result value is undermined
47
     by the rules of conversions in N1107 5.2 and the imaginary part
48
     of the complex result value is zero.  */
49
 
50
  if (__real__ cf != 2.5f)
51
    FAILURE
52
  if (__real__ cd !=1.5)
53
    FAILURE
54
  if (__real__ cld !=  2.5)
55
    FAILURE
56
  if (__imag__ cf != 0.0f)
57
    FAILURE
58
  if (__imag__ cd != 0.0)
59
    FAILURE
60
  if (__imag__ cld != 0.0l)
61
    FAILURE
62
 
63
  /*  Verify that the conversions from DFP types to complex is
64
      determined by the rules of conversion to the real part.  */
65
 
66
  /*  Convert _Decimal64 to _Complex float.  */
67
  d64 = 0.125dl;
68
  cf = d64;
69
  if (__real__ cf != 0.125f)
70
    FAILURE
71
  /*  Convert _Decimal128 to _Complex double.  */
72
  d128 = 1.25E-7dl;
73
  cd = d128;
74
  if (__real__ cd != 1.25E-7)
75
    FAILURE
76
 
77
  /*  Verify that conversion from complex to decimal floating types
78
      results in the value of the real part converted to the result
79
      type according to the rules of conversion between those types.  */
80
 
81
  /*  Convert _Complex float to decimal float types.  */
82
  cf = 2.0f *  __extension__ 1i + 2.25f;
83
  d32 = cf;
84
  d64 = cf;
85
  d128 = cf;
86
  if (d32 != 2.25DF)
87
    FAILURE
88
  if (d64 != 2.25DD)
89
    FAILURE
90
  if (d128 != 2.25DL)
91
    FAILURE
92
 
93
  /*  Convert _Complex double to decimal float types.  */
94
  cd = 2.0 *  __extension__ 1i + 1.25;
95
  d32 = cd;
96
  d64 = cd;
97
  d128 = cd;
98
  if (d32 != 1.25DF)
99
    FAILURE
100
  if (d64 != 1.25DD)
101
    FAILURE
102
  if (d128 != 1.25DL)
103
    FAILURE
104
 
105
  /*  Convert _Complex long double to decimal float types.  */
106
  cld = 2.0l *  __extension__ 1i + 0.0625l;
107
  d32 = cld;
108
  d64 = cld;
109
  d128 = cld;
110
  if (d32 != 0.0625DF)
111
    FAILURE
112
  if (d64 != 0.0625DD)
113
    FAILURE
114
  if (d128 != 0.0625DL)
115
    FAILURE
116
 
117
  FINISH
118
}

powered by: WebSVN 2.1.0

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