What's changed
The Dinkum Compleat Libraries is a new product that replaces
our long popular Dinkum Unabridged Library V4.02, which we
continue to maintain for our existing supported customers.
Here is a summary of what's changed between products.
Major additions
- added
hardware header for TR18015
- added
iohw.h header for TR18037
- added
stdfix.h header for TR18037
- added numerous headers, special math functions, overloads for TR19768
- added
uchar.h header for TR19769
- added Corex libraries (allocators, code conversions, threads)
Major changes to the Standard C++ Library
algorithm: added bounding for random_shuffle with function
algorithm: added is_heap, is_sorted
algorithm: changed int to size_t in _Median
algorithm: corrected _Mid1 in random search_n
algorithm: corrected prev_permutation for equal elements
algorithm: corrected random_shuffle for large indices
algorithm: improved search_n
algorithm: reduced temp buffer request for stable_sort
algorithm: sped up _Debug_heap
algorithm: tidied count logic in stable_partition
bitset: added to_string overloads
bitset: dropped redundant tests from at
bitset: improved unsigned long constructor
bitset: moved _Trim outside loop for left shift
deque: fixed overlap for insert
deque: improved pop error checking
deque: protected against self swap
deque: simplified _Off calculation in iterators
exception: added throw() on destructor
exception: added throw() on uncaught_exception
fstream: corrected close logic
functional: added identity, project1st, project2nd, select1st, select2nd
hash_map: fixed overlap for insert
hash_set: fixed overlap for insert
ios.cpp: deferred _Ploc initialization for robustness
ios.cpp: dropped negative index code in _Findarr
iosfwd: changed streamoff to _Longlong
iostream.cpp: protected flush calls
istream: changed seekg to clear eofbit on success
list: added destroy counter to _Buynode with pointer constructors
list: added knot check to splice
list: changed remove to store test value
list: corrected _LOCK_DEBUG locks
list: corrected _Splice calls in sort
list: corrected erase all return
list: corrected iterator invalidation for sort
list: eliminated orphaning of end() iterators
list: protected against self swap
locale0.cpp: added _Locinfo(const string&)
map: added extra erase for _HAS_STRICT_CONFORMANCE
memory: changed auto_ptr stored pointer from void* to _Ty*
memory: changed autp_ptr_ref stored pointer from const void ** to void *
memory: corrected auto_ptr looping
memory: corrected auto_ptr_ref assignment
memory: corrected handling of negative arg to get_temporary_buffer
memory: delayed allocation in _Temp_buffer
memory: simplified auto_ptr operator*/->
newop.cpp: protected zero count
newop2.cpp: protected zero count
ostream: added _Addit to basic_ostream constructor
ostream: added exception handling to _Osfx
set: added extra erase for _HAS_STRICT_CONFORMANCE
slist: added knot check to splice
slist: changed remove to store test value
slist: corrected _LOCK_DEBUG locks
slist: corrected _Orphan_ptr
slist: corrected _Splice calls in sort
slist: corrected iterator invalidation for sort
slist: corrected previous
slist: corrected swap for different allocators
slist: eliminated orphaning of end() iterators
slist: protected against self swaps
sstream: added ios::ate support
sstream: corrected overflow logic for reallocated buffer
stack: added const_/reference types
utility: protected against self swaps
valarray: added explicit default construction to valarray(size_t) in _Grow
valarray: changed delete[] to delete
valarray: changed valarray::resize to discard old contents
valarray: corrected _Grow initialization for default constructors
valarray: corrected valarray(size_t) initialization
valarray: protected min/max from macros
vector: added _Vector_const_iterator
vector: added std:: to copy calls
vector: added swap overload for vector elements
vector: changed clear to not free storage
vector: corrected _LOCK_DEBUG locks
vector: corrected iterator+= for vector
vector: fixed overlap for insert
vector: protected against self swaps
vector: reduced use of _Tmp in insert_n
vector: simplified operator[] for iterator debugging performance
xcomplex: corrected tanh
xhash: added U to large decimal numbers
xhash: corrected rehash for small bucket argument
xhash: improved hash functions
xhash: protected against self swaps
xhash: simplified swap to fix end() bug
xiosbase: added hexfloat
xiosbase: corrected _USE
xlocale: added -3 return from _Mbrtowc
xlocale: added std:: to bad_cast
xlocale: clobbered locale name in combine for strict conformance
xlocale: corrected _Dowiden for null character
xlocale: dropped name option for combine
xlocale: weakened codecvt::do_length for strict conformance
xlocmes: corrected do_open return
xlocmon: added numpunct overrides for _HAS_STRICT_CONFORMANCE
xlocmon: clipped negative _Fracdigits in _Putmfld
xlocmon: made _Fracdigits an unsigned int in _Putmfld
xlocmon: tidied group checking
xlocnum: added hexfloat for C99
xlocnum: added hexfloat input
xlocnum: added numpunct overrides for _HAS_STRICT_CONFORMANCE
xlocnum: changed ',' to '\0' for num_put grouping
xlocnum: changed ::memchr to _CSTD memchr
xlocnum: changed default _Kseparator to comma
xlocnum: corrected I64 fixup for MS+Dinkum native
xlocnum: corrected ll/l64 fixup in _Ifmt
xlocnum: corrected strict _Grouping construction
xlocnum: corrected trailing precision logic
xlocnum: disabled group checking for _Getffld
xlocnum: disabled group checking for empty grouping string
xlocnum: skipped zero counting for Inf and zero
xloctime: added -3 return from _Mbrtowc
xloctime: corrected do_get_date eof logic
xmemory: changed _Destroy_range arguments for nonstandard allocators
xstring: added _Chassign
xstring: added _String_const_iterator
xstring: changed compare to always call traits::compare
xstring: protected against self swaps
xstring: tweaked single-element append
xtree: corrected _Orphan_ptr
xtree: corrected _Orphan_ptr declaration and call
xtree: dropped nonmutable _Lmost/_Rmost/_Root
xtree: eliminated orphaning of end() iterators
xtree: made _Dec and _Inc more alike for invalid case
xtree: protected against self swaps
xutility: added _STD qualifier to mismatch calls in equal
xutility: added non-const overloads to _Debug_lt*
xutility: corrected bad function name for _Debug_order with pred
xutility: eliminated orphaning of all iterators on assign
xutility: made first argument a ref for default _Debug_pointer
xutility: protected min/max from macros
xutility: templatized compares, subtract for reverse_iterator
yvals.h: added __STDC_VERSION__ definition
yvals.h: dropped _MIN/_MAX
yvals.h: increased _MAX_SIG_DIG to 48
Major changes to the Standard C Library:
atoll.c: corrected cast
fclose.c: added sanity check
fdopen.c: corrected open logic
feholdexcept.c: corrected FE_ALL_EXCEPT spelling in IA64
fesetexceptflag.c: corrected p type for software-only version
fesetround.c: changed movl to mov for Linux
fgetwc.c: added -3 return from _Mbtowc
fileno.c: corrected _FD_VALID call
fwrite.c: added nleft logic
nexttoward.c: corrected y Nan and x Inf handling
nexttoward.c: dropped INEXACT raises
nexttoward.c: added UNDERFLOW raise for all denorms
nexttowardf.c: corrected y Nan and x Inf handling
nexttowardf.c: dropped INEXACT raises
nexttowardf.c: added UNDERFLOW raise for all denorms
nexttowardl.c: corrected y Nan and x Inf handling
nexttowardl.c: corrected decrementing _L1 for 16 byte
nexttowardl.c: corrected Inf fixup for 8/16 byte
nexttowardl.c: dropped INEXACT raises
nexttowardl.c: added UNDERFLOW raise for all denorms
remove.c: added _Rmdir for Posix
setvbuf.c: changed size == 0 logic to better match FreeBSD
tmpfile.c: corrected lock logic
tmpnam.c: added remove
xctype.c: made NUL a control char for Posix
xdscale.c: corrected for large lexp, rounding denormalized
xdscale.c: corrected round to even logic
xdtest.c: added _DENORM for fpclassify
xfdscale.c: corrected for large lexp, rounding denormalized
xfdscale.c: corrected round to even logic
xfdtest.c: added _DENORM for fpclassify
xfenv0.c: corrected _FPP_NONE case
xferaise.c: added _FE_INEXACT on over/underflow for IEC 60559
xfrprep.c: enabled buffer allocation for line buffering
xgentime.c: corrected default case
xgentime.c: corrected isleapyr logic
xgetfld.c: added k, K, r, and R qualifiers for fixed-point
xgetfld.c: added AltiVec stuff
xgetfloa.c: added pointer argument for AltiVec
xgetint.c: added pointer argument for AltiVec
xgetstr.c: added -3 return from _Mbtowc
xgetstr.c: suppressed argument pickup for noconv
xgetstr.c: corrected error return logic
xgetstr.c: corrected range-detection logic
xldscale.c: corrected _DLONG==1 denormalized
xldscale.c: corrected for large lexp, rounding denormalized
xldscale.c: corrected _DLONG==2 denormalized, round to even
xldscale.c: corrected zero detection for _DLONG==1
xldtest.c: added _DENORM for fpclassify
xldtob.c: converted extra digit to fix rounding
xldunsca.c: corrected 80-bit denormalized exponent
xmbtowc.c: added -3 return
xprintf.c: added _HAS_FIXED_POINT stuff for %v
xprintf.c: corrected separator logic
xprintf.c: added argno
xputfld.c: added _HAS_FIXED_POINT k, K, r, and R specifiers
xputfld.c: corrected bad code handling
xputfld.c: added _HAS_FIXED_POINT v specifier
xputfld.c: added argno
xputstr.c: checked _Puttxt returns
xscanf.c: changed nconv to detect unstored conversions
xscanf.c: added secure/prec for _HAS_SECURE_LIB
xscanf.c: corrected overflow test
xscanf.c: corrected read failure logic
xscanf.c: corrected matching failure returns
xscanf.c: added AltiVec stuff
xstoflt.c: reworked to avoid excess digits
xstoflt.c: corrected value for bad parse
xstoflt.c: added rollback logic to exponent parse
xstopfx.c: corrected NaN) and hex parsing
xstoxflt.c: reworked to avoid excess digits
xstoxflt.c: corrected incomplete exponent parse
xstoxflt.c: regularized predicate on fraction accumulator
xstoxflt.c: reconciled maxsig compares with xstoflt.c
xthread.c: corrected thread start logic
xwgetfld.c: added k, K, r, and R qualifiers for fixed-point
xwgetfld.c: added AltiVec stuff
xwgetflo.c: added pointer argument for AltiVec
xwgetint.c: added pointer argument for AltiVec
xwgetstr.c: suppressed argument pickup for noconv
xwgetstr.c: corrected error return logic
xwgetstr.c: corrected range-detection logic
xwldtob.c: converted extra digit to fix rounding
xwprintf.c: corrected x.qual logic
xwprintf.c: corrected separator logic
xwprintf.c: added argno
xwputfld.c: added k, K, r, and R qualifiers for fixed-point
xwputfld.c: corrected bad code handling
xwputfld.c: added _HAS_FIXED_POINT v specifier
xwputfld.c: added argno
xwputfld.c: reconciled with xputfld.c
xwputstr.c: checked _WPuttxt returns
xwrename.c: corrected parens in wcstombs test
xwscanf.c: changed nconv to detect unstored conversions
xwscanf.c: corrected overflow test
xwscanf.c: corrected matching failure return
xwscanf.c: added AltiVec stuff
xwstoflt.c: reworked to avoid excess digits
xwstoflt.c: corrected value for bad parse
xwstoflt.c: added rollback logic to exponent parse
xwstoflt.c: reconciled maxsig compares with xstoflt.c
xwstopfx.c: corrected NaN) and hex parsing
xwstopfx.c: corrected Inf parsing
xwstoxfl.c: reworked to avoid excess digits
xwstoxfl.c: corrected incomplete exponent parse
xwstoxfl.c: repaired damaged predicate on fraction accumulator
xwstoxfl.c: reconciled maxsig compares with xstoflt.c
xxacosh.h: changed zero divide to invalid
xxasinh.h: corrected negative x test
xxatanh.h: corrected negative test
xxcacos.h: corrected Inf+I*NaN logic
xxcacos.h: corrected special cases
xxcacosh.h: corrected special cases
xxcacosh.h: corrected final atan2 first argument
xxcasin.h: rewrote in terms of casinh
xxcasinh.h: corrected special cases
xxcatan.h: rewrote in terms of catanh
xxcatanh.h: corrected special cases
xxccos.h: rewrote in terms of ccosh
xxccosh.h: corrected special cases
xxcexp.h: added over/underflow tests
xxcexp.h: moved trap setting to Exp
xxcexp.h: corrected special cases
xxclog.h: reduced cm precision for larger Hypot scaling
xxclog.h: corrected precision near unit circle
xxclog.h: added zero-divide reporting
xxcsin.h: rewrote in terms of csinh
xxcsinh.h: corrected special cases
xxcsqrt.h: added special cases for C99
xxcsqrt.h: corrected (inf, x) logic
xxcsqrt.h: corrected (0 or finite, -0) logic
xxctan.h: eliminated divide by Inf
xxctan.h: rewrote in terms of ctanh
xxctanh.h: eliminated divide by Inf
xxctanh.h: corrected special cases
xxerf.h: changed return for small x
xxerfc.h: added underflow reporting
xxerfc.h: added more intervals, extra precision exp
xxerfc.h: corrected interval logic
xxerfc.h: moved trap setting to Exp
xxerfc.h: improved fits
xxerfc.h: improved zero representations
xxerfc.h: added erf declaration
xxexp.h: moved trap setting to Exp
xxexp2.h: split off exponent to improve accuracy
xxexp2.h: moved trap setting to Exp
xxexpm1.h: changed return for small x
xxfdim.h: eliminated -0 return
xxfma.h: corrected rounding logic
xxfma.h: corrected accumulation
xxfma.h: corrected exp test for huge+2*huge-huge, xp*yp add
xxfma.h: separated out z=Inf case
xxfma.h: added _Xp stuff
xxfmax.h: added -0 handling
xxfmin.h: added -0 handling
xxfmod.h: corrected for large exponent difference
xxlgamma.h: moved in stuff from xxxlgamma.h
xxlgamma.h: added overflow report to lgamma_big
xxlgamma.h: added patches for zeros
xxlgamma.h: added [1.2, 1.5] approximation
xxlgamma.h: improved root approximations
xxllrint.h: simplified
xxllrint.h: added FE_INEXACT logic
xxllround.h: simplified
xxllround.h: added round declaration
xxlog1p.h: changed return for small x
xxlog1p.h: replaced rational approx with _Log1p calls
xxlog1p.h: replaced _Log1p call with extra precision approx
xxlrint.h: simplified
xxlrint.h: added FE_INEXACT logic
xxlround.h: simplified
xxnearbyint.h: simplified
xxnearbyint.h: moved finite case to xxxrint.h
xxnearbyint.h: corrected return syntax
xxpow.h: corrected -0 return
xxpow.h: corrected over/underflow logic, tidied
xxpow.h: corrected (1+eps)^huge
xxpow.h: made zexp long for safety
xxpow.h: added _Xp stuff
xxpow.h: moved trap setting to Exp
xxpow.h: corrected xpx1 load, revised logic
xxpow.h: added ln(x+a) logic
xxpow.h: added _Pow for tgamma
xxpow.h: corrected ln(1) to log2(1) conversion
xxremquo.h: added qneg
xxrint.h: simplified
xxrint.h: added inexact check
xxround.h: simplified
xxsqrt.h: corrected -0 case
xxstod.h: renamed, added perr
xxstod.h: simplified accumulation
xxtan.h: enhanced, moved Quad to xxxquad.h
xxtan.h: corrected 1/eps sign
xxtanh.h: added half argument step
xxtanh.h: eliminated intermediate overflow
xxtgamma.h: added over/underflow reporting
xxtgamma.h: eliminated Lgamma call
xxtgamma.h: moved large x handling to Tgamma
xxtgamma.h: changed Tgamma_big to Gamma_big
xxxatan.h: added inexact logic
xxxcaddcc.h: corrected arithmetic
xxxcaddcc.h: added infinity fixup
xxxcaddcc.h: reconciled with multiply
xxxcaddcc.h: removed infinity fixup
xxxcaddcr.h: dropped assigns
xxxcdivcc.h: corrected NaN tests
xxxcdivcc.h: added infinity fixup
xxxcdivcc.h: removed infinity fixup
xxxcdivcr.h: dropped assigns
xxxcmulcc.h: added infinity fixup
xxxcmulcc.h: removed infinity fixup
xxxcmulcr.h: dropped assigns
xxxcosh.h: corrected -Inf return
xxxcosh.h: moved trap setting to Exp
xxxcsubcc.h: corrected arithmetic
xxxcsubcc.h: added infinity fixup
xxxcsubcc.h: reconciled with multiply
xxxcsubcc.h: removed infinity fixup
xxxcsubcr.h: dropped assigns
xxxdtent.h: renamed, added perr
xxxexp.h: changed exponent argument to long
xxxexp.h: corrected c* precision
xxxexp.h: corrected Inf sign and size of xexp
xxxexp.h: added special code checking and trap setting
xxxexp.h: corrected y==0 logic
xxxexp.h: corrected -0 logic
xxxhypot.h: improved scaling for csqrt
xxxhypot.h: corrected zero arg case
xxxlog.h: generalized Inf return
xxxlog.h: added Logpoly for pow
xxxprec.h: added new file
xxxquad.h: enhanced, moved out of xxxsin.h
xxxquad.h: increased c* precision
xxxquad.h: added Xp stuff for 128-bit precision
xxxquad.h: corrected inexact return
xxxquad.h: made full precision
xxxquad.h: added Quadph
xxxquad.h: corrected overflow in 53-bit values
xxxquad.h: added tables of large moduli
xxxquad.h: corrected XSIZE usage with xpx
xxxrint.h: added new file, copying from xxnearbyint.h
xxxsin.h: enhanced, moved out Quad to xxxquad.h
xxxsinh.h: corrected small x case
xxxsinh.h: moved trap setting to Exp
xxxtgamma.h: moved in Gamma_big from xxxlgamma.h
xxxtgamma.h: moved in large x handling from xxtgamma.h
xxxtgamma.h: changed Tgamma_big to Gamma_big
|