/* Copyright 2022-2023 Gabriel Jensen. This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at . */ #if !defined(zap_priv_hdr_math) #define zap_priv_hdr_math #include zap_priv_cdecl typedef struct { zap_i8 quot; zap_i8 rem; } zap_quotrem8; typedef struct { zap_i01 quot; zap_i01 rem; } zap_quotrem01; typedef struct { zap_i02 quot; zap_i02 rem; } zap_quotrem02; typedef struct { zap_i04 quot; zap_i04 rem; } zap_quotrem04; zap_i04 zap_priv_div0(void); zap_priv_unseq zap_i8 zap_abs8( zap_i8s val); zap_priv_unseq zap_i01 zap_abs01(zap_i01s val); zap_priv_unseq zap_i02 zap_abs02(zap_i02s val); zap_priv_unseq zap_i04 zap_abs04(zap_i04s val); zap_priv_unseq zap_quotrem8 zap_divmod8( zap_i8 num,zap_i8 den); zap_priv_unseq zap_quotrem01 zap_divmod01(zap_i01 num,zap_i01 den); zap_priv_unseq zap_quotrem02 zap_divmod02(zap_i02 num,zap_i02 den); zap_priv_unseq zap_quotrem04 zap_divmod04(zap_i04 num,zap_i04 den); zap_priv_unseq zap_i8 zap_exp8( zap_i8 val,zap_i8 n); zap_priv_unseq zap_i01 zap_exp01(zap_i01 val,zap_i01 n); zap_priv_unseq zap_i02 zap_exp02(zap_i02 val,zap_i02 n); zap_priv_unseq zap_i04 zap_exp04(zap_i04 val,zap_i04 n); zap_priv_unseq zap_i8 zap_log8( zap_i8 val,zap_i8 n); zap_priv_unseq zap_i01 zap_log01(zap_i01 val,zap_i01 n); zap_priv_unseq zap_i02 zap_log02(zap_i02 val,zap_i02 n); zap_priv_unseq zap_i04 zap_log04(zap_i04 val,zap_i04 n); zap_priv_unseq zap_i8 zap_root8( zap_i8 val,zap_i8 n); zap_priv_unseq zap_i01 zap_root01(zap_i01 val,zap_i01 n); zap_priv_unseq zap_i02 zap_root02(zap_i02 val,zap_i02 n); zap_priv_unseq zap_i04 zap_root04(zap_i04 val,zap_i04 n); zap_priv_cdeclend #endif