[FFmpeg-trac] #2713(avutil:new): av_d2q regression on sparc64 and ia64
FFmpeg
trac at avcodec.org
Thu Jul 4 16:54:48 CEST 2013
#2713: av_d2q regression on sparc64 and ia64
-------------------------------------+-------------------------------------
Reporter: cehoyos | Owner:
Type: defect | Status: new
Priority: important | Component: avutil
Version: git-master | Resolution:
Keywords: regression | Blocked By:
ia64 sparc64 | Reproduced by developer: 0
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Comment (by cehoyos):
Replying to [comment:7 michael]:
> This looks like a compiler bug or a bug in libc
> which versions of these are used ?
ia64: gcc-4.4, gcc-4.5, gcc-4.6, gcc-4.7 (works fine with icc), Debian
EGLIBC 2.17-5
sparc64: gcc-4.2, gcc-4.4, gcc-4.6, Debian EGLIBC 2.13-38
> Also please test nearbyint(), round(), floor(x + 0.5) and ceil(x - 0.5)
too
All four alternatives pass fate on both systems.
{{{
$ make fate-parseutils
TEST parseutils
--- ./tests/ref/fate/parseutils 2013-07-04 03:21:28.208764283 +0200
+++ tests/data/fate/parseutils 2013-07-04 14:48:50.008046808 +0200
@@ -6,24 +6,68 @@
'-123 / 0' -> -1/0 ERROR
'' -> 0/0 ERROR
'/' -> 0/0 ERROR
-' 123 / 321' -> 41/107 OK
+d: 0.383178, den: 2305843009213693952, d*den: 883547321287490176.000000,
(int64_t)(d*den+0.5): 883547321287490176, rint(d*den):
883547321287490176.000000,
+(uint64_t)rint(d*den): 883547321287490176, (int64_t)rint(d*den):
883547205323373184, llrint(d*den): 883547205323373184
+nearbyint(d*den): 883547321287490176.000000, (int64_t)nearbyint(d*den):
883547321287490176, round(d*den): 883547321287490176.000000,
(int64_t)round(d*den): 883547321287490176
+floor(d*den+0.5): 883547321287490176.000000, (int64_t)floor(d*den+0.5):
883547321287490176, ceil(d*den-0.5): 883547321287490176.000000,
(int64_t)ceil(d*den-0.5): 883547321287490176
+' 123 / 321' -> 213623/557504 OK
'foo/foo' -> 0/0 ERROR
'foo/1' -> 0/0 ERROR
'1/foo' -> 1/0 ERROR
'0/0' -> 0/0 ERROR
'/0' -> 0/0 ERROR
'1/' -> 1/0 ERROR
+d: 1.000000, den: 2305843009213693952, d*den: 2305843009213693952.000000,
(int64_t)(d*den+0.5): 2305843009213693952, rint(d*den):
2305843009213693952.000000,
+(uint64_t)rint(d*den): 2305843009213693952, (int64_t)rint(d*den):
2305843009213693952, llrint(d*den): 2305843009213693952
+nearbyint(d*den): 2305843009213693952.000000, (int64_t)nearbyint(d*den):
2305843009213693952, round(d*den): 2305843009213693952.000000,
(int64_t)round(d*den): 2305843009213693952
+floor(d*den+0.5): 2305843009213693952.000000, (int64_t)floor(d*den+0.5):
2305843009213693952, ceil(d*den-0.5): 2305843009213693952.000000,
(int64_t)ceil(d*den-0.5): 2305843009213693952
'1' -> 1/1 OK
+d: 0.000000, den: 2305843009213693952, d*den: 0.000000,
(int64_t)(d*den+0.5): 0, rint(d*den): 0.000000,
+(uint64_t)rint(d*den): 0, (int64_t)rint(d*den): 0, llrint(d*den): 0
+nearbyint(d*den): 0.000000, (int64_t)nearbyint(d*den): 0, round(d*den):
0.000000, (int64_t)round(d*den): 0
+floor(d*den+0.5): 0.000000, (int64_t)floor(d*den+0.5): 0,
ceil(d*den-0.5): -0.000000, (int64_t)ceil(d*den-0.5): 0
'0' -> 0/1 ERROR
+d: -1.000000, den: 2305843009213693952, d*den:
-2305843009213693952.000000, (int64_t)(d*den+0.5): -2305843009213693952,
rint(d*den): -2305843009213693952.000000,
+(uint64_t)rint(d*den): -9223372036854775808, (int64_t)rint(d*den):
-2305843009213693952, llrint(d*den): -2305843009213693952
+nearbyint(d*den): -2305843009213693952.000000, (int64_t)nearbyint(d*den):
-2305843009213693952, round(d*den): -2305843009213693952.000000,
(int64_t)round(d*den): -2305843009213693952
+floor(d*den+0.5): -2305843009213693952.000000, (int64_t)floor(d*den+0.5):
-2305843009213693952, ceil(d*den-0.5): -2305843009213693952.000000,
(int64_t)ceil(d*den-0.5): -2305843009213693952
'-123/123' -> -1/1 ERROR
'-foo' -> 0/0 ERROR
-'123.23' -> 12323/100 OK
-'.23' -> 23/100 OK
-'-.23' -> -23/100 ERROR
-'-0.234' -> -117/500 ERROR
+d: 123.230000, den: 36028797018963968, d*den: 4439828656646929920.000000,
(int64_t)(d*den+0.5): 4439828656646929920, rint(d*den):
4439828656646929920.000000,
+(uint64_t)rint(d*den): 4439828656646929920, (int64_t)rint(d*den):
4439827956567260672, llrint(d*den): 4439827956567260672
+nearbyint(d*den): 4439828656646929920.000000, (int64_t)nearbyint(d*den):
4439828656646929920, round(d*den): 4439828656646929920.000000,
(int64_t)round(d*den): 4439828656646929920
+floor(d*den+0.5): 4439828656646929920.000000, (int64_t)floor(d*den+0.5):
4439828656646929920, ceil(d*den-0.5): 4439828656646929920.000000,
(int64_t)ceil(d*den-0.5): 4439828656646929920
+'123.23' -> 697112/5657 OK
+d: 0.230000, den: 2305843009213693952, d*den: 530343892119149632.000000,
(int64_t)(d*den+0.5): 530343892119149632, rint(d*den):
530343892119149632.000000,
+(uint64_t)rint(d*den): 530343892119149632, (int64_t)rint(d*den):
530343664485882944, llrint(d*den): 530343664485882944
+nearbyint(d*den): 530343892119149632.000000, (int64_t)nearbyint(d*den):
530343892119149632, round(d*den): 530343892119149632.000000,
(int64_t)round(d*den): 530343892119149632
+floor(d*den+0.5): 530343892119149632.000000, (int64_t)floor(d*den+0.5):
530343892119149632, ceil(d*den-0.5): 530343892119149632.000000,
(int64_t)ceil(d*den-0.5): 530343892119149632
+'.23' -> 209687/911683 OK
+d: -0.230000, den: 2305843009213693952, d*den:
-530343892119149632.000000, (int64_t)(d*den+0.5): -530343892119149632,
rint(d*den): -530343892119149632.000000,
+(uint64_t)rint(d*den): -9223372036854775808, (int64_t)rint(d*den):
-530343664485882944, llrint(d*den): -530343664485882944
+nearbyint(d*den): -530343892119149632.000000, (int64_t)nearbyint(d*den):
-530343892119149632, round(d*den): -530343892119149632.000000,
(int64_t)round(d*den): -530343892119149632
+floor(d*den+0.5): -530343892119149632.000000, (int64_t)floor(d*den+0.5):
-530343892119149632, ceil(d*den-0.5): -530343892119149632.000000,
(int64_t)ceil(d*den-0.5): -530343892119149632
+'-.23' -> -209687/911683 ERROR
+d: -0.234000, den: 2305843009213693952, d*den:
-539567264156004416.000000, (int64_t)(d*den+0.5): -539567264156004416,
rint(d*den): -539567264156004416.000000,
+(uint64_t)rint(d*den): -9223372036854775808, (int64_t)rint(d*den):
-539567191141560384, llrint(d*den): -539567191141560384
+nearbyint(d*den): -539567264156004416.000000, (int64_t)nearbyint(d*den):
-539567264156004416, round(d*den): -539567264156004416.000000,
(int64_t)round(d*den): -539567264156004416
+floor(d*den+0.5): -539567264156004416.000000, (int64_t)floor(d*den+0.5):
-539567264156004416, ceil(d*den-0.5): -539567264156004416.000000,
(int64_t)ceil(d*den-0.5): -539567264156004416
+'-0.234' -> -177357/757936 ERROR
+d: -0.000000, den: 2305843009213693952, d*den: -230584300921.369385,
(int64_t)(d*den+0.5): -230584300920, rint(d*den): -230584300921.000000,
+(uint64_t)rint(d*den): -9223372036854775808, (int64_t)rint(d*den):
-230584300921, llrint(d*den): -230584300921
+nearbyint(d*den): -230584300921.000000, (int64_t)nearbyint(d*den):
-230584300921, round(d*den): -230584300921.000000, (int64_t)round(d*den):
-230584300921
+floor(d*den+0.5): -230584300921.000000, (int64_t)floor(d*den+0.5):
-230584300921, ceil(d*den-0.5): -230584300921.000000,
(int64_t)ceil(d*den-0.5): -230584300921
'-0.0000001' -> -1/10000000 ERROR
-' 21332.2324 ' -> 917286/43 OK
-' -21332.2324 ' -> -917286/43 ERROR
+d: 21332.232400, den: 140737488355328, d*den: 3002244808988150784.000000,
(int64_t)(d*den+0.5): 3002244808988150784, rint(d*den):
3002244808988150784.000000,
+(uint64_t)rint(d*den): 3002244808988150784, (int64_t)rint(d*den):
3002242889137769472, llrint(d*den): 3002242889137769472
+nearbyint(d*den): 3002244808988150784.000000, (int64_t)nearbyint(d*den):
3002244808988150784, round(d*den): 3002244808988150784.000000,
(int64_t)round(d*den): 3002244808988150784
+floor(d*den+0.5): 3002244808988150784.000000, (int64_t)floor(d*den+0.5):
3002244808988150784, ceil(d*den-0.5): 3002244808988150784.000000,
(int64_t)ceil(d*den-0.5): 3002244808988150784
+' 21332.2324 ' -> 682631/32 OK
+d: -21332.232400, den: 140737488355328, d*den:
-3002244808988150784.000000, (int64_t)(d*den+0.5): -3002244808988150784,
rint(d*den): -3002244808988150784.000000,
+(uint64_t)rint(d*den): -9223372036854775808, (int64_t)rint(d*den):
-3002242889137769472, llrint(d*den): -3002242889137769472
+nearbyint(d*den): -3002244808988150784.000000, (int64_t)nearbyint(d*den):
-3002244808988150784, round(d*den): -3002244808988150784.000000,
(int64_t)round(d*den): -3002244808988150784
+floor(d*den+0.5): -3002244808988150784.000000, (int64_t)floor(d*den+0.5):
-3002244808988150784, ceil(d*den-0.5): -3002244808988150784.000000,
(int64_t)ceil(d*den-0.5): -3002244808988150784
+' -21332.2324 ' -> -682631/32 ERROR
Testing av_parse_color()
bikeshed -> R(80) G(64) B(140) A(59)
Test parseutils failed. Look at tests/data/fate/parseutils.err for
details.
}}}
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2713#comment:8>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list