Bug #2122
Python 3 division error
| Status: | Closed | Start date: | 06/09/2017 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assigned To: | % Done: | 100% | ||
| Category: | - | |||
| Target version: | 1.5.0 | |||
| Duration: |
Description
The following code in csresmap
logmap = self._resmap/modelmap
leads to an exception on Python 3.
Probably the GSkyMap Python interface needs the following methods added:
GSkyMap __div__(const GSkyMap& map) GSkyMap __truediv__(const GSkyMap& map)
Recurrence
No recurrence.
History
#1
Updated by Knödlseder Jürgen about 9 years ago
- Target version changed from 1.4.0 to 1.5.0
#2
Updated by Knödlseder Jürgen about 9 years ago
Following https://stackoverflow.com/questions/21692065/python-class-div-issue, __truediv__ is Python 3.x while __div__ is Python 2.x. Hence we need both to support Python 2.x and 3.x.
Here is what is implemented in GMatrix.i:
// Python 2.x
GMatrix __div__(const double &scalar) {
return ((*self) / scalar);
}
// Python 3.x
GMatrix __truediv__(const double& scalar) const {
return ((*self) / scalar);
}
// Python 2.x operator/=
GMatrix __idiv__(const double& scalar) {
self->operator/=(scalar);
return (*self);
}
// Python 3.x operator/=
GMatrix __itruediv__(const double& scalar) {
self->operator/=(scalar);
return (*self);
}
For the moment, GSkyMap.i has
// Python 2.x operator/=
GSkyMap __idiv__(const GSkyMap& map) {
self->operator/=(map);
return (*self);
}
// Python 3.x operator/=
GSkyMap __itruediv__(const GSkyMap& map) {
self->operator/=(map);
return (*self);
}
// Python 2.x operator/=
GSkyMap __idiv__(const double& factor) {
self->operator/=(factor);
return (*self);
}
// Python 3.x operator/=
GSkyMap __itruediv__(const double& factor) {
self->operator/=(factor);
return (*self);
}
hence we need to add
// Python 2.x operator/=
GSkyMap __div__(const GSkyMap& map) {
return ((*self) / map);
}
// Python 3.x operator/=
GSkyMap __truediv__(const GSkyMap& map) {
return ((*self) / map);
}
and removeGSkyMap operator/(const GSkyMap& map) const;
#3
Updated by Knödlseder Jürgen almost 9 years ago
- Status changed from New to Closed
- Assigned To set to Knödlseder Jürgen
- % Done changed from 0 to 100
Operaters were added and code was merged into devel.