On 9 Sep 2014, at 20:08, Roland Haas <[email protected]> wrote:
> Hello all, > >> If I set >> >> CoordBase::dx = 40/48 >> >> I get an error that dx should not be set to 0. I assume that Cactus >> is doing an integer division because the operands of the division have no >> fractional part. I think it should instead do a real division because >> the parameter is real-valued. Is this desirable and/or possible? >> >> I can work around the above problem by using >> >> CoordBase::dx = 40.0/48 > There was a bit of a discussion on this related to the new parfile > parser (piraha) here: > > http://cactuscode.org/pipermail/users/2013-March/003352.html > > There were ended up making things such that the type of the target > parameter does not play a role until the very end. I think the > pre-piraha parfile parser then had code that would evaluate 40/48 using > floating point arithmetic and CCTK_ERROR if the result of 40/48. was not > an integer to 15 digits or so. So that may be a middle ground. It would > mean that CoordBase::dx = 40/48 sets dx to 0.8333 but Driver::ncells = > 40/48 aborts with an error. For the later one can use int(40/48) to get > truncation at the end. > > I'd be happy having the target parameter type decide on what the parser > expects to find (so that eg string parameter values are never > interpreted as expressions and eg "a::name = 08/15" is allowed). :-) I think it is confusing to set a real-valued parameter to 40/48 and have a message which says zero is not valid. At the very least the error message should be changed. Probably the error message should include the final value of the parameter that is being used in the range check. Something equivalent to (but with better wording): "The parameter CoordBase::dx, entered as 40/48, evaluated to 0, which is not in the range ..." I understand that the intention is to be as close to C as possible, and maybe we should do that for consistency. Note that not all Cactus users are C programmers, and 40/48 == 0 is probably a common pitfall for newcomers to the language. -- Ian Hinder http://numrel.aei.mpg.de/people/hinder
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ Users mailing list [email protected] http://cactuscode.org/mailman/listinfo/users
