Code Monkey home page Code Monkey logo

Comments (6)

vnmakarov avatar vnmakarov commented on July 21, 2024

Thank you for reporting this issue. GLIBC uses GCC builtins for getting inifinity and NaN. For non GCC conforming compilers, math.h uses big values and 0.0 / 0.0 for NAN.

I can not remove warnings because these warnings are useful in other cases but I can fix the error. The patch will be ready soon.

from mir.

vnmakarov avatar vnmakarov commented on July 21, 2024

Here is the patch
https://github.com/vnmakarov/mir/compare/84b277a..5f91154

from mir.

dibyendumajumdar avatar dibyendumajumdar commented on July 21, 2024

Is there a way to get Nan, -Inf and Inf values in MIR.
I am using following in my C output but not sure if this works:

#define nan (0./0.)
#define inf (1./0.)

Basically in a JIT mode, it is better to not have to rely on any external headers; in Ravi, no headers are used, and I rely only upon MIR.

from mir.

vnmakarov avatar vnmakarov commented on July 21, 2024

Is there a way to get Nan, -Inf and Inf values in MIR.
I am using following in my C output but not sure if this works:

#define nan (0./0.)
#define inf (1./0.)

It might be target-dependent. But for x86-64 1.0/0.0 is infinitity. 0.0/0.0 is actually -nan. It is better to use function nanl for getting NAN or the following code

static unsigned long nan_long = 0x7fffffffffffffff;
#define nan (*(double *)&nan_long)

Another problem is that NAN and INFITITY is defined in math.h. If I define builtin functions for such values and define macro __GNUC__, there would be no problem. But defining __GNUC__ would create much more other problems because most of GCC extensions are not implemented in c2m and a lot of programs check this to use these extensions.

Basically in a JIT mode, it is better to not have to rely on any external headers; in Ravi, no headers are used, and I rely only upon MIR.

from mir.

dibyendumajumdar avatar dibyendumajumdar commented on July 21, 2024

@vnmakarov Okay thank you. I suppose I can use just a macro - or would the static be optimized away?

I agree it is not a good idea to define __GNUC__ unless you want years of pain! :-)

Regards

from mir.

edubart avatar edubart commented on July 21, 2024

As <math.h> can be included without issues since the patch and the warnings can be silenced with -w, I am closing this.

from mir.

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.