Floating point wrapper
The functions in the arb_fpwrap module of Arb are handled different from other functions. The methods for them are generated using
Arblib.ArbCall.@arbfpwrapcall_str — Macro@arbfpwrapcall_str strParse a string as an Arblib.ArbCall.ArbFPWrapFunction, generate the code for a corresponding method with Arblib.ArbCall.jlcode and evaluate the code.
For example
arbfpwrapcall"int arb_fpwrap_double_exp(double * res, double x, int flags)"defines the method
fpwrap_exp(
x::Union{Float16, Float32, Float64};
error_on_failure::Bool = Arblib.ArbCall.fpwrap_error_on_failure_default(),
correct_rounding::Bool = false, work_limit::Integer = 8,
)Arblib.ArbCall.ArbFPWrapFunction — TypeArbFPWrapFunction{T}(fname, args)
ArbFPWrapFunction(str)Struct representing an Arb function from the arb_fpwrap.h module.
Arblib.ArbCall.jlcode — Methodjlcode(af::ArbFPWrapFunction, jl_fname = jlfname(af))Generate the Julia code for calling a function from the fpwrap module of Arb from Julia.
The name for the generated method is given by removing the arb prefix and the double or cdouble in the middle of the name.
The flag argument that the C functions take are split into several keyword arguments in Julia. For the double type this is correct_rounding::Bool = false and work_limit::Integer = 8. For the cdouble type it also includes accurate_parts::Bool = false. The default values correspond to setting the flag to 0 in C.
The C functions return an int flag indicating the status. If the return flag is FPWRAP_SUCCESS the computed value is returned. If the return flag is FPWRAP_UNABLE it throws an error if the keyword argument error_on_failure is true and returns NaN otherwise. The default value for error_on_failure is handled by the following two methods
Arblib.ArbCall.fpwrap_error_on_failure_default — Functionfpwrap_error_on_failure_default()Function giving the default value for the argument error_on_failure. See also fpwrap_error_on_failure_default_set.
Arblib.ArbCall.fpwrap_error_on_failure_default_set — Functionfpwrap_error_on_failure_default_set(value::Bool)Set the default value for the argument error_on_failure for fpwrap methods. See also fpwrap_error_on_failure_default.