15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===//
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//                     The LLVM Compiler Infrastructure
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===//
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// <complex>
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// template<class T>
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//   complex<T>
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//   operator*(const T& lhs, const complex<T>& rhs);
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <complex>
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <cassert>
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)template <class T>
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)test(const T& lhs, const std::complex<T>& rhs, std::complex<T> x)
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
2302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch    assert(lhs * rhs == x);
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)template <class T>
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void
2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)test()
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    T lhs(1.5);
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    std::complex<T> rhs(1.5, 2.5);
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    std::complex<T>   x(2.25, 3.75);
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    test(lhs, rhs, x);
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int main()
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    test<float>();
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    test<double>();
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    test<long double>();
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)