*From*: Bjorn Reese <breese mail1 stofanet dk>*To*: xml gnome org*Subject*: Re: [xml] XPath fix*Date*: Fri, 22 Mar 2002 16:25:26 +0000

Cyberthymia wrote:

Daniel wrote:As a heads up, I'm working on a fix for one of the number expressions - libxml returns 1 for the expression "5.46 mod 2.6". Apparently, accordingtothe xsl-list, it should return "0.26" (Something to do with Java doing floating point mods, C only doing integer mods).

The C % operator uses integer arithmetic, the C fmod() function uses floating-point (and yields 0.26 in the above example).

Section 3.5 of the XPath spec states: "This is the same as the % operator in Java and ECMAScript." "This is not the same as the IEEE 754 remainder operation, which returns the remainder from a rounding division." So they may be right, I hate those parts where XPath/XSLT relies on Java for the semantic of operations, it is usually a mess.

Especially when they require IEEE 754 complicancy in some situations (e.g. NaN) but not in others.

That bit confused the heck out of me - so does that imply that Java doesn't do IEEE 754 floating point numbers properly?

According to the Java Language Specification (section 15.17.3) <quote> The result of a floating-point remainder operation as computed by the % operator is not the same as that produced by the remainder operation defined by IEEE 754. The IEEE 754 remainder operation computes the remainder from a rounding division, not a truncating division, and so its behavior is not analogous to that of the usual integer remainder operator. Instead, the Java programming language defines % on floating-point operations to behave in a manner analogous to that of the integer remainder operator; this may be compared with the C library function fmod. The IEEE 754 remainder operation may be computed by the library routine Math.IEEEremainder. </quote>

**References**:**[xml] XPath fix***From:*Richard Jinks

**Re: [xml] XPath fix***From:*Daniel Veillard

**Re: [xml] XPath fix***From:*Cyberthymia

[Date Prev][Date Next] [Thread Prev][Thread Next] [Thread Index] [Date Index] [Author Index]