Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Numerical exception on Windows with preprocess=on #690

Open
christoph-cullmann opened this issue Feb 10, 2025 · 10 comments
Open

Numerical exception on Windows with preprocess=on #690

christoph-cullmann opened this issue Feb 10, 2025 · 10 comments

Comments

@christoph-cullmann
Copy link

preprocess=on or all other values I tried beside off result in a crash on Windows, works on Linux.

https://github.com/christoph-cullmann/ilp/blob/main/value_110885599.lp

@christoph-cullmann
Copy link
Author

Tried to debug it a bit, runs into error in

[0x0] clpsolve!computeGcd+0x29 (Inline Function) (Inline Function)

If I inspect the code, we use long there, is that a good thing? That will be on most 64 bit systems 64 bit, just not on Windows.

@jjhforrest

@jjhforrest
Copy link
Contributor

Does it get through preprocessing? I am not sure I understand the "clpsolve" bit. I think code should work even with 32 bits - maybe someone else can help.

@christoph-cullmann
Copy link
Author

If I use this patch, it passes the preprocessing without crash and with the right end result:

64.diff.txt

@christoph-cullmann
Copy link
Author

I think this and some other gcd copy in gomory are the only places that try to use 'long' for such computations and therefore do very different stuff on Win64 compared to other 64 bit operating systems that have 64 bit longs.

@christoph-cullmann
Copy link
Author

That patch fixes most of my Windows only issues, some timeouts and rounding issues, too.

@christoph-cullmann
Copy link
Author

To be more specific, CglGMI and CglGomory at least have the same issues.

@jjhforrest
Copy link
Contributor

Great! Are you going to update master?

@christoph-cullmann
Copy link
Author

I can try to create a pull request. Is int64_t ok or do you want long long?

@jjhforrest
Copy link
Contributor

int64_t is fine.

@tkralphs
Copy link
Member

I merged the PR, but should stable branches also be patched? The PR was only for master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants