@@ -966,13 +966,25 @@ abstract static class AddNode extends BinaryOpBuiltinNode {
966966 @ Specialization
967967 static PComplex doInt (PComplex left , int right ,
968968 @ Bind PythonLanguage language ) {
969- return PFactory .createComplex (language , left .getReal () + right , left .getImag ());
969+ return PFactory .createComplex (language , left .getReal () + right , left .getImag () + 0.0 );
970970 }
971971
972972 @ Specialization
973973 static PComplex doDouble (PComplex left , double right ,
974974 @ Bind PythonLanguage language ) {
975- return PFactory .createComplex (language , left .getReal () + right , left .getImag ());
975+ return PFactory .createComplex (language , left .getReal () + right , left .getImag () + 0.0 );
976+ }
977+
978+ @ Specialization
979+ static PComplex doInt (int left , PComplex right ,
980+ @ Bind PythonLanguage language ) {
981+ return PFactory .createComplex (language , left + right .getReal (), 0.0 + right .getImag ());
982+ }
983+
984+ @ Specialization
985+ static PComplex doDouble (double left , PComplex right ,
986+ @ Bind PythonLanguage language ) {
987+ return PFactory .createComplex (language , left + right .getReal (), 0.0 + right .getImag ());
976988 }
977989
978990 @ Specialization
@@ -1082,13 +1094,25 @@ static ComplexValue multiply(ComplexValue left, ComplexValue right) {
10821094 abstract static class SubNode extends BinaryOpBuiltinNode {
10831095 static PComplex doComplex (PComplex left , double right ,
10841096 @ Bind PythonLanguage language ) {
1085- return PFactory .createComplex (language , left .getReal () - right , left .getImag ());
1097+ return PFactory .createComplex (language , left .getReal () - right , left .getImag () - 0.0 );
10861098 }
10871099
10881100 @ Specialization
10891101 static PComplex doComplex (PComplex left , int right ,
10901102 @ Bind PythonLanguage language ) {
1091- return PFactory .createComplex (language , left .getReal () - right , left .getImag ());
1103+ return PFactory .createComplex (language , left .getReal () - right , left .getImag () - 0.0 );
1104+ }
1105+
1106+ @ Specialization
1107+ static PComplex doComplex (int left , PComplex right ,
1108+ @ Bind PythonLanguage language ) {
1109+ return PFactory .createComplex (language , left - right .getReal (), 0.0 - right .getImag ());
1110+ }
1111+
1112+ @ Specialization
1113+ static PComplex doComplex (double left , PComplex right ,
1114+ @ Bind PythonLanguage language ) {
1115+ return PFactory .createComplex (language , left - right .getReal (), 0.0 - right .getImag ());
10921116 }
10931117
10941118 @ Specialization
0 commit comments