1// Copyright (C) 2009 Free Software Foundation, Inc. 2// 3// This file is part of the GNU ISO C++ Library. This library is free 4// software; you can redistribute it and/or modify it under the 5// terms of the GNU General Public License as published by the 6// Free Software Foundation; either version 3, or (at your option) 7// any later version. 8 9// This library is distributed in the hope that it will be useful, 10// but WITHOUT ANY WARRANTY; without even the implied warranty of 11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12// GNU General Public License for more details. 13 14// You should have received a copy of the GNU General Public License along 15// with this library; see the file COPYING3. If not see 16// <http://www.gnu.org/licenses/>. 17 18// { dg-require-effective-target dfp } 19 20// ISO/IEC TR 24733 3.2.2.3 Conversion from integral type (decimal32). 21// ISO/IEC TR 24733 3.2.3.3 Conversion from integral type (decimal64). 22// ISO/IEC TR 24733 3.2.4.3 Conversion from integral type (decimal128). 23 24#include <decimal/decimal> 25#include <testsuite_hooks.h> 26 27using namespace std::decimal; 28 29void 30conversion_from_integral_p32 () 31{ 32 decimal32 d; 33 decimal32 from_si (1); 34 decimal32 from_ui (2U); 35 decimal32 from_sl (3L); 36 decimal32 from_ul (4UL); 37 decimal32 from_sll (5LL); 38 decimal32 from_ull (6ULL); 39 40 d++; VERIFY (from_si == d); 41 d++; VERIFY (from_ui == d); 42 d++; VERIFY (from_sl == d); 43 d++; VERIFY (from_ul == d); 44 d++; VERIFY (from_sll == d); 45 d++; VERIFY (from_ull == d); 46 47 from_si = 7; 48 d++; VERIFY (from_si == d); 49 from_ui = 8U; 50 d++; VERIFY (from_ui == d); 51 from_sl = 9L; 52 d++; VERIFY (from_sl == d); 53 from_ul = 10UL; 54 d++; VERIFY (from_ul == d); 55 from_sll = 11LL; 56 d++; VERIFY (from_sll == d); 57 from_ull = 12ULL; 58 d++; VERIFY (from_ull == d); 59} 60 61void 62conversion_from_integral_m32 () 63{ 64 decimal32 d; 65 decimal32 from_si (-1); 66 decimal32 from_sl (-2L); 67 decimal32 from_sll (-3LL); 68 69 d--; VERIFY (from_si == d); 70 d--; VERIFY (from_sl == d); 71 d--; VERIFY (from_sll == d); 72 73 from_si = -4; 74 d--; VERIFY (from_si == d); 75 from_sl = -5L; 76 d--; VERIFY (from_sl == d); 77 from_sll = -6LL; 78 d--; VERIFY (from_sll == d); 79} 80 81void 82conversion_from_integral_p64 () 83{ 84 decimal64 d; 85 decimal64 from_si (1); 86 decimal64 from_ui (2U); 87 decimal64 from_sl (3L); 88 decimal64 from_ul (4UL); 89 decimal64 from_sll (5LL); 90 decimal64 from_ull (6ULL); 91 92 d++; VERIFY (from_si == d); 93 d++; VERIFY (from_ui == d); 94 d++; VERIFY (from_sl == d); 95 d++; VERIFY (from_ul == d); 96 d++; VERIFY (from_sll == d); 97 d++; VERIFY (from_ull == d); 98 99 from_si = 7; 100 d++; VERIFY (from_si == d); 101 from_ui = 8U; 102 d++; VERIFY (from_ui == d); 103 from_sl = 9L; 104 d++; VERIFY (from_sl == d); 105 from_ul = 10UL; 106 d++; VERIFY (from_ul == d); 107 from_sll = 11LL; 108 d++; VERIFY (from_sll == d); 109 from_ull = 12ULL; 110 d++; VERIFY (from_ull == d); 111} 112 113void 114conversion_from_integral_m64 () 115{ 116 decimal64 d; 117 decimal64 from_si (-1); 118 decimal64 from_sl (-2L); 119 decimal64 from_sll (-3LL); 120 121 d--; VERIFY (from_si == d); 122 d--; VERIFY (from_sl == d); 123 d--; VERIFY (from_sll == d); 124 125 from_si = -4; 126 d--; VERIFY (from_si == d); 127 from_sl = -5L; 128 d--; VERIFY (from_sl == d); 129 from_sll = -6LL; 130 d--; VERIFY (from_sll == d); 131} 132 133void 134conversion_from_integral_p128 () 135{ 136 decimal128 d; 137 decimal128 from_si (1); 138 decimal128 from_ui (2U); 139 decimal128 from_sl (3L); 140 decimal128 from_ul (4UL); 141 decimal128 from_sll (5LL); 142 decimal128 from_ull (6ULL); 143 144 d++; VERIFY (from_si == d); 145 d++; VERIFY (from_ui == d); 146 d++; VERIFY (from_sl == d); 147 d++; VERIFY (from_ul == d); 148 d++; VERIFY (from_sll == d); 149 d++; VERIFY (from_ull == d); 150 151 from_si = 7; 152 d++; VERIFY (from_si == d); 153 from_ui = 8U; 154 d++; VERIFY (from_ui == d); 155 from_sl = 9L; 156 d++; VERIFY (from_sl == d); 157 from_ul = 10UL; 158 d++; VERIFY (from_ul == d); 159 from_sll = 11LL; 160 d++; VERIFY (from_sll == d); 161 from_ull = 12ULL; 162} 163 164void 165conversion_from_integral_m128 () 166{ 167 decimal128 d; 168 decimal128 from_si (-1); 169 decimal128 from_sl (-2L); 170 decimal128 from_sll (-3LL); 171 172 d--; VERIFY (from_si == d); 173 d--; VERIFY (from_sl == d); 174 d--; VERIFY (from_sll == d); 175 176 from_si = -4; 177 d--; VERIFY (from_si == d); 178 from_sl = -5L; 179 d--; VERIFY (from_sl == d); 180 from_sll = -6LL; 181 d--; VERIFY (from_sll == d); 182} 183 184int 185main () 186{ 187 conversion_from_integral_p32 (); 188 conversion_from_integral_m32 (); 189 conversion_from_integral_p64 (); 190 conversion_from_integral_m64 (); 191 conversion_from_integral_p128 (); 192 conversion_from_integral_m128 (); 193} 194