[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