StaticCompiler.jl does not allow exceptions. I got stuck trying to compile code involving the mod operator %
, as it can raise an exception DivideError
if you’re dividing by zero. How can I work around this?
I found a solution. Define a new function
function myrem(a, b)
b==0 ? 0 : a%b
end
Then replace any a%b
in the code by myrem(a, b)
. This allows the compiler to know that I never call %
when b
is zero, and I’m able to use StaticCompiler.compile_executable
, without getting errors.
Edit: corrected operator name from mod
to rem
.
3 Likes
You can redefine %
within your module if needed. Also you may mean rem
rather than mod
.
julia> %(a,b) = b == 0 ? 0 : Base.rem(a, b)
% (generic function with 1 method)
1 Like