summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.txt8
-rw-r--r--test.cc157
-rw-r--r--zp/include/zp/prv/flt.h40
-rw-r--r--zp/include/zp/prv/int.h163
-rw-r--r--zp/include/zp/str.h16
-rw-r--r--zp/include/zp/zp102
-rw-r--r--zp/include/zp/zp.h12
-rw-r--r--zp/source/any/mth/divmod.cc4
-rw-r--r--zp/source/any/str/fmt.cc8
-rw-r--r--zp/source/any/str/fmtlen.cc8
-rw-r--r--zp/source/ia32/zp/syscl.s2
11 files changed, 271 insertions, 249 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 599bc90..d89dd32 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -193,6 +193,14 @@
* Rename targ variable to tar;
* Don't use "fast" optimisation;
+* Add signed equivalent to siz: sizerr (size error);
+* Remove nopos;
+* Fix ptrdif not being defined;
+* Rename intptr to ptr;
+* Use int long and int long long instead of long and long long;
+* Update type identifiers;
+* Fix long doulbe type suffixes;
+
# 0.0.2
* Migrate to CMake;
diff --git a/test.cc b/test.cc
index b008006..4d8ad85 100644
--- a/test.cc
+++ b/test.cc
@@ -32,7 +32,7 @@ static_assert(::zp::isptr<int volatile * const volatile>::val == true);
static_assert(::zp::isptr<int const volatile * const volatile>::val == true);
static_assert(::zp::typequ<int,int>::val == true);
-static_assert(::zp::typequ<int,long>::val == false);
+static_assert(::zp::typequ<int,int long>::val == false);
static_assert(::zp::typequ<::zp::i8, ::std::uint8_t>::val == true);
static_assert(::zp::typequ<::zp::i8s, ::std::int8_t>::val == true);
@@ -43,8 +43,9 @@ static_assert(::zp::typequ<::zp::i02s,::std::int32_t>::val == true);
static_assert(::zp::typequ<::zp::i04, ::std::uint64_t>::val == true);
static_assert(::zp::typequ<::zp::i04s,::std::int64_t>::val == true);
-static_assert(::zp::typequ<::zp::intptr,::std::uintptr_t>::val == true);
-static_assert(::zp::typequ<::zp::siz, ::std::size_t>::val == true);
+static_assert(::zp::typequ<::zp::ptr, ::std::uintptr_t>::val == true);
+static_assert(::zp::typequ<::zp::ptrdif,::std::ptrdiff_t>::val == true);
+static_assert(::zp::typequ<::zp::siz, ::std::size_t>::val == true);
static_assert(::zp::typequ<::zp::remref<int>::typ, int>::val == true);
static_assert(::zp::typequ<::zp::remref<int &>::typ,int>::val == true);
@@ -80,84 +81,84 @@ static_assert(::zp::typequ<::zp::usgn<int const volatile>::typ, int unsi
static_assert(::zp::typequ<::zp::nulptrtyp,::std::nullptr_t>::val == true);
-static_assert(::zp::isusgn<char>::val == ::std::is_unsigned<char>::value);
-static_assert(::zp::isusgn<char16_t>::val == ::std::is_unsigned<char16_t>::value);
-static_assert(::zp::isusgn<char32_t>::val == ::std::is_unsigned<char32_t>::value);
-static_assert(::zp::isusgn<::zp::c8>::val == ::std::is_unsigned<::zp::c8>::value);
-static_assert(::zp::isusgn<double>::val == ::std::is_unsigned<double>::value);
-static_assert(::zp::isusgn<float>::val == ::std::is_unsigned<float>::value);
-static_assert(::zp::isusgn<int>::val == ::std::is_unsigned<int>::value);
-static_assert(::zp::isusgn<long>::val == ::std::is_unsigned<long>::value);
-static_assert(::zp::isusgn<double long>::val == ::std::is_unsigned<double long>::value);
-static_assert(::zp::isusgn<long long>::val == ::std::is_unsigned<long long>::value);
-static_assert(::zp::isusgn<short>::val == ::std::is_unsigned<short>::value);
-static_assert(::zp::isusgn<char signed>::val == ::std::is_unsigned<char signed>::value);
-static_assert(::zp::isusgn<char unsigned>::val == ::std::is_unsigned<char unsigned>::value);
-static_assert(::zp::isusgn<int unsigned>::val == ::std::is_unsigned<int unsigned>::value);
-static_assert(::zp::isusgn<long unsigned>::val == ::std::is_unsigned<long unsigned>::value);
-static_assert(::zp::isusgn<long long unsigned>::val == ::std::is_unsigned<long long unsigned>::value);
-static_assert(::zp::isusgn<short unsigned>::val == ::std::is_unsigned<short unsigned>::value);
-static_assert(::zp::isusgn<wchar_t>::val == ::std::is_unsigned<wchar_t>::value);
-
-static_assert(::zp::issgn<char>::val == ::std::is_signed<char>::value);
-static_assert(::zp::issgn<double>::val == ::std::is_signed<double>::value);
-static_assert(::zp::issgn<float>::val == ::std::is_signed<float>::value);
-static_assert(::zp::issgn<int>::val == ::std::is_signed<int>::value);
-static_assert(::zp::issgn<long>::val == ::std::is_signed<long>::value);
-static_assert(::zp::issgn<double long>::val == ::std::is_signed<double long>::value);
-static_assert(::zp::issgn<long long>::val == ::std::is_signed<long long>::value);
-static_assert(::zp::issgn<short>::val == ::std::is_signed<short>::value);
-static_assert(::zp::issgn<char signed>::val == ::std::is_signed<char signed>::value);
-static_assert(::zp::issgn<char unsigned>::val == ::std::is_signed<char unsigned>::value);
-static_assert(::zp::issgn<int unsigned>::val == ::std::is_signed<int unsigned>::value);
-static_assert(::zp::issgn<long unsigned>::val == ::std::is_signed<long unsigned>::value);
-static_assert(::zp::issgn<long long unsigned>::val == ::std::is_signed<long long unsigned>::value);
-static_assert(::zp::issgn<short unsigned>::val == ::std::is_signed<short unsigned>::value);
-static_assert(::zp::issgn<wchar_t>::val == ::std::is_signed<wchar_t>::value);
+static_assert(::zp::isusgn<char>::val == ::std::is_unsigned<char>::value);
+static_assert(::zp::isusgn<char16_t>::val == ::std::is_unsigned<char16_t>::value);
+static_assert(::zp::isusgn<char32_t>::val == ::std::is_unsigned<char32_t>::value);
+static_assert(::zp::isusgn<::zp::c8>::val == ::std::is_unsigned<::zp::c8>::value);
+static_assert(::zp::isusgn<double>::val == ::std::is_unsigned<double>::value);
+static_assert(::zp::isusgn<float>::val == ::std::is_unsigned<float>::value);
+static_assert(::zp::isusgn<int>::val == ::std::is_unsigned<int>::value);
+static_assert(::zp::isusgn<int long>::val == ::std::is_unsigned<int long>::value);
+static_assert(::zp::isusgn<double long>::val == ::std::is_unsigned<double long>::value);
+static_assert(::zp::isusgn<int long long>::val == ::std::is_unsigned<int long long>::value);
+static_assert(::zp::isusgn<short>::val == ::std::is_unsigned<short>::value);
+static_assert(::zp::isusgn<char signed>::val == ::std::is_unsigned<char signed>::value);
+static_assert(::zp::isusgn<char unsigned>::val == ::std::is_unsigned<char unsigned>::value);
+static_assert(::zp::isusgn<int unsigned>::val == ::std::is_unsigned<int unsigned>::value);
+static_assert(::zp::isusgn<int long unsigned>::val == ::std::is_unsigned<int long unsigned>::value);
+static_assert(::zp::isusgn<int long long unsigned>::val == ::std::is_unsigned<int long long unsigned>::value);
+static_assert(::zp::isusgn<short unsigned>::val == ::std::is_unsigned<short unsigned>::value);
+static_assert(::zp::isusgn<wchar_t>::val == ::std::is_unsigned<wchar_t>::value);
+
+static_assert(::zp::issgn<char>::val == ::std::is_signed<char>::value);
+static_assert(::zp::issgn<double>::val == ::std::is_signed<double>::value);
+static_assert(::zp::issgn<float>::val == ::std::is_signed<float>::value);
+static_assert(::zp::issgn<int>::val == ::std::is_signed<int>::value);
+static_assert(::zp::issgn<int long>::val == ::std::is_signed<int long>::value);
+static_assert(::zp::issgn<double long>::val == ::std::is_signed<double long>::value);
+static_assert(::zp::issgn<int long long>::val == ::std::is_signed<int long long>::value);
+static_assert(::zp::issgn<short>::val == ::std::is_signed<short>::value);
+static_assert(::zp::issgn<char signed>::val == ::std::is_signed<char signed>::value);
+static_assert(::zp::issgn<char unsigned>::val == ::std::is_signed<char unsigned>::value);
+static_assert(::zp::issgn<int unsigned>::val == ::std::is_signed<int unsigned>::value);
+static_assert(::zp::issgn<int long unsigned>::val == ::std::is_signed<int long unsigned>::value);
+static_assert(::zp::issgn<int long long unsigned>::val == ::std::is_signed<int long long unsigned>::value);
+static_assert(::zp::issgn<short unsigned>::val == ::std::is_signed<short unsigned>::value);
+static_assert(::zp::issgn<wchar_t>::val == ::std::is_signed<wchar_t>::value);
static_assert(::zp::bytelen == CHAR_BIT);
-static_assert(::zp::minval<bool>::val == ::std::numeric_limits<bool>::lowest());
-static_assert(::zp::minval<char>::val == ::std::numeric_limits<char>::lowest());
-static_assert(::zp::minval<char16_t>::val == ::std::numeric_limits<char16_t>::lowest());
-static_assert(::zp::minval<char32_t>::val == ::std::numeric_limits<char32_t>::lowest());
-static_assert(::zp::minval<::zp::c8>::val == ::std::numeric_limits<::zp::c8>::lowest());
-static_assert(::zp::minval<double>::val == ::std::numeric_limits<double>::lowest());
-static_assert(::zp::minval<float>::val == ::std::numeric_limits<float>::lowest());
-static_assert(::zp::minval<int>::val == ::std::numeric_limits<int>::lowest());
-static_assert(::zp::minval<long>::val == ::std::numeric_limits<long>::lowest());
-static_assert(::zp::minval<double long>::val == ::std::numeric_limits<double long>::lowest());
-static_assert(::zp::minval<long long>::val == ::std::numeric_limits<long long>::lowest());
-static_assert(::zp::minval<short>::val == ::std::numeric_limits<short>::lowest());
-static_assert(::zp::minval<char signed>::val == ::std::numeric_limits<char signed>::lowest());
-static_assert(::zp::minval<char unsigned>::val == ::std::numeric_limits<char unsigned>::lowest());
-static_assert(::zp::minval<short unsigned>::val == ::std::numeric_limits<short unsigned>::lowest());
-static_assert(::zp::minval<int unsigned>::val == ::std::numeric_limits<int unsigned>::lowest());
-static_assert(::zp::minval<long unsigned>::val == ::std::numeric_limits<long unsigned>::lowest());
-static_assert(::zp::minval<long long unsigned>::val == ::std::numeric_limits<long long unsigned>::lowest());
-static_assert(::zp::minval<wchar_t>::val == ::std::numeric_limits<wchar_t>::lowest());
-
-static_assert(::zp::maxval<bool>::val == ::std::numeric_limits<bool>::max());
-static_assert(::zp::maxval<char>::val == ::std::numeric_limits<char>::max());
-static_assert(::zp::maxval<char16_t>::val == ::std::numeric_limits<char16_t>::max());
-static_assert(::zp::maxval<char32_t>::val == ::std::numeric_limits<char32_t>::max());
-static_assert(::zp::maxval<::zp::c8>::val == ::std::numeric_limits<::zp::c8>::max());
-static_assert(::zp::maxval<double>::val == ::std::numeric_limits<double>::max());
-static_assert(::zp::maxval<float>::val == ::std::numeric_limits<float>::max());
-static_assert(::zp::maxval<int>::val == ::std::numeric_limits<int>::max());
-static_assert(::zp::maxval<long>::val == ::std::numeric_limits<long>::max());
-static_assert(::zp::maxval<double long>::val == ::std::numeric_limits<double long>::max());
-static_assert(::zp::maxval<long long>::val == ::std::numeric_limits<long long>::max());
-static_assert(::zp::maxval<short>::val == ::std::numeric_limits<short>::max());
-static_assert(::zp::maxval<char signed>::val == ::std::numeric_limits<char signed>::max());
-static_assert(::zp::maxval<char unsigned>::val == ::std::numeric_limits<char unsigned>::max());
-static_assert(::zp::maxval<short unsigned>::val == ::std::numeric_limits<short unsigned>::max());
-static_assert(::zp::maxval<int unsigned>::val == ::std::numeric_limits<int unsigned>::max());
-static_assert(::zp::maxval<long unsigned>::val == ::std::numeric_limits<long unsigned>::max());
-static_assert(::zp::maxval<long long unsigned>::val == ::std::numeric_limits<long long unsigned>::max());
-static_assert(::zp::maxval<wchar_t>::val == ::std::numeric_limits<wchar_t>::max());
-
-template<typename ltyp,typename rtyp> static auto cmp(int unsigned & numerr,long const ln,ltyp const & lvalref,rtyp const & rvalref) noexcept {
+static_assert(::zp::minval<bool>::val == ::std::numeric_limits<bool>::lowest());
+static_assert(::zp::minval<char>::val == ::std::numeric_limits<char>::lowest());
+static_assert(::zp::minval<char16_t>::val == ::std::numeric_limits<char16_t>::lowest());
+static_assert(::zp::minval<char32_t>::val == ::std::numeric_limits<char32_t>::lowest());
+static_assert(::zp::minval<::zp::c8>::val == ::std::numeric_limits<::zp::c8>::lowest());
+static_assert(::zp::minval<double>::val == ::std::numeric_limits<double>::lowest());
+static_assert(::zp::minval<float>::val == ::std::numeric_limits<float>::lowest());
+static_assert(::zp::minval<int>::val == ::std::numeric_limits<int>::lowest());
+static_assert(::zp::minval<int long>::val == ::std::numeric_limits<int long>::lowest());
+static_assert(::zp::minval<double long>::val == ::std::numeric_limits<double long>::lowest());
+static_assert(::zp::minval<int long long>::val == ::std::numeric_limits<int long long>::lowest());
+static_assert(::zp::minval<short>::val == ::std::numeric_limits<short>::lowest());
+static_assert(::zp::minval<char signed>::val == ::std::numeric_limits<char signed>::lowest());
+static_assert(::zp::minval<char unsigned>::val == ::std::numeric_limits<char unsigned>::lowest());
+static_assert(::zp::minval<short unsigned>::val == ::std::numeric_limits<short unsigned>::lowest());
+static_assert(::zp::minval<int unsigned>::val == ::std::numeric_limits<int unsigned>::lowest());
+static_assert(::zp::minval<int long unsigned>::val == ::std::numeric_limits<int long unsigned>::lowest());
+static_assert(::zp::minval<int long long unsigned>::val == ::std::numeric_limits<int long long unsigned>::lowest());
+static_assert(::zp::minval<wchar_t>::val == ::std::numeric_limits<wchar_t>::lowest());
+
+static_assert(::zp::maxval<bool>::val == ::std::numeric_limits<bool>::max());
+static_assert(::zp::maxval<char>::val == ::std::numeric_limits<char>::max());
+static_assert(::zp::maxval<char16_t>::val == ::std::numeric_limits<char16_t>::max());
+static_assert(::zp::maxval<char32_t>::val == ::std::numeric_limits<char32_t>::max());
+static_assert(::zp::maxval<::zp::c8>::val == ::std::numeric_limits<::zp::c8>::max());
+static_assert(::zp::maxval<double>::val == ::std::numeric_limits<double>::max());
+static_assert(::zp::maxval<float>::val == ::std::numeric_limits<float>::max());
+static_assert(::zp::maxval<int>::val == ::std::numeric_limits<int>::max());
+static_assert(::zp::maxval<int long>::val == ::std::numeric_limits<int long>::max());
+static_assert(::zp::maxval<double long>::val == ::std::numeric_limits<double long>::max());
+static_assert(::zp::maxval<int long long>::val == ::std::numeric_limits<int long long>::max());
+static_assert(::zp::maxval<short>::val == ::std::numeric_limits<short>::max());
+static_assert(::zp::maxval<char signed>::val == ::std::numeric_limits<char signed>::max());
+static_assert(::zp::maxval<char unsigned>::val == ::std::numeric_limits<char unsigned>::max());
+static_assert(::zp::maxval<short unsigned>::val == ::std::numeric_limits<short unsigned>::max());
+static_assert(::zp::maxval<int unsigned>::val == ::std::numeric_limits<int unsigned>::max());
+static_assert(::zp::maxval<int long unsigned>::val == ::std::numeric_limits<int long unsigned>::max());
+static_assert(::zp::maxval<int long long unsigned>::val == ::std::numeric_limits<int long long unsigned>::max());
+static_assert(::zp::maxval<wchar_t>::val == ::std::numeric_limits<wchar_t>::max());
+
+template<typename ltyp,typename rtyp> static auto cmp(int unsigned & numerr,int long const ln,ltyp const & lvalref,rtyp const & rvalref) noexcept {
char const * const ltypnm = typeid (ltyp).name();
char const * const rtypnm = typeid (rtyp).name();
diff --git a/zp/include/zp/prv/flt.h b/zp/include/zp/prv/flt.h
index 373e480..a8212d3 100644
--- a/zp/include/zp/prv/flt.h
+++ b/zp/include/zp/prv/flt.h
@@ -45,34 +45,34 @@
__MINGW32__ \
|| __MINGW64__
-#define zp_minvalld ((double long)-1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
-#define zp_maxvalld ((double long)+1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
+#define zp_minvaldl ((double long)-1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
+#define zp_maxvaldl ((double long)+1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
#else
-#define zp_minvalld ((double long)-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
-#define zp_maxvalld ((double long)+1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
+#define zp_minvaldl ((double long)-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
+#define zp_maxvaldl ((double long)+1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
#endif
#else
-#define zp_minvalld ((double long)-1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
-#define zp_maxvalld ((double long)+1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
+#define zp_minvaldl ((double long)-1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
+#define zp_maxvaldl ((double long)+1.18973149535723176502126385303097020516906332229462420044032373389173700552297072261641029033652888285354569780749557731442744315367028843419812557385374367867359320070697326320191591828296152436552951064679108661431179063216977883889613478656060039914875343321145491116008867984515486651285234014977303760000912547939396622315138362241783854274391783813871780588948754057516822634765923557697480511372564902088485522249479139937758502601177354918009979622602685950855888360815984690023564513234659447638493985927645628457966177293040780660922910271504608538808795932778162298682754783076808004015069494230341172895777710033571401055977524212405734700738625166011082837911962300846927720096515350020847447079244384854591288672300061908512647211195136146752763351956292759795725027800298079590419313960302147099703527646744553092202267965628099149823208332964124103850923918473478612192169721054348428704835340811304257300221642134891734717423480071488075100206439051723424765600472176809648610799494341570347632064355862420744350442438056613601760883747816538902780957697597728686007148702828795556714140463261583262360276289631617397848425448686060994827086796804807870251185893083854658422304090880599629459458620190376604844679092600222541053077590106576067134720012584640695703025713896098375799892695455305236856075868317922311363951946885088077187210470520395758748001314313144425494391994017575316933939236688185618912993172910425292123683515992232205099800167710278403536014082929639811512287776813570604578934353545169653956125404884644716978689321167108722908808277835051822885764606221873970285165508372099234948333443522898475123275372663606621390228126470623407535207172405866507951821730346378263135339370677490195019784169044182473806316282858685774143258116536404021840272491339332094921949842244273042701987304453662035026238695780468200360144729199712309553005720614186697485284685618651483271597448120312194675168637934309618961510733006555242148519520176285859509105183947250286387163249416761380499631979144187025430270675849519200883791516940158174004671147787720145964446117520405945350476472180797576111172084627363927960033967047003761337450955318415007379641260504792325166135484129188421134082301547330475406707281876350361733290800595189632520707167390454777712968226520622565143991937680440029238090311243791261477625596469422198137514696707944687035800439250765945161837981185939204954403611491531078225107269148697980924094677214272701240437718740921675661363493890045123235166814608932240069799317601780533819184998193300841098599393876029260139091141452600372028487213241195542428210183120421610446740462163533690058366460659115629876474552506814500393294140413149540067760295100596225302282300363147382468105964844244132486457313743759509641616804802412935187620466813563687753281467553879887177183651289394719533506188500326760735438867336800207438784965701457609034985757124304510203873049485425670247933932280911052604153852899484920399109194612991249163328991799809438033787952209313146694614970593966415237594928589096048991612194498998638483702248667224914892467841020618336462741696957630763248023558797524525373703543388296086275342774001633343405508353704850737454481975472222897528108302089868263302028525992308416805453968791141829762998896457648276528750456285492426516521775079951625966922911497778896235667095662713848201819134832168799586365263762097828507009933729439678463987902491451422274252700636394232799848397673998715441855420156224415492665301451550468548925862027608576183712976335876121538256512963353814166394951655600026415918655485005705261143195291991880795452239464962763563017858089669222640623538289853586759599064700838568712381032959192649484625076899225841930548076362021508902214922052806984201835084058693849381549890944546197789302911357651677540623227829831403347327660395223160342282471752818181884430488092132193355086987339586127607367086665237555567580317149010847732009642431878007000879734603290627894355374356444885190719161645514115576193939969076741515640282654366402676009508752394550734155613586793306603174472092444651353236664764973540085196704077110364053815007348689179836404957060618953500508984091382686953509006678332447257871219660441528492484004185093281190896363417573989716659600075948780061916409485433875852065711654107226099628815012314437794400874930194474433078438899570184271000480830501217712356062289507626904285680004771889315808935851559386317665294808903126774702966254511086154895839508779675546413794489596052797520987481383976257859210575628440175934932416214833956535018919681138909184379573470326940634289008780584694035245347939808067427323629788710086717580253156130235606487870925986528841635097252953709111431720488774740553905400942537542411931794417513706468964386151771884986701034153254238591108962471088538580868883777725864856414593426212108664758848926003176234596076950884914966244415660441955208681198977024e4932l)
#endif
#elif \
zp_arc_arm
-#define zp_minvalld ((double long)-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
-#define zp_maxvalld ((double long)+1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
+#define zp_minvaldl ((double long)-1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
+#define zp_maxvaldl ((double long)+1.79769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368e+308)
#elif \
zp_arc_arm64
-#define zp_minvalld ((double long)-1.189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968e+4932l)
-#define zp_maxvalld ((double long)+1.189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968e+4932l)
+#define zp_minvaldl ((double long)-1.189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968e+4932l)
+#define zp_maxvaldl ((double long)+1.189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968e+4932l)
#endif
@@ -89,32 +89,32 @@ typedef double zp_f04;
#else
#define zp_nand (0.0);
#endif
+#if zp_prv_hasbltin(__builtin_nanl)
+#define zp_nandl (__builtin_nanl(""))
+#else
+#define zp_nandl (0.0l);
+#endif
#if zp_prv_hasbltin(__builtin_nanf)
#define zp_nanf (__builtin_nanf(""))
#else
#define zp_nanf (0.0f);
#endif
-#if zp_prv_hasbltin(__builtin_nanl)
-#define zp_nanld (__builtin_nanl(""))
-#else
-#define zp_nanld (0.0l);
-#endif
#if zp_prv_hasbltin(__builtin_huge_val)
#define zp_infd (__builtin_huge_val())
#else
#define zp_infd (zp_maxvald)
#endif
+#if zp_prv_hasbltin(__builtin_huge_valil)
+#define zp_infdl (__builtin_huge_valil())
+#else
+#define zp_infdl (zp_maxvaldl)
+#endif
#if zp_prv_hasbltin(__builtin_huge_valf)
#define zp_inff (__builtin_huge_valf())
#else
#define zp_inff (zp_maxvalf)
#endif
-#if zp_prv_hasbltin(__builtin_huge_vall)
-#define zp_infld (__builtin_huge_vall())
-#else
-#define zp_infld (zp_maxvaldl)
-#endif
#define zp_nanf02 (zp_nanf)
#define zp_nanf04 (zp_nand)
diff --git a/zp/include/zp/prv/int.h b/zp/include/zp/prv/int.h
index 6ac4243..b760167 100644
--- a/zp/include/zp/prv/int.h
+++ b/zp/include/zp/prv/int.h
@@ -27,14 +27,14 @@
...
These may be equivalent to a standard,
- fundamental integral type (such as long long),
+ fundamental integral type (such as int long long),
or they may be equivalent to an extended type
(such as GCC __int128).
We also define types as replacements for the
more generic standard library types:
- intptr uintptr_t
+ ptr uptr_t
ptrdif ptrdiff_t
siz size_t
@@ -42,27 +42,27 @@
types to be present.
*/
-#define zp_minvalcu ((char unsigned) +0x0u)
-#define zp_minvalsu ((short unsigned) +0x0u)
-#define zp_minvaliu ((int unsigned) +0x0u)
-#define zp_minvallu ((long unsigned) +0x0lu)
-#define zp_minvalllu ((long long unsigned)+0x0llu)
-#define zp_minvalcs ((char signed) -0x80)
-#define zp_minvals ((short) -0x8000)
-#define zp_minvali ((int) -0x80000000l)
-#define zp_minvalll ((long long) -0x8000000000000000ll)
-
-#define zp_maxvalcu ((char unsigned) +0xFFu)
-#define zp_maxvalsu ((short unsigned) +0xFFFFu)
-#define zp_maxvaliu ((int unsigned) +0xFFFFFFFFu)
-#define zp_maxvalllu ((long long unsigned)+0xFFFFFFFFFFFFFFFFllu)
-#define zp_maxvalcs ((char signed) +0x7F)
-#define zp_maxvals ((short) +0x7FFF)
-#define zp_maxvali ((int) +0x7FFFFFFF)
-#define zp_maxvalll ((long long) +0x7FFFFFFFFFFFFFFFll)
-
-#define zp_minvalp ((zp_intptr)+0x0u)
-#define zp_minvalz ((zp_siz) +0x0u)
+#define zp_minvalcu ((char unsigned) +0x0u)
+#define zp_minvalsu ((short unsigned) +0x0u)
+#define zp_minvaliu ((int unsigned) +0x0u)
+#define zp_minvalilu ((int long unsigned) +0x0lu)
+#define zp_minvalillu ((int long long unsigned)+0x0llu)
+#define zp_minvalcs ((char signed) -0x80)
+#define zp_minvals ((short) -0x8000)
+#define zp_minvali ((int) -0x80000000l)
+#define zp_minvalill ((int long long) -0x8000000000000000ll)
+
+#define zp_maxvalcu ((char unsigned) +0xFFu)
+#define zp_maxvalsu ((short unsigned) +0xFFFFu)
+#define zp_maxvaliu ((int unsigned) +0xFFFFFFFFu)
+#define zp_maxvalillu ((int long long unsigned)+0xFFFFFFFFFFFFFFFFllu)
+#define zp_maxvalcs ((char signed) +0x7F)
+#define zp_maxvals ((short) +0x7FFF)
+#define zp_maxvali ((int) +0x7FFFFFFF)
+#define zp_maxvalill ((int long long) +0x7FFFFFFFFFFFFFFFll)
+
+#define zp_minvalp ((zp_ptr)+0x0u)
+#define zp_minvalz ((zp_siz)+0x0u)
#define zp_minvali8 zp_minvalcu
#define zp_minvali8s zp_minvalcs
@@ -81,14 +81,14 @@ typedef short zp_i01s;
#if \
zp_arc_arm
-/* For some reason long. */
+/* For some reason int long. */
-#define zp_minvali02 zp_minvallu
-#define zp_minvali02s zp_minvall
-#define zp_maxvali02 zp_maxvallu
-#define zp_maxvali02s zp_maxvall
-typedef long unsigned zp_i02;
-typedef long zp_i02s;
+#define zp_minvali02 zp_minvalilu
+#define zp_minvali02s zp_minvalil
+#define zp_maxvali02 zp_maxvalilu
+#define zp_maxvali02s zp_maxvalil
+typedef int long unsigned zp_i02;
+typedef int long zp_i02s;
#else
@@ -104,47 +104,47 @@ typedef int zp_i02s;
#if \
zp_sys_dos
-#define zp_minvall ((long) -0x80000000ll)
-#define zp_maxvallu ((long unsigned)+0xFFFFFFFFllu)
-#define zp_maxvall ((long) +0x7FFFFFFFll)
+#define zp_minvalil ((int long) -0x80000000ll)
+#define zp_maxvalilu ((int long unsigned)+0xFFFFFFFFllu)
+#define zp_maxvalil ((int long) +0x7FFFFFFFll)
-#define zp_minvali04 zp_minvalllu
-#define zp_minvali04s zp_minvalll
-#define zp_maxvali04 zp_maxvalllu
-#define zp_maxvali04s zp_maxvalll
-typedef long long unsigned zp_i04;
-typedef long long zp_i04s;
+#define zp_minvali04 zp_minvalillu
+#define zp_minvali04s zp_minvalill
+#define zp_maxvali04 zp_maxvalillu
+#define zp_maxvali04s zp_maxvalill
+typedef int long long unsigned zp_i04;
+typedef int long long zp_i04s;
#else
#if \
zp_arc_amd64 \
|| zp_arc_arm64
-#define zp_minvall ((long) -0x8000000000000000l)
-#define zp_maxvallu ((long unsigned)+0xFFFFFFFFFFFFFFFFlu)
-#define zp_maxvall ((long) +0x7FFFFFFFFFFFFFFFl)
+#define zp_minvalil ((int long) -0x8000000000000000l)
+#define zp_maxvalilu ((int long unsigned)+0xFFFFFFFFFFFFFFFFlu)
+#define zp_maxvalil ((int long) +0x7FFFFFFFFFFFFFFFl)
-#define zp_minvali04 zp_minvallu
-#define zp_minvali04s zp_minvall
-#define zp_maxvali04 zp_maxvallu
-#define zp_maxvali04s zp_maxvall
-typedef long unsigned zp_i04;
-typedef long zp_i04s;
+#define zp_minvali04 zp_minvalilu
+#define zp_minvali04s zp_minvalil
+#define zp_maxvali04 zp_maxvalilu
+#define zp_maxvali04s zp_maxvalil
+typedef int long unsigned zp_i04;
+typedef int long zp_i04s;
#elif \
zp_arc_arm \
|| zp_arc_ia32
-#define zp_minvall ((long) -0x80000000ll)
-#define zp_maxvallu ((long unsigned)+0xFFFFFFFFllu)
-#define zp_maxvall ((long) +0x7FFFFFFFll)
+#define zp_minvalil ((int long) -0x80000000ll)
+#define zp_maxvalilu ((int long unsigned)+0xFFFFFFFFllu)
+#define zp_maxvalil ((int long) +0x7FFFFFFFll)
-#define zp_minvali04 zp_minvalllu
-#define zp_minvali04s zp_minvalll
-#define zp_maxvali04 zp_maxvalllu
-#define zp_maxvali04s zp_maxvalll
-typedef long long unsigned zp_i04;
-typedef long long zp_i04s;
+#define zp_minvali04 zp_minvalillu
+#define zp_minvali04s zp_minvalill
+#define zp_maxvali04 zp_maxvalillu
+#define zp_maxvali04s zp_maxvalill
+typedef int long long unsigned zp_i04;
+typedef int long long zp_i04s;
#endif
#endif
@@ -159,34 +159,45 @@ typedef long long zp_i04s;
#if \
zp_imp_msvc
-#define zp_maxvalp ((zp_intptr)+0xFFFFFFFFFFFFFFFFu)
-typedef __int64 unsigned zp_intptr;
+#define zp_maxvalp ((zp_ptr) +0xFFFFFFFFFFFFFFFFu)
+#define zp_maxvalpd ((zp_ptrdif)+0x7FFFFFFFFFFFFFFF)
+typedef __int64 unsigned zp_ptr;
+typedef __int64 zp_ptrdif;
-#define zp_maxvalz ((zp_siz)+0xFFFFFFFFFFFFFFFFu)
+#define zp_maxvalz ((zp_ptr) +0xFFFFFFFFFFFFFFFFu)
+#define zp_maxvalze ((zp_ptrdif)+0x7FFFFFFFFFFFFFFF)
typedef __int64 unsigned zp_siz;
+typedef __int64 zp_sizerr;
#elif \
zp_std_c99
|| zp_std_cxx11
-#define zp_maxvalp ((zp_intptr)+zp_maxvalllu)
-typedef long long unsigned zp_intptr;
+#define zp_maxvalp ((zp_ptr)+zp_maxvalillu)
+#define zp_maxvalpd ((zp_ptr)+zp_maxvalill)
+typedef int long long unsigned zp_ptr;
+typedef int long long zp_ptrdif;
-#define zp_maxvalz ((zp_siz)+zp_maxvalllu)
-typedef long long unsigned zp_siz;
+#define zp_maxvalz ((zp_siz)+zp_maxvalillu)
+typedef int long long unsigned zp_siz;
+
+#else
+
+#error unable to define integral types
#endif
#else
-#define zp_maxvalp zp_maxvallu
-typedef long unsigned zp_intptr;
-
-#define zp_maxvalpd zp_maxvall
-typedef unsigned zp_intptrdif;
+#define zp_maxvalp zp_maxvalilu
+#define zp_maxvalpd zp_maxvalil
+typedef int long unsigned zp_ptr;
+typedef int long zp_ptrdif;
-#define zp_maxvalz zp_maxvallu
-typedef long unsigned zp_siz;
+#define zp_maxvalz zp_maxvalilu
+#define zp_maxvalze zp_maxvalil
+typedef int long unsigned zp_siz;
+typedef int long zp_sizerr;
#endif
@@ -194,10 +205,14 @@ typedef long unsigned zp_siz;
zp_arc_arm \
|| zp_arc_ia32
-#define zp_maxvalp zp_maxvaliu
-typedef int unsigned zp_intptr;
+#define zp_maxvalp zp_maxvalilu
+#define zp_maxvalpd zp_maxvalil
+typedef int unsigned zp_ptr;
+typedef int zp_ptrdif;
-#define zp_maxvalz zp_maxvaliu
+#define zp_maxvalz zp_maxvalilu
+#define zp_maxvalze zp_maxvalil
typedef int unsigned zp_siz;
+typedef int zp_sizerr;
#endif
diff --git a/zp/include/zp/str.h b/zp/include/zp/str.h
index c656538..c204298 100644
--- a/zp/include/zp/str.h
+++ b/zp/include/zp/str.h
@@ -42,29 +42,29 @@ zp_nothw void zp_win1252enc(zp_c8 * dst,zp_c02 const * src);
zp_nothw void zp_win1252dec(zp_c02 * dst,zp_c8 const * src);
zp_nothw zp_useres zp_siz zp_fmtleni( int val,zp_i8 bs);
-zp_nothw zp_useres zp_siz zp_fmtlenl( long val,zp_i8 bs);
+zp_nothw zp_useres zp_siz zp_fmtlenl( int long val,zp_i8 bs);
zp_nothw zp_useres zp_siz zp_fmtlens( short val,zp_i8 bs);
zp_nothw zp_useres zp_siz zp_fmtlensc( char signed val,zp_i8 bs);
zp_nothw zp_useres zp_siz zp_fmtlenuc( char unsigned val,zp_i8 bs);
zp_nothw zp_useres zp_siz zp_fmtlenui( int unsigned val,zp_i8 bs);
-zp_nothw zp_useres zp_siz zp_fmtlenul( long unsigned val,zp_i8 bs);
+zp_nothw zp_useres zp_siz zp_fmtlenul( int long unsigned val,zp_i8 bs);
zp_nothw zp_useres zp_siz zp_fmtlenus( short unsigned val,zp_i8 bs);
#if zp_std_c99 || zp_std_cxx11
-zp_nothw zp_useres zp_siz zp_fmtlenll( long long val,zp_i8 bs);
-zp_nothw zp_useres zp_siz zp_fmtlenull(long long unsigned val,zp_i8 bs);
+zp_nothw zp_useres zp_siz zp_fmtlenll( int long long val,zp_i8 bs);
+zp_nothw zp_useres zp_siz zp_fmtlenull(int long long unsigned val,zp_i8 bs);
#endif
zp_nothw void zp_fmti( zp_c02 * buf,int val,zp_i8 bs,bool rtl);
-zp_nothw void zp_fmtl( zp_c02 * buf,long val,zp_i8 bs,bool rtl);
+zp_nothw void zp_fmtl( zp_c02 * buf,int long val,zp_i8 bs,bool rtl);
zp_nothw void zp_fmts( zp_c02 * buf,short val,zp_i8 bs,bool rtl);
zp_nothw void zp_fmtsc( zp_c02 * buf,char signed val,zp_i8 bs,bool rtl);
zp_nothw void zp_fmtuc( zp_c02 * buf,char unsigned val,zp_i8 bs,bool rtl);
zp_nothw void zp_fmtui( zp_c02 * buf,int unsigned val,zp_i8 bs,bool rtl);
-zp_nothw void zp_fmtul( zp_c02 * buf,long unsigned val,zp_i8 bs,bool rtl);
+zp_nothw void zp_fmtul( zp_c02 * buf,int long unsigned val,zp_i8 bs,bool rtl);
zp_nothw void zp_fmtus( zp_c02 * buf,short unsigned val,zp_i8 bs,bool rtl);
#if zp_std_c99 || zp_std_cxx11
-zp_nothw void zp_fmtll( zp_c02 * buf,long long val,zp_i8 bs,bool rtl);
-zp_nothw void zp_fmtull(zp_c02 * buf,long long unsigned val,zp_i8 bs,bool rtl);
+zp_nothw void zp_fmtll( zp_c02 * buf,int long long val,zp_i8 bs,bool rtl);
+zp_nothw void zp_fmtull(zp_c02 * buf,int long long unsigned val,zp_i8 bs,bool rtl);
#endif
zp_prv_cdeclend
diff --git a/zp/include/zp/zp b/zp/include/zp/zp
index 6724c54..a94f43f 100644
--- a/zp/include/zp/zp
+++ b/zp/include/zp/zp
@@ -42,8 +42,10 @@ namespace zp {
typedef ::zp_i04 i04;
typedef ::zp_i04s i04s;
- typedef ::zp_intptr intptr;
+ typedef ::zp_ptr ptr;
+ typedef ::zp_ptrdif ptrdif;
typedef ::zp_siz siz;
+ typedef ::zp_sizerr sizerr;
typedef ::zp_wchr wchr;
typedef ::zp_c8 c8;
@@ -68,13 +70,13 @@ namespace zp {
template<> struct minval<double> {constexpr static auto val = zp_minvald;};
template<> struct minval<float> {constexpr static auto val = zp_minvalf;};
template<> struct minval<int> {constexpr static auto val = zp_minvali;};
- template<> struct minval<long> {constexpr static auto val = zp_minvall;};
- template<> struct minval<double long> {constexpr static auto val = zp_minvalld;};
+ template<> struct minval<int long> {constexpr static auto val = zp_minvalil;};
+ template<> struct minval<double long> {constexpr static auto val = zp_minvaldl;};
template<> struct minval<short> {constexpr static auto val = zp_minvals;};
template<> struct minval<char signed> {constexpr static auto val = zp_minvalcs;};
template<> struct minval<char unsigned> {constexpr static auto val = zp_minvalcu;};
template<> struct minval<int unsigned> {constexpr static auto val = zp_minvaliu;};
- template<> struct minval<long unsigned> {constexpr static auto val = zp_minvallu;};
+ template<> struct minval<int long unsigned> {constexpr static auto val = zp_minvalilu;};
template<> struct minval<short unsigned> {constexpr static auto val = zp_minvalsu;};
template<> struct minval<wchar_t> {constexpr static auto val = zp_minvalw;};
#if __cpp_char8_t >= 201811
@@ -83,8 +85,8 @@ namespace zp {
#if zp_std_cxx11
template<> struct minval<char16_t> {constexpr static auto val = zp_minvalc01;};
template<> struct minval<char32_t> {constexpr static auto val = zp_minvalc02;};
- template<> struct minval<long long> {constexpr static auto val = zp_minvalll;};
- template<> struct minval<long long unsigned> {constexpr static auto val = zp_minvalllu;};
+ template<> struct minval<int long long> {constexpr static auto val = zp_minvalill;};
+ template<> struct minval<int long long unsigned> {constexpr static auto val = zp_minvalillu;};
#endif
template<typename typ> struct maxval {constexpr static typ val = {};};
@@ -94,23 +96,23 @@ namespace zp {
template<> struct maxval<double> {constexpr static auto val = zp_maxvald;};
template<> struct maxval<float> {constexpr static auto val = zp_maxvalf;};
template<> struct maxval<int> {constexpr static auto val = zp_maxvali;};
- template<> struct maxval<long> {constexpr static auto val = zp_maxvall;};
- template<> struct maxval<double long> {constexpr static auto val = zp_maxvalld;};
+ template<> struct maxval<int long> {constexpr static auto val = zp_maxvalil;};
+ template<> struct maxval<double long> {constexpr static auto val = zp_maxvaldl;};
template<> struct maxval<short> {constexpr static auto val = zp_maxvals;};
template<> struct maxval<char signed> {constexpr static auto val = zp_maxvalcs;};
template<> struct maxval<char unsigned> {constexpr static auto val = zp_maxvalcu;};
template<> struct maxval<int unsigned> {constexpr static auto val = zp_maxvaliu;};
- template<> struct maxval<long unsigned> {constexpr static auto val = zp_maxvallu;};
+ template<> struct maxval<int long unsigned> {constexpr static auto val = zp_maxvalilu;};
template<> struct maxval<short unsigned> {constexpr static auto val = zp_maxvalsu;};
template<> struct maxval<wchar_t> {constexpr static auto val = zp_maxvalw;};
#if __cpp_char8_t >= 201811
template<> struct maxval<char8_t> {constexpr static auto val = zp_maxvalc8;};
#endif
#if zp_std_cxx11
- template<> struct maxval<char16_t> {constexpr static auto val = zp_maxvalc01;};
- template<> struct maxval<char32_t> {constexpr static auto val = zp_maxvalc02;};
- template<> struct maxval<long long> {constexpr static auto val = zp_maxvalll;};
- template<> struct maxval<long long unsigned> {constexpr static auto val = zp_maxvalllu;};
+ template<> struct maxval<char16_t> {constexpr static auto val = zp_maxvalc01;};
+ template<> struct maxval<char32_t> {constexpr static auto val = zp_maxvalc02;};
+ template<> struct maxval<int long long> {constexpr static auto val = zp_maxvalill;};
+ template<> struct maxval<int long long unsigned> {constexpr static auto val = zp_maxvalillu;};
#endif
template<typename ityp> struct remqual {using typ = ityp;};
@@ -134,10 +136,10 @@ namespace zp {
template<> struct sgn<char unsigned> {using typ = char signed;};
template<> struct sgn<int unsigned> {using typ = int;};
- template<> struct sgn<long unsigned> {using typ = long;};
+ template<> struct sgn<int long unsigned> {using typ = int long;};
template<> struct sgn<short unsigned> {using typ = short;};
#if zp_std_cxx11
- template<> struct sgn<long long unsigned> {using typ = long long;};
+ template<> struct sgn<int long long unsigned> {using typ = int long long;};
#endif
template<typename ityp> struct sgn<ityp const> {using typ = typename sgn<ityp>::typ const;};
@@ -146,11 +148,11 @@ namespace zp {
template<typename ityp> struct usgn {using typ = ityp;};
- template<> struct usgn<char signed> {using typ = char unsigned;};
- template<> struct usgn<int> {using typ = int unsigned;};
- template<> struct usgn<long> {using typ = long unsigned;};
- template<> struct usgn<long long> {using typ = long long unsigned;};
- template<> struct usgn<short> {using typ = short unsigned;};
+ template<> struct usgn<char signed> {using typ = char unsigned;};
+ template<> struct usgn<int> {using typ = int unsigned;};
+ template<> struct usgn<int long> {using typ = int long unsigned;};
+ template<> struct usgn<int long long> {using typ = int long long unsigned;};
+ template<> struct usgn<short> {using typ = short unsigned;};
template<typename ityp> struct usgn<ityp const> {using typ = typename usgn<ityp>::typ const;};
template<typename ityp> struct usgn<ityp volatile> {using typ = typename usgn<ityp>::typ volatile;};
@@ -169,13 +171,13 @@ namespace zp {
template<typename typ> struct issgn {constexpr static bool val = false;};
- template<> struct issgn<char signed> {constexpr static bool val = true;};
- template<> struct issgn<double> {constexpr static bool val = true;};
- template<> struct issgn<double long> {constexpr static bool val = true;};
- template<> struct issgn<float> {constexpr static bool val = true;};
- template<> struct issgn<int> {constexpr static bool val = true;};
- template<> struct issgn<long> {constexpr static bool val = true;};
- template<> struct issgn<short> {constexpr static bool val = true;};
+ template<> struct issgn<char signed> {constexpr static bool val = true;};
+ template<> struct issgn<double> {constexpr static bool val = true;};
+ template<> struct issgn<double long> {constexpr static bool val = true;};
+ template<> struct issgn<float> {constexpr static bool val = true;};
+ template<> struct issgn<int> {constexpr static bool val = true;};
+ template<> struct issgn<int long> {constexpr static bool val = true;};
+ template<> struct issgn<short> {constexpr static bool val = true;};
#if __STDCPP_BFLOAT16_T__
template<> struct issgn<decltype (0.0bf16)> {constexpr static bool val = true;};
#endif
@@ -192,13 +194,13 @@ namespace zp {
template<> struct issgn<decltype (0.0f64)> {constexpr static bool val = true;};
#endif
#if zp_std_cxx11
- template<> struct issgn<long long> {constexpr static bool val = true;};
+ template<> struct issgn<int long long> {constexpr static bool val = true;};
#endif
#if !zp_uchr
- template<> struct issgn<char> {constexpr static bool val = true;};
+ template<> struct issgn<char> {constexpr static bool val = true;};
#endif
#if !zp_uwchr
- template<> struct issgn<wchar_t> {constexpr static bool val = true;};
+ template<> struct issgn<wchar_t> {constexpr static bool val = true;};
#endif
template<typename typ> struct issgn<typ const> {constexpr static bool val = issgn<typ>::val;};
@@ -207,13 +209,13 @@ namespace zp {
template<typename typ> struct isusgn {constexpr static bool val = false;};
- template<> struct isusgn<char unsigned> {constexpr static bool val = true;};
- template<> struct isusgn<char16_t> {constexpr static bool val = true;};
- template<> struct isusgn<char32_t> {constexpr static bool val = true;};
- template<> struct isusgn<int unsigned> {constexpr static bool val = true;};
- template<> struct isusgn<long long unsigned> {constexpr static bool val = true;};
- template<> struct isusgn<long unsigned> {constexpr static bool val = true;};
- template<> struct isusgn<short unsigned> {constexpr static bool val = true;};
+ template<> struct isusgn<char unsigned> {constexpr static bool val = true;};
+ template<> struct isusgn<char16_t> {constexpr static bool val = true;};
+ template<> struct isusgn<char32_t> {constexpr static bool val = true;};
+ template<> struct isusgn<int unsigned> {constexpr static bool val = true;};
+ template<> struct isusgn<int long long unsigned> {constexpr static bool val = true;};
+ template<> struct isusgn<int long unsigned> {constexpr static bool val = true;};
+ template<> struct isusgn<short unsigned> {constexpr static bool val = true;};
#if __cpp_char8_t >= 201811
template<> struct isusgn<char8_t> {constexpr static bool val = true;};
#endif
@@ -255,16 +257,16 @@ namespace zp {
template<typename typ> struct isinttyp {constexpr static bool val = false;};
- template<> struct isinttyp<char signed> {constexpr static bool val = true;};
- template<> struct isinttyp<char unsigned> {constexpr static bool val = true;};
- template<> struct isinttyp<int> {constexpr static bool val = true;};
- template<> struct isinttyp<int unsigned> {constexpr static bool val = true;};
- template<> struct isinttyp<long> {constexpr static bool val = true;};
- template<> struct isinttyp<long long> {constexpr static bool val = true;};
- template<> struct isinttyp<long long unsigned> {constexpr static bool val = true;};
- template<> struct isinttyp<long unsigned> {constexpr static bool val = true;};
- template<> struct isinttyp<short> {constexpr static bool val = true;};
- template<> struct isinttyp<short unsigned> {constexpr static bool val = true;};
+ template<> struct isinttyp<char signed> {constexpr static bool val = true;};
+ template<> struct isinttyp<char unsigned> {constexpr static bool val = true;};
+ template<> struct isinttyp<int> {constexpr static bool val = true;};
+ template<> struct isinttyp<int unsigned> {constexpr static bool val = true;};
+ template<> struct isinttyp<int long> {constexpr static bool val = true;};
+ template<> struct isinttyp<int long long> {constexpr static bool val = true;};
+ template<> struct isinttyp<int long long unsigned> {constexpr static bool val = true;};
+ template<> struct isinttyp<int long unsigned> {constexpr static bool val = true;};
+ template<> struct isinttyp<short> {constexpr static bool val = true;};
+ template<> struct isinttyp<short unsigned> {constexpr static bool val = true;};
template<typename typ> struct isinttyp<typ const> {constexpr static bool val = isinttyp<typ>::val;};
template<typename typ> struct isinttyp<typ volatile> {constexpr static bool val = isinttyp<typ>::val;};
@@ -290,13 +292,13 @@ namespace zp {
template<typename typ> struct nan {constexpr static typ val = typ {0x0};};
template<> struct nan<double> {constexpr static double const val = zp_nanf;};
- template<> struct nan<double long> {constexpr static double long const val = zp_nanld;};
+ template<> struct nan<double long> {constexpr static double long const val = zp_nandl;};
template<> struct nan<float> {constexpr static float const val = zp_nand;};
template<typename typ> struct inf {constexpr static typ val = ::zp::maxval<typ>::val;};
template<> struct inf<double> {constexpr static double const val = zp_inff;};
- template<> struct inf<double long> {constexpr static double long const val = zp_infld;};
+ template<> struct inf<double long> {constexpr static double long const val = zp_infdl;};
template<> struct inf<float> {constexpr static float const val = zp_infd;};
#endif // c++11
@@ -344,8 +346,6 @@ namespace zp {
zp_prv_trtval (::zp::siz) bytelen = zp_bytelen;
- zp_prv_trtval (::zp::siz) nopos = zp_nopos;
-
zp_prv_trtval (::zp::c02) unimax = zp_unimax;
#if zp_std_cxx11
diff --git a/zp/include/zp/zp.h b/zp/include/zp/zp.h
index 5f290d6..7f88094 100644
--- a/zp/include/zp/zp.h
+++ b/zp/include/zp/zp.h
@@ -243,7 +243,7 @@ zp_prv_cdecl
We define the syscalidt as the platform type
used for system call identifiers (on FreeBSD
ARM64, this is int, and on Linux AMD64, this is
- long, despite the __NR macros being int).
+ int long, despite the __NR macros being int).
We likewise define the syscalres type for the
return type of the system calls.
@@ -262,11 +262,11 @@ zp_prv_cdecl
typedef int zp_syscalidt;
typedef int zp_syscalres;
#elif zp_sys_linux
-typedef long zp_syscalidt;
-typedef long zp_syscalres;
+typedef int long zp_syscalidt;
+typedef int long zp_syscalres;
#else
-typedef long unsigned zp_syscalidt;
-typedef long unsigned zp_syscalres;
+typedef int long unsigned zp_syscalidt;
+typedef int long unsigned zp_syscalres;
#endif
#if zp_std_c23
@@ -281,8 +281,6 @@ typedef decltype (nullptr) zp_nulptrtyp;
#define zp_bytelen ((zp_siz)+0x8u)
-#define zp_nopos zp_maxvalz
-
/*
Note: Taking the type of nulptr is not (always)
allowed. Take the following example:
diff --git a/zp/source/any/mth/divmod.cc b/zp/source/any/mth/divmod.cc
index f51cb76..48913f3 100644
--- a/zp/source/any/mth/divmod.cc
+++ b/zp/source/any/mth/divmod.cc
@@ -10,6 +10,6 @@ extern "C" {
zp_nothw auto zp_divmodsc(char signed const num,char signed const den) -> ::divmodressc {return ::zp::divmod(num,den).cpair();}
zp_nothw auto zp_divmods( short const num,short const den) -> ::divmodress {return ::zp::divmod(num,den).cpair();}
zp_nothw auto zp_divmodi( int const num,int const den) -> ::divmodresi {return ::zp::divmod(num,den).cpair();}
- zp_nothw auto zp_divmodl( long const num,long const den) -> ::divmodresl {return ::zp::divmod(num,den).cpair();}
- zp_nothw auto zp_divmodll(long long const num,long long const den) -> ::divmodresll {return ::zp::divmod(num,den).cpair();}
+ zp_nothw auto zp_divmodl( int long const num,int long const den) -> ::divmodresl {return ::zp::divmod(num,den).cpair();}
+ zp_nothw auto zp_divmodll(int long long const num,int long long const den) -> ::divmodresll {return ::zp::divmod(num,den).cpair();}
}
diff --git a/zp/source/any/str/fmt.cc b/zp/source/any/str/fmt.cc
index 49d1bfd..6fdb5b1 100644
--- a/zp/source/any/str/fmt.cc
+++ b/zp/source/any/str/fmt.cc
@@ -8,13 +8,13 @@
/*extern "C" {
zp_nothw auto zp_fmti( char32_t * const buf,int const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
- zp_nothw auto zp_fmtl( char32_t * const buf,long const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
- zp_nothw auto zp_fmtll( char32_t * const buf,long long const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
+ zp_nothw auto zp_fmtl( char32_t * const buf,int long const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
+ zp_nothw auto zp_fmtll( char32_t * const buf,int long long const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
zp_nothw auto zp_fmts( char32_t * const buf,short const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
zp_nothw auto zp_fmtsc( char32_t * const buf,char signed const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
zp_nothw auto zp_fmtuc( char32_t * const buf,char unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
zp_nothw auto zp_fmtui( char32_t * const buf,int unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
- zp_nothw auto zp_fmtul( char32_t * const buf,long unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
- zp_nothw auto zp_fmtull(char32_t * const buf,long long unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
+ zp_nothw auto zp_fmtul( char32_t * const buf,int long unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
+ zp_nothw auto zp_fmtull(char32_t * const buf,int long long unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
zp_nothw auto zp_fmtus( char32_t * const buf,short unsigned const val,::zp::i8 const bs,bool const rtl) -> void {return ::zp::fmt(buf,val,bs,rtl);}
}*/
diff --git a/zp/source/any/str/fmtlen.cc b/zp/source/any/str/fmtlen.cc
index ec678a4..ec2ea7b 100644
--- a/zp/source/any/str/fmtlen.cc
+++ b/zp/source/any/str/fmtlen.cc
@@ -9,13 +9,13 @@
/* extern "C" {
zp_nothw auto zp_fmtleni( int const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
- zp_nothw auto zp_fmtlenl( long const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
- zp_nothw auto zp_fmtlenll( long long const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
+ zp_nothw auto zp_fmtlenl( int long const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
+ zp_nothw auto zp_fmtlenll( int long long const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
zp_nothw auto zp_fmtlens( short const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
zp_nothw auto zp_fmtlensc( char signed const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
zp_nothw auto zp_fmtlenuc( char unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
zp_nothw auto zp_fmtlenui( int unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
- zp_nothw auto zp_fmtlenul( long unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
- zp_nothw auto zp_fmtlenull(long long unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
+ zp_nothw auto zp_fmtlenul( int long unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
+ zp_nothw auto zp_fmtlenull(int long long unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
zp_nothw auto zp_fmtlenus( short unsigned const val,::zp::i8 const bs) -> ::zp::siz {return ::zp::fmtlen(val,bs);}
} */
diff --git a/zp/source/ia32/zp/syscl.s b/zp/source/ia32/zp/syscl.s
index c482c9d..f0d0b72 100644
--- a/zp/source/ia32/zp/syscl.s
+++ b/zp/source/ia32/zp/syscl.s
@@ -19,7 +19,7 @@ zp_syscal:
push edi
push ebp ; Remember that the provided paramters are now further up the stack.
mov eax,[esp+0x14] ; Move the first parameter (the identifier) to eax.
- mov ebx,[esp+0x18] ; Move the remaining parameters into their designated registers. This will read "out of bounds" memory if the number of passed parameters is less than six, but this shouldn't matter as long as the data isn't being used, which it won't be as long as the expected ammount of parameters have been passed.
+ mov ebx,[esp+0x18] ; Move the remaining parameters into their designated registers. This will read "out of bounds" memory if the number of passed parameters is less than six, but this shouldn't matter as int long as the data isn't being used, which it won't be as int long as the expected ammount of parameters have been passed.
mov ecx,[esp+0x1C]
mov edx,[esp+0x20]
mov esi,[esp+0x24]