Merge commit '8245277ad3' into c99-complex

* commit '8245277ad3':
  Remove test for unsupported complex or _Complex by itself
  More C99 complex fixes, plus Python tests
  Restore _Complex as standalone type
  Small corrections for handling C99 _Complex
  Properly handle C99 complex types even in C++ mode

Conflicts:
	Examples/test-suite/python/complextest_runme.py
This commit is contained in:
William S Fulton 2020-10-10 14:53:33 +01:00
commit 4f184500d7
9 changed files with 99 additions and 41 deletions

View file

@ -68,20 +68,57 @@
%{
#include <complex.h>
%}
%inline
{
complex Conj(complex a)
complex double Conj(complex double a)
{
return conj(a);
}
complex float Conjf(float complex a)
complex float Conjf(complex float a)
{
return conjf(a);
}
double complex Conj1(double complex a)
{
return conj(a);
}
float complex Conjf1(float complex a)
{
return conjf(a);
}
_Complex double Conj2(_Complex double a)
{
return conj(a);
}
_Complex float Conjf2(_Complex float a)
{
return conjf(a);
}
double _Complex Conj3(double _Complex a)
{
return conj(a);
}
float _Complex Conjf3(float _Complex a)
{
return conjf(a);
}
}

View file

@ -83,6 +83,7 @@ CPP11_TEST_CASES = \
cpp11_std_unordered_set \
C_TEST_CASES += \
complextest \
file_test \
li_cstring \
li_cwstring \

View file

@ -14,17 +14,34 @@ if complextest.Conj2(a) != a.conjugate():
if complextest.Conjf2(a) != a.conjugate():
raise RuntimeError("bad complex mapping")
if 'Conj3' in dir(complextest):
if complextest.Conj3(a) != a.conjugate():
raise RuntimeError("bad complex mapping")
v = (complex(1, 2), complex(2, 3), complex(4, 3), 1)
if 'Conjf3' in dir(complextest):
if complextest.Conjf3(a) != a.conjugate():
raise RuntimeError("bad complex mapping")
if len(complextest.CopyHalf(v)) != 2:
raise RuntimeError("CopyHalf failed")
if 'Conj4' in dir(complextest):
if complextest.Conj4(a) != a.conjugate():
raise RuntimeError("bad complex mapping")
if len(complextest.CopyHalfRef(v)) != 2:
raise RuntimeError("CopyHalfRef failed")
if 'Conj5' in dir(complextest):
if complextest.Conj5(a) != a.conjugate():
raise RuntimeError("bad complex mapping")
p = complextest.ComplexPair()
p.z1 = complex(0, 1)
p.z2 = complex(0, -1)
if complextest.Conj(p.z2) != p.z1:
raise RuntimeError("bad complex mapping")
if 'CopyHalf' in dir(complextest):
v = (complex(1, 2), complex(2, 3), complex(4, 3), 1)
if len(complextest.CopyHalf(v)) != 2:
raise RuntimeError("CopyHalf failed")
if len(complextest.CopyHalfRef(v)) != 2:
raise RuntimeError("CopyHalfRef failed")
p = complextest.ComplexPair()
p.z1 = complex(0, 1)
p.z2 = complex(0, -1)
if complextest.Conj(p.z2) != p.z1:
raise RuntimeError("bad complex mapping")