Implement expr+scalar, scalar+expr, expr-scalar, and scalar-expr as binary expressions, and generalize supported scalar types.

The following functors are now deprecated: scalar_add_op, scalar_sub_op, and scalar_rsub_op.
This commit is contained in:
Gael Guennebaud
2016-06-14 12:06:10 +02:00
parent 756ac4a93d
commit a8c08e8b8e
5 changed files with 70 additions and 47 deletions

View File

@@ -75,6 +75,18 @@ template<int SizeAtCompileType> void mixingtypes(int size = SizeAtCompileType)
VERIFY_IS_APPROX(vcf / sf , vcf / complex<float>(sf));
VERIFY_IS_APPROX(vf / scf , vf.template cast<complex<float> >() / scf);
// check scalar increment
VERIFY_IS_APPROX(vcf.array() + sf , vcf.array() + complex<float>(sf));
VERIFY_IS_APPROX(sd + vcd.array(), complex<double>(sd) + vcd.array());
VERIFY_IS_APPROX(vf.array() + scf, vf.template cast<complex<float> >().array() + scf);
VERIFY_IS_APPROX(scd + vd.array() , scd + vd.template cast<complex<double> >().array());
// check scalar subtractions
VERIFY_IS_APPROX(vcf.array() - sf , vcf.array() - complex<float>(sf));
VERIFY_IS_APPROX(sd - vcd.array(), complex<double>(sd) - vcd.array());
VERIFY_IS_APPROX(vf.array() - scf, vf.template cast<complex<float> >().array() - scf);
VERIFY_IS_APPROX(scd - vd.array() , scd - vd.template cast<complex<double> >().array());
// check dot product
vf.dot(vf);
#if 0 // we get other compilation errors here than just static asserts