:- module math. :- pragma termination_info((math:pi) = (builtin:out), infinite, cannot_loop). :- pragma termination_info((math:e) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:ceiling((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:floor((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:round((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:truncate((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:sqrt((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:solve_quadratic((builtin:in), (builtin:in), (builtin:in)) = (builtin:out), finite(2, [no, no, no, no]), can_loop). :- pragma termination_info(math:pow((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:exp((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:ln((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:log10((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:log2((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:log((builtin:in), (builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:sin((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:cos((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:tan((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:asin((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:acos((builtin:in)) = (builtin:out), infinite, can_loop). :- pragma termination_info(math:atan((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:atan2((builtin:in), (builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:sinh((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:cosh((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(math:tanh((builtin:in)) = (builtin:out), infinite, cannot_loop).