Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
Re: Strange Bug with numeric double constants
Alex Schuster <alex@rosa.mpin-koeln.mpg.de> writes: > Hi! > I just experienced some weird IDL behaviour: > IDL> help, 1.0d+2.0d > help, 1.0d+2.0d > ^ > % Syntax error. > IDL> help, 1d+2d > help, 1d+2d > ^ > % Syntax error. > Strange, isn't it? There's no problem with byte constants: > IDL> help, 1b+2b > <Expression> BYTE = 3 > An additional blank helps: > IDL> help, 1d +2d > <Expression> DOUBLE = 3.0000000 > I didn't try IDL 5.2, but it happened with 4.0 and 5.1 on Unix and > Windows. I guess IDL expects an exponential notation like 1d0, and is > confused by the nonnumeric plus character. Wouldn't it be more proper to write these numbers as IDL> help, 1.0d0+2.0d0 As others have pointed out, IDL is getting confused by putting the +2 immediately after the "d"--it thinks it's part of the exponent. I guess that IDL usually knows what you meant if you leave the exponent off, but not always as you found out. Cheers, William Thompson
Alex Schuster wrote: > > Hi! > > I just experienced some weird IDL behaviour: > > IDL> help, 1.0d+2.0d > > help, 1.0d+2.0d > ^ > % Syntax error. > [...] I'd just say it's normal. Since '+' or '-' are two allowed characters in the exponential, IDL wants to interpret everything after '+' as the exponent, and you are limited to integer exponents here. Just for fun: if you try help,1.d*2.d it will work! Martin. -- ------------------------------------------------------------ ------- Dr. Martin Schultz Department for Engineering&Applied Sciences, Harvard University 109 Pierce Hall, 29 Oxford St., Cambridge, MA-02138, USA phone: (617)-496-8318 fax : (617)-495-4551 e-mail: mgs@io.harvard.edu Internet-homepage: http://www-as.harvard.edu/people/staff/mgs/ ------------------------------------------------------------ -------
Alex Schuster wrote: > Hi! > > I just experienced some weird IDL behaviour: > > IDL> help, 1.0d+2.0d > > help, 1.0d+2.0d > ^ > % Syntax error. > IDL> help, 1d+2d > > help, 1d+2d > ^ > % Syntax error. > > Strange, isn't it? There's no problem with byte constants: > > IDL> help, 1b+2b > <Expression> BYTE = 3 > > An additional blank helps: > > IDL> help, 1d +2d > <Expression> DOUBLE = 3.0000000 > > I didn't try IDL 5.2, but it happened with 4.0 and 5.1 on Unix and > Windows. I guess IDL expects an exponential notation like 1d0, and is > confused by the nonnumeric plus character. > > Alex > -- > Alex Schuster Wonko@weird.cologne.de PGP Key available > alex@pet.mpin-koeln.mpg.de If you look to the exponent definition it isn't strange because help, 1d+2 <Expression> DOUBLE = 100.00000 It isn't allowed to use the D to define double more than once in a definiton of a number. If you won't use blank to separate the numbers you can use () help, (1d)+(2d) <Expression> DOUBLE = 3.0000000 R.Bauer