Coder Social home page Coder Social logo

Invalid NaN literal about wabt HOT 12 CLOSED

webassembly avatar webassembly commented on June 20, 2024
Invalid NaN literal

from wabt.

Comments (12)

binji avatar binji commented on June 20, 2024

spec repo gives a clearer error (for nan:0x7ff8000000000000):

test6.wast:2.41-2.63: constant out of range: nan payload must not overlap with exponent bits

basically, nan:0x<hexdigits> should only be the nan tag of the float, not its entire bit pattern.

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

Hmm, that's a problem: it's unspecified by IEEE-754 what the NaN encoding means. Encoding the payload makes more sense honestly, but then how do we encode the sign?

We could just fix binaryen, but I'd like us to figure out how exactly.

from wabt.

 avatar commented on June 20, 2024

When looking at parsing these it did occur that it would be convenient and clear in some contexts to be able to just specify the raw bits. Is there a good reason this is not allowed. For example, change nan:... to raw:... or bits:...

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

Hexadecimal floating-point is the way to go for this... except for NaNs.

from wabt.

binji avatar binji commented on June 20, 2024

@jfbastien -nan:0xbeef works too. See https://github.com/WebAssembly/sexpr-wasm-prototype/blob/master/test/parse/expr/const.txt#L23.

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

Right, what I mean is that the hexadecimal floating-point specification handles all values precisely, but NaNs aren't a value and they're not handled by hexfloat.

from wabt.

 avatar commented on June 20, 2024

A producer might not even want to mess with hexfloat, just reliably emit the raw bit, and could do so using the same method as for nan:... It would not seem to complicate the consumer, perhaps even avoid a few tests.

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

@JSStats discussed here: WebAssembly/design#292

from wabt.

sunfishcode avatar sunfishcode commented on June 20, 2024

To address one specific detail here: IEEE 754 defines unary negation as a purely bitwise operation with behavior defined even on NaNs: it just sets the sign bit. Consequently, it's reasonably consistent to use -nan... for NaNs with the sign bit set.

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

@sunfishcode ooh cute! I like :)

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

See WebAssembly/binaryen#151

from wabt.

jfbastien avatar jfbastien commented on June 20, 2024

I'll call this bug fixed by the binaryen PR.

from wabt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.