brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 61e0d01 Raw
65 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <complex>10 11// complex& operator/=(const complex& rhs); // constexpr in C++2012 13#include <cassert>14#include <complex>15 16#include "floating_pointer_helpers.h"17#include "test_macros.h"18 19template <class T>20TEST_CONSTEXPR_CXX2021bool22test()23{24    std::complex<T> c(-4, 7.5);25    const std::complex<T> c2(1.5, 2.5);26    assert(is_close(c.real(), T(-4)));27    assert(is_close(c.imag(), T(7.5)));28    c /= c2;29    assert(is_close(c.real(), T(1.5)));30    assert(is_close(c.imag(), T(2.5)));31    c /= c2;32    assert(is_close(c.real(), T(1)));33    assert(is_close(c.imag(), T(0)));34 35    std::complex<T> c3;36 37    c3 = c;38    std::complex<int> ic (1,1);39    c3 /= ic;40    assert(is_close(c3.real(), T(0.5)));41    assert(is_close(c3.imag(), T(-0.5)));42 43    c3 = c;44    std::complex<float> fc (1,1);45    c3 /= fc;46    assert(is_close(c3.real(), T(0.5)));47    assert(is_close(c3.imag(), T(-0.5)));48    return true;49}50 51int main(int, char**)52{53    test<float>();54    test<double>();55    test<long double>();56 57#if TEST_STD_VER >= 2058    static_assert(test<float>());59    static_assert(test<double>());60    static_assert(test<long double>());61#endif62 63    return 0;64}65