[GRASS5] [bug #835] (grass) floating point exception when using g.region

this bug's URL: http://intevation.de/rt/webrt?serial_num=835
-------------------------------------------------------------------------

Subject: floating point exception when using g.region

Platform: Linux/Alpha64
Linux distro: Debian
linux cpu: Alpha64
Xwindows version: XFree 4.1.0
Xwindows manager: KDE 2.x
TclTk version: tcl/tk 8.3
grass downloaded at: Baylor site
grass binary for platform: I compiled the sources myself
grass sources source: no, I got a source code package from the server,
5.0.0pre2
c compiler name: gcc

I get a Floating point exception when trying to print a region using
g.region where the north bound is 90 or the south bound is -90 (lat lon
projection)

Looking at the code the problem seems to lie in the geoid distance
calculations... and locally I have moved the distance initialisation code so
it is only performed when a distance has been asked for rather than all the
time as it seems to do at the moment...

Log follows:

Mapset <kimc> in Location <australia>
GRASS 5.0.0pre2 > g.region -p
projection: 3 (Latitude-Longitude)
zone: 0
datum: ** unknown (default: WGS84) **
ellipsoid: sphere
north: 9S
south: 44S
west: 112E
east: 155:10E
nsres: 0:02
ewres: 0:02
rows: 1050
cols: 1295

Mapset <kimc> in Location <australia>
GRASS 5.0.0pre2 > g.region n=90

Mapset <kimc> in Location <australia>
GRASS 5.0.0pre2 > g.region -p
Floating exception

Mapset <kimc> in Location <australia>
GRASS 5.0.0pre2 > g.region n=89

Mapset <kimc> in Location <australia>
GRASS 5.0.0pre2 > g.region -p
projection: 3 (Latitude-Longitude)
zone: 0
datum: ** unknown (default: WGS84) **
ellipsoid: sphere
north: 89N
south: 44S
west: 112E
east: 155:10E
nsres: 0:02
ewres: 0:02
rows: 3990
cols: 1295

Mapset <kimc> in Location <australia>
GRASS 5.0.0pre2 >

-------------------------------------------- Managed by Request Tracker

Request Tracker wrote:

this bug's URL: http://intevation.de/rt/webrt?serial_num=835
-------------------------------------------------------------------------

Subject: floating point exception when using g.region

Platform: Linux/Alpha64
Linux distro: Debian
linux cpu: Alpha64
Xwindows version: XFree 4.1.0
Xwindows manager: KDE 2.x
TclTk version: tcl/tk 8.3
grass downloaded at: Baylor site
grass binary for platform: I compiled the sources myself
grass sources source: no, I got a source code package from the server,
5.0.0pre2
c compiler name: gcc

I get a Floating point exception when trying to print a region using
g.region where the north bound is 90 or the south bound is -90 (lat lon
projection)

Can you try compiling with the "-mieee" switch, e.g.

  CFLAGS=-mieee ./configure ...

The "gcc" Info file suggests that the Alpha's floating-point support
takes some shortcuts, which result in NaN and infinity not working:

`-mieee'
     The Alpha architecture implements floating-point hardware
     optimized for maximum performance. It is mostly compliant with
     the IEEE floating point standard. However, for full compliance,
     software assistance is required. This option generates code fully
     IEEE compliant code _except_ that the INEXACT FLAG is not
     maintained (see below). If this option is turned on, the CPP
     macro `_IEEE_FP' is defined during compilation. The option is a
     shorthand for: `-D_IEEE_FP -mfp-trap-mode=su -mtrap-precision=i
     -mieee-conformant'. The resulting code is less efficient but is
     able to correctly support denormalized numbers and exceptional
     IEEE values such as not-a-number and plus/minus infinity. Other
     Alpha compilers call this option `-ieee_with_no_inexact'.

--
Glynn Clements <glynn.clements@virgin.net>