88__all__ = ['CXXBB' ]
99
1010
11- std_arith = """
11+ def std_arith (qualifier = None ):
12+ if qualifier :
13+ qual = qualifier if qualifier .endswith (" " ) else f"{ qualifier } "
14+ else :
15+ qual = ""
16+ return f"""
1217#include <complex>
1318
1419template<typename _Tp, typename _Ti>
15- std::complex<_Tp> operator * (const _Ti & a, const std::complex<_Tp> & b){
20+ { qual } std::complex<_Tp> operator * (const _Ti & a, const std::complex<_Tp> & b){ {
1621 return std::complex<_Tp>(b.real() * a, b.imag() * a);
17- }
22+ }}
1823
1924template<typename _Tp, typename _Ti>
20- std::complex<_Tp> operator * (const std::complex<_Tp> & b, const _Ti & a){
25+ { qual } std::complex<_Tp> operator * (const std::complex<_Tp> & b, const _Ti & a){ {
2126 return std::complex<_Tp>(b.real() * a, b.imag() * a);
22- }
27+ }}
2328
2429template<typename _Tp, typename _Ti>
25- std::complex<_Tp> operator / (const _Ti & a, const std::complex<_Tp> & b){
26- _Tp denom = b.real() * b.real () + b.imag() * b.imag()
30+ { qual } std::complex<_Tp> operator / (const _Ti & a, const std::complex<_Tp> & b){ {
31+ _Tp denom = b.real() * b.real () + b.imag() * b.imag();
2732 return std::complex<_Tp>(b.real() * a / denom, - b.imag() * a / denom);
28- }
33+ }}
2934
3035template<typename _Tp, typename _Ti>
31- std::complex<_Tp> operator / (const std::complex<_Tp> & b, const _Ti & a){
36+ { qual } std::complex<_Tp> operator / (const std::complex<_Tp> & b, const _Ti & a){ {
3237 return std::complex<_Tp>(b.real() / a, b.imag() / a);
33- }
38+ }}
3439
3540template<typename _Tp, typename _Ti>
36- std::complex<_Tp> operator + (const _Ti & a, const std::complex<_Tp> & b){
41+ { qual } std::complex<_Tp> operator + (const _Ti & a, const std::complex<_Tp> & b){ {
3742 return std::complex<_Tp>(b.real() + a, b.imag());
38- }
43+ }}
3944
4045template<typename _Tp, typename _Ti>
41- std::complex<_Tp> operator + (const std::complex<_Tp> & b, const _Ti & a){
46+ { qual } std::complex<_Tp> operator + (const std::complex<_Tp> & b, const _Ti & a){ {
4247 return std::complex<_Tp>(b.real() + a, b.imag());
43- }
48+ }}
4449
4550"""
4651
@@ -60,10 +65,10 @@ class CXXBB(LangBB):
6065 Call ('free' , (i ,)),
6166 'alloc-global-symbol' : lambda i , j , k :
6267 Call ('memcpy' , (i , j , k )),
63- # Complex and float16
68+ # Complex
6469 'includes-complex' : 'complex' ,
6570 'complex-namespace' : [UsingNamespace ('std::complex_literals' )],
66- 'def-complex' : std_arith ,
71+ 'def-complex' : std_arith () ,
6772 }
6873
6974
0 commit comments