Merge lp:~paul-lucas/zorba/bug-1147518 into lp:zorba

Proposed by Paul J. Lucas on 2013-04-11
Status: Merged
Approved by: Matthias Brantner on 2013-04-11
Approved revision: 11369
Merged at revision: 11369
Proposed branch: lp:~paul-lucas/zorba/bug-1147518
Merge into: lp:zorba
Diff against target: 339 lines (+90/-87)
17 files modified
ChangeLog (+1/-0)
src/runtime/numerics/numerics_impl.cpp (+64/-60)
src/zorbatypes/decimal.cpp (+12/-1)
src/zorbatypes/decimal.h (+1/-0)
test/fots/CMakeLists.txt (+0/-11)
test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-INF-1.xml.res (+1/-2)
test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-INF-2.xml.res (+1/-2)
test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-NaN.xml.res (+1/-2)
test/rbkt/Queries/zorba/numerics/round-half-to-even-INF-1.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-INF-2.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-NaN.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-01.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-02.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-03.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-01.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-02.xq (+1/-1)
test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-03.xq (+1/-1)
To merge this branch: bzr merge lp:~paul-lucas/zorba/bug-1147518
Reviewer Review Type Date Requested Status
Matthias Brantner 2013-04-11 Approve on 2013-04-11
Paul J. Lucas Approve on 2013-04-11
Review via email: mp+158449@code.launchpad.net

Commit Message

Fixed all FOTS test failures.

Description of the Change

Fixed all FOTS test failures.

To post a comment you must log in.
Paul J. Lucas (paul-lucas) :
review: Approve
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job bug-1147518-2013-04-11T18-39-52.691Z is finished. The final status was:

All tests succeeded!

Zorba Build Bot (zorba-buildbot) wrote :

Voting does not meet specified criteria. Required: Approve > 1, Disapprove < 1, Needs Fixing < 1, Pending < 1, Needs Information < 1, Resubmit < 1. Got: 1 Approve.

We have to agree on which error raising macro is used where. It doesn't make sense to go back and forth between "throw XQUERY_EXCEPTION" and "RAISE_ERROR".

review: Approve
Paul J. Lucas (paul-lucas) wrote :

> We have to agree on which error raising macro is used where. It doesn't make
> sense to go back and forth between "throw XQUERY_EXCEPTION" and "RAISE_ERROR".

RAISE_ERROR was something that Markos introduced. It's completely unnecessary. It gratuitously changes the order or the arguments.

It doesn't work for ZORBA_EXCEPTION (which often means that code is incorrectly throwing an XQueryException rather than a ZorbaException where a ZorbaException is the correct exception to throw).

There are 4 flavors of the macro that are difficult to remember. Those 4 flavors don't even cover all cases. These macros are similar to the original, ugly error macros.

Since Markos is intransigent, the only thing we can do is to not approve merge proposals if anybody other than Markos uses the macros.

Paul J. Lucas (paul-lucas) wrote :

Here's the e-mail I originally complained about this:

From: "Paul J. Lucas" <email address hidden>
Subject: diagnostics/util_macros.h
Date: Thu, 30 Jun 2011 10:34:50 -0700
Message-Id: <email address hidden>
To: zorba-coders <email address hidden>

Markos -

Why did you add this file and these macros? Part of the point of reworking exceptions was to get rid of all those ugly ZORBA_ERROR macros -- and here you are putting them back.

It's also not clear to anybody what they do. If I see:

 RAISE_ERROR( ... )

I don't know what it does. Does it print an error message and call abort? Does it throw an exception?

The reason I designed the current exception mechanism the way it is is precisely to leave the "throw" in the code explicitly visible so anybody reading the code knows that an exception is being thrown and that execution will not continue past that line.

- Paul

Chris Hillery (ceejatec) wrote :

I could write a script to automatically vote Needs Fixing on any merge proposal that has RAISE_ERROR in it.

Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job bug-1147518-2013-04-11T20-36-46.216Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2013-04-11 16:59:33 +0000
3+++ ChangeLog 2013-04-11 18:16:24 +0000
4@@ -40,6 +40,7 @@
5 Bug Fixes/Other Changes:
6 * Fixed bug #1123836 (overflows in date/time casts now return FODT0001 and
7 in durations return FODT0002)
8+ * Fixed bug #1147518 (fn:round-half-to-even (at least 11 failures))
9 * Fixed bug #1114228 (unrecognized options in the XQuery namespace now raise an error)
10 * Fixed bug #1124273 (xqdoc crash because of annotation literals)
11 * Fixed bug #867027 (XQST0059 error messages inconsistent)
12
13=== modified file 'src/runtime/numerics/numerics_impl.cpp'
14--- src/runtime/numerics/numerics_impl.cpp 2013-04-04 04:06:57 +0000
15+++ src/runtime/numerics/numerics_impl.cpp 2013-04-11 18:16:24 +0000
16@@ -258,7 +258,6 @@
17 RoundIterator::nextImpl(store::Item_t& result, PlanState& planState) const
18 {
19 store::Item_t item;
20- store::Item_t res;
21 xqtref_t type;
22 store::Item_t precision;
23 Integer precision_integer(0);
24@@ -327,72 +326,77 @@
25 }
26
27 //6.4.5 fn:round-half-to-even
28-bool
29-RoundHalfToEvenIterator::nextImpl(store::Item_t& result, PlanState& planState) const
30-{
31+bool RoundHalfToEvenIterator::nextImpl( store::Item_t &result,
32+ PlanState& planState ) const {
33 store::Item_t item;
34- store::Item_t itemPrec;
35- store::Item_t res;
36+ xs_integer precision;
37+ RootTypeManager const &rtm = GENV_TYPESYSTEM;
38+ TypeManager const *const tm = theSctx->get_typemanager();
39 xqtref_t type;
40- Integer precision(0);
41-
42- const TypeManager* tm = theSctx->get_typemanager();
43- const RootTypeManager& rtm = GENV_TYPESYSTEM;
44-
45- PlanIteratorState* state;
46- DEFAULT_STACK_INIT ( PlanIteratorState, state, planState );
47-
48- if (consumeNext(result, theChildren [0].getp(), planState ))
49- {
50- if (theChildren.size() == 2)
51- {
52- consumeNext(itemPrec, theChildren[1].getp(), planState);
53- assert(itemPrec->isAtomic());
54-
55- precision = itemPrec->getIntegerValue();
56- }
57-
58- //get the value and the type of the item
59- assert(result->isAtomic());
60-
61- type = tm->create_value_type(result);
62-
63- //Parameters of type xs:untypedAtomic are always promoted to xs:double
64- if ( TypeOps::is_subtype(tm, *type, *rtm.UNTYPED_ATOMIC_TYPE_ONE))
65- {
66- GenericCast::castToAtomic(result, result, &*rtm.DOUBLE_TYPE_ONE, tm, NULL, loc);
67- type = tm->create_value_type (result);
68- }
69-
70- //item type is subtype of DOUBLE
71- if ( TypeOps::is_subtype(tm, *type, *rtm.DOUBLE_TYPE_ONE))
72- GENV_ITEMFACTORY->createDouble(result, result->getDoubleValue().roundHalfToEven(precision));
73-
74- //item type is subtype of FLOAT
75- else if ( TypeOps::is_subtype(tm, *type, *rtm.FLOAT_TYPE_ONE))
76- GENV_ITEMFACTORY->createFloat(result, result->getFloatValue().roundHalfToEven(precision));
77-
78- //item type is subtype of INTEGER
79- else if(TypeOps::is_subtype(tm, *type, *rtm.INTEGER_TYPE_ONE))
80- { /* do nothing */ }
81- //item type is subtype of DECIMAL
82- else if (TypeOps::is_subtype (tm, *type, *rtm.DECIMAL_TYPE_ONE))
83- GENV_ITEMFACTORY->createDecimal(result, result->getDecimalValue().roundHalfToEven(precision));
84+
85+ PlanIteratorState *state;
86+ DEFAULT_STACK_INIT( PlanIteratorState, state, planState );
87+
88+ if ( consumeNext( result, theChildren [0].getp(), planState ) ) {
89+ assert( result->isAtomic() );
90+ type = tm->create_value_type( result );
91+
92+ if ( theChildren.size() == 2 ) {
93+ consumeNext( item, theChildren[1].getp(), planState );
94+ assert( item->isAtomic() );
95+ precision = item->getIntegerValue();
96+ }
97+
98+ if ( TypeOps::is_subtype( tm, *type, *rtm.UNTYPED_ATOMIC_TYPE_ONE ) ) {
99+ //
100+ // XQuery 3.0 3.1.5.2: Each item in the atomic sequence that is of type
101+ // xs:untypedAtomic is cast to the expected generalized atomic type. For
102+ // built-in functions where the expected type is specified as numeric,
103+ // arguments of type xs:untypedAtomic are cast to xs:double.
104+ //
105+ GenericCast::castToAtomic(
106+ result, result, &*rtm.DOUBLE_TYPE_ONE, tm, NULL, loc
107+ );
108+ type = tm->create_value_type( result );
109+ }
110+
111+ if ( TypeOps::is_subtype( tm, *type, *rtm.DOUBLE_TYPE_ONE ) )
112+ GENV_ITEMFACTORY->createDouble(
113+ result, result->getDoubleValue().roundHalfToEven( precision )
114+ );
115+
116+ else if ( TypeOps::is_subtype( tm, *type, *rtm.FLOAT_TYPE_ONE ) )
117+ GENV_ITEMFACTORY->createFloat(
118+ result, result->getFloatValue().roundHalfToEven( precision )
119+ );
120+
121+ else if ( TypeOps::is_subtype( tm, *type, *rtm.INTEGER_TYPE_ONE ) )
122+ GENV_ITEMFACTORY->createInteger(
123+ result, result->getIntegerValue().roundHalfToEven( precision )
124+ );
125+
126+ else if ( TypeOps::is_subtype( tm, *type, *rtm.DECIMAL_TYPE_ONE ) )
127+ GENV_ITEMFACTORY->createDecimal(
128+ result, result->getDecimalValue().roundHalfToEven( precision )
129+ );
130
131 else
132- {
133- RAISE_ERROR(err::XPTY0004, loc,
134- ERROR_PARAMS(ZED(BadTypeFor_23), type, "fn:round-half-to-even"));
135- }
136+ throw XQUERY_EXCEPTION(
137+ err::XPTY0004,
138+ ERROR_PARAMS( ZED( BadTypeFor_23 ), type, "fn:round-half-to-even" ),
139+ ERROR_LOC( loc )
140+ );
141
142- if ( consumeNext(item, theChildren [0].getp(), planState ))
143- {
144- RAISE_ERROR(err::XPTY0004, loc,
145- ERROR_PARAMS(ZED(NoSeqForFnOp_2), "fn:round-half-to-even"));
146+ if ( consumeNext( item, theChildren [0].getp(), planState ) ) {
147+ throw XQUERY_EXCEPTION(
148+ err::XPTY0004,
149+ ERROR_PARAMS( ZED( NoSeqForFnOp_2 ), "fn:round-half-to-even" ),
150+ ERROR_LOC( loc )
151+ );
152 }
153- STACK_PUSH ( true, state );
154+ STACK_PUSH( true, state );
155 }
156- STACK_END (state);
157+ STACK_END( state );
158 }
159
160 } // namespace zorba
161
162=== modified file 'src/zorbatypes/decimal.cpp'
163--- src/zorbatypes/decimal.cpp 2013-04-09 22:38:19 +0000
164+++ src/zorbatypes/decimal.cpp 2013-04-11 18:16:24 +0000
165@@ -38,9 +38,10 @@
166
167 namespace zorba {
168
169-
170 ///////////////////////////////////////////////////////////////////////////////
171
172+Decimal::value_type const Decimal::round_precision_limit( 64 );
173+
174 void Decimal::parse( char const *s, value_type *result, int parse_options ) {
175 if ( !*s )
176 throw std::invalid_argument( "empty string" );
177@@ -338,6 +339,11 @@
178
179 Decimal::value_type Decimal::round2( value_type const &v,
180 value_type const &precision ) {
181+ if ( precision < -round_precision_limit )
182+ return round2( v, -round_precision_limit );
183+ if ( precision > round_precision_limit )
184+ return round2( v, round_precision_limit );
185+
186 value_type const exp( value_type(10).pow( precision ) );
187 value_type result( v * exp );
188 result += MAPM::get0_5();
189@@ -357,6 +363,11 @@
190
191 Decimal::value_type Decimal::roundHalfToEven2( value_type const &v,
192 value_type const &precision ) {
193+ if ( precision < -round_precision_limit )
194+ return roundHalfToEven2( v, -round_precision_limit );
195+ if ( precision > round_precision_limit )
196+ return roundHalfToEven2( v, round_precision_limit );
197+
198 value_type const exp( value_type(10).pow( precision ) );
199 value_type result( v * exp );
200 bool const aHalfVal = (result - MAPM::get0_5()) == result.floor();
201
202=== modified file 'src/zorbatypes/decimal.h'
203--- src/zorbatypes/decimal.h 2013-04-09 22:38:19 +0000
204+++ src/zorbatypes/decimal.h 2013-04-11 18:16:24 +0000
205@@ -233,6 +233,7 @@
206 typedef long int_cast_type;
207
208 value_type value_;
209+ static value_type const round_precision_limit;
210
211 Decimal( value_type const &v ) : value_( v ) { }
212
213
214=== modified file 'test/fots/CMakeLists.txt'
215--- test/fots/CMakeLists.txt 2013-04-11 02:29:22 +0000
216+++ test/fots/CMakeLists.txt 2013-04-11 18:16:24 +0000
217@@ -213,17 +213,6 @@
218 EXPECTED_FOTS_FAILURE (fn-replace fn-replace-42 0)
219 EXPECTED_FOTS_FAILURE (fn-resolve-uri fn-resolve-uri-26 0)
220 EXPECTED_FOTS_FAILURE (fn-resolve-uri fn-resolve-uri-28 0)
221-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-9 0)
222-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-30 0)
223-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-31 0)
224-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-32 0)
225-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-33 0)
226-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-34 0)
227-EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-35 0)
228-EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-001 0)
229-EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-003 0)
230-EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-005 0)
231-EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-012 0)
232 EXPECTED_FOTS_FAILURE (fn-serialize serialize-xml-007a 0)
233 EXPECTED_FOTS_FAILURE (fn-serialize serialize-xml-008 0)
234 EXPECTED_FOTS_FAILURE (fn-string-length fn-string-length-22 0)
235
236=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even8.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-INF-1.xml.res'
237--- test/rbkt/ExpQueryResults/zorba/math/round-half-to-even8.xml.res 2013-02-07 17:24:36 +0000
238+++ test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-INF-1.xml.res 2013-04-11 18:16:24 +0000
239@@ -1,2 +1,1 @@
240-<?xml version="1.0" encoding="UTF-8"?>
241-INF
242\ No newline at end of file
243+INF
244
245=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even9.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-INF-2.xml.res'
246--- test/rbkt/ExpQueryResults/zorba/math/round-half-to-even9.xml.res 2013-02-07 17:24:36 +0000
247+++ test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-INF-2.xml.res 2013-04-11 18:16:24 +0000
248@@ -1,2 +1,1 @@
249-<?xml version="1.0" encoding="UTF-8"?>
250--INF
251\ No newline at end of file
252+-INF
253
254=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even7.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-NaN.xml.res'
255--- test/rbkt/ExpQueryResults/zorba/math/round-half-to-even7.xml.res 2013-02-07 17:24:36 +0000
256+++ test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-NaN.xml.res 2013-04-11 18:16:24 +0000
257@@ -1,2 +1,1 @@
258-<?xml version="1.0" encoding="UTF-8"?>
259-NaN
260\ No newline at end of file
261+NaN
262
263=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even1.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-xs_decimal-01.xml.res'
264=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even2.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-xs_decimal-02.xml.res'
265=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even3.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-xs_decimal-03.xml.res'
266=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even4.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-xs_double-01.xml.res'
267=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even5.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-xs_double-02.xml.res'
268=== renamed file 'test/rbkt/ExpQueryResults/zorba/math/round-half-to-even6.xml.res' => 'test/rbkt/ExpQueryResults/zorba/numerics/round-half-to-even-xs_double-03.xml.res'
269=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even8.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-INF-1.xq'
270--- test/rbkt/Queries/zorba/math/round-half-to-even8.xq 2013-02-07 17:24:36 +0000
271+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-INF-1.xq 2013-04-11 18:16:24 +0000
272@@ -1,1 +1,1 @@
273-fn:round-half-to-even(xs:double("INF"))
274\ No newline at end of file
275+fn:round-half-to-even( xs:double("INF") )
276
277=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even9.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-INF-2.xq'
278--- test/rbkt/Queries/zorba/math/round-half-to-even9.xq 2013-02-07 17:24:36 +0000
279+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-INF-2.xq 2013-04-11 18:16:24 +0000
280@@ -1,1 +1,1 @@
281-fn:round-half-to-even(xs:double("-INF"))
282\ No newline at end of file
283+fn:round-half-to-even( xs:double("-INF") )
284
285=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even7.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-NaN.xq'
286--- test/rbkt/Queries/zorba/math/round-half-to-even7.xq 2013-02-07 17:24:36 +0000
287+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-NaN.xq 2013-04-11 18:16:24 +0000
288@@ -1,1 +1,1 @@
289-fn:round-half-to-even(xs:double("NaN"))
290\ No newline at end of file
291+fn:round-half-to-even( xs:double("NaN") )
292
293=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even1.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-01.xq'
294--- test/rbkt/Queries/zorba/math/round-half-to-even1.xq 2013-02-07 17:24:36 +0000
295+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-01.xq 2013-04-11 18:16:24 +0000
296@@ -1,1 +1,1 @@
297-fn:round-half-to-even(0.5)
298\ No newline at end of file
299+fn:round-half-to-even( 0.5 )
300
301=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even2.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-02.xq'
302--- test/rbkt/Queries/zorba/math/round-half-to-even2.xq 2013-02-07 17:24:36 +0000
303+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-02.xq 2013-04-11 18:16:24 +0000
304@@ -1,1 +1,1 @@
305-fn:round-half-to-even(1.5)
306\ No newline at end of file
307+fn:round-half-to-even( 1.5 )
308
309=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even3.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-03.xq'
310--- test/rbkt/Queries/zorba/math/round-half-to-even3.xq 2013-02-07 17:24:36 +0000
311+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_decimal-03.xq 2013-04-11 18:16:24 +0000
312@@ -1,1 +1,1 @@
313-fn:round-half-to-even(2.5)
314\ No newline at end of file
315+fn:round-half-to-even( 2.5 )
316
317=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even4.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-01.xq'
318--- test/rbkt/Queries/zorba/math/round-half-to-even4.xq 2013-02-07 17:24:36 +0000
319+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-01.xq 2013-04-11 18:16:24 +0000
320@@ -1,1 +1,1 @@
321-fn:round-half-to-even(3.567812E+3, 2)
322\ No newline at end of file
323+fn:round-half-to-even( 3.567812E+3, 2 )
324
325=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even5.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-02.xq'
326--- test/rbkt/Queries/zorba/math/round-half-to-even5.xq 2013-02-07 17:24:36 +0000
327+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-02.xq 2013-04-11 18:16:24 +0000
328@@ -1,1 +1,1 @@
329-fn:round-half-to-even(4.7564E-3, 2)
330\ No newline at end of file
331+fn:round-half-to-even( 4.7564E-3, 2 )
332
333=== renamed file 'test/rbkt/Queries/zorba/math/round-half-to-even6.xq' => 'test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-03.xq'
334--- test/rbkt/Queries/zorba/math/round-half-to-even6.xq 2013-02-07 17:24:36 +0000
335+++ test/rbkt/Queries/zorba/numerics/round-half-to-even-xs_double-03.xq 2013-04-11 18:16:24 +0000
336@@ -1,1 +1,1 @@
337-fn:round-half-to-even(35612.25, -2)
338\ No newline at end of file
339+fn:round-half-to-even( 35612.25, -2 )

Subscribers

People subscribed via source and target branches