git.net

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

[jira] [Commented] (DAFFODIL-1714) ULong modulus operator broken


    [ https://issues.apache.org/jira/browse/DAFFODIL-1714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16490969#comment-16490969 ] 

Michael Beckerle commented on DAFFODIL-1714:
--------------------------------------------

So this fix should become a PR for the scala-unsigned library. We forked that library, can't recall why... probably because there is no binary distribution of it?

https://github.com/nystrom/scala-unsigned is the origin.

> ULong modulus operator broken
> -----------------------------
>
>                 Key: DAFFODIL-1714
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-1714
>             Project: Daffodil
>          Issue Type: Bug
>          Components: General, Libraries
>    Affects Versions: 2.0.0
>            Reporter: Steve Lawrence
>            Assignee: Russ Williams
>            Priority: Major
>             Fix For: deferred
>
>
> It appears that the ULong modulus operator is broken. If we run this code:
> {code}
>     for (i <- 0 to 16 ) {
>       val numerator = ULong(i)
>       val denominator = ULong(8)
>       val remainder = numerator % denominator
>       println(i + " % 8 = " + remainder)
>     }
> {code}
> we get the result:
> {code}
> 0 % 8 = 0
> 1 % 8 = 1
> 2 % 8 = 2
> 3 % 8 = 3
> 4 % 8 = 4
> 5 % 8 = 5
> 6 % 8 = 6
> 7 % 8 = 7
> 8 % 8 = 8
> 9 % 8 = 9
> 10 % 8 = 10
> 11 % 8 = 11
> 12 % 8 = 12
> 13 % 8 = 13
> 14 % 8 = 14
> 15 % 8 = 15
> 16 % 8 = 0
> {code}
> Anything % 8 should always be less than 8. But some results are greater than 8. Not sure exactly what is going on, and the generated bytecode is really hard to follow. In fact, I wouldn't be surprised if ULongs are actually slowing things down. The byte code was kindof a mess. We might want to revisit ULongs and how else to support > 4GB files.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)