Skip to content

Tags: stillwater-sc/universal

Tags

v3.80

Toggle v3.80's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
V3.80: fleshing out double-double and quad-double (#443)

* Setting SEMVER to v3.80

* refining numeric_limits for quad-double

* update headers with license SPDX

* adding quad-double command line utility

* adding a double-double command line utility

* refining numeric_limits for double-double

* WIP: implementing nextafter for double-double

* bug fix on the incorrectly modified ulp() function on native ieee754 floating-point numbers

* WIP: isolate double free bug in dd::to_string

* WIP: found a bug in fixed format to_string for double-double

* memory management bug fix in dd::to_string

* bug fix memory corruption in round_string

* unifying the std::ostream precision articulation

* first principle construction of double-double and quad-double values

* adding an double-double ulp test case

* bug fix fixpnt conversion of real values smaller than half of minpos

* updating fixpnt cli command with universal type name and new types

* WIP: still trying to deduce the ulp algorithm for double-double

* double-double ulp function

* code hygiene and creating a string_utils.hpp to collect string utilities

* header updates

* implementation of increment and decrement

* WIP: printing a double-double in fixed form destroys a leading zero

* dd code hygiene, qd api test progression

* WIP: first implementation of increment and decrement for quad-double

* WIP: implementing extreme value API for quad-double

* code hygiene: isolating internal::uint128 so bitblock is not part of double-double or quad-double dependencies

* code hygiene qd: removing signed/unsigned index warnings in decimal string generation

* adding a verification suite to pow() function for double-double

* moving error_free_ops.hpp from native to numerics to keep ieee754.hpp lightweight

* compilation fix for GCC

* MSVC fix: std::isfinite() is not yet constexpr

* Restructuring build process to isolate projects that depend on complex<>

* bringing together all the complex<> regression suites into a consistent build flow

* resolving all the missing inline keywords on the dd and qd math functions

* Adding new ArXiv publication on iterative refinement with low-precision posits

* unifying the to_components formatting between dd and qd types

* implementing ulp() and to_binary() for quad-double

* adding a math function extension mechanism so we can start experimenting with non-elemental functions

* streamlining Horner's rule functionality across Universal

* compilation fix for gcc/clang

* code hygiene and AppleClang build restructuring

* creating the first design structure to manage a generic math function library

* organizing constants and complex in math library

* compilation fix for gcc/clang

* simpler build configuration for complex<>

* adding native quad-double trigonometry function approximations

* unifying the constexpr table vars with regular dd and qd constants

* removal of files no longer required for dd

* settling on a naming convention for the mathematical constants that is consistent across types

* preparing double-double math infrastructure to mimic universal/math structure

* completing generation of quad-double constants and math library structure

* tracking precision difference between Debug and Release builds in quad-double

* forgot to save the test src

* adding Apple M2 silicon results

* WIP: trying out cbrt as a test math function for specialization with generics fallback

* adding compile-time messages for non-MSVC compilers

* removing warnings on qd_inverse_factorial_table_size int/unsigned mismatch

* code hygiene

v3.79

Toggle v3.79's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
V3.79: quad-double arithmetic type (#437)

* Setting SEMVER to v3.79

* enabling CI on the new v3.79 release branch

* making fixpnt trivially constructable, disabling complex<fixpnt> regression

* WIP: identified double rounding as cause for complex<fixpnt> failures

* labeling the complex<CustomType> use case: we'll need to create our own

* fixpnt is now trivially constructable, any implicit initialiation assumptions in the regression tests need to be fixed

* adding include <cstdint> to satisfy gcc builds

* dd bug fix and enhancement: supporting compiler environments prior to C++20

* recorded bug in bfloat16 that converts a float qNaN to a bfloat sNaN

* remove bfloat16 separate addition regression test, and replace with increased intensity of randoms

* enhancing the dfloat class API as first step in implementation

* WIP: adding native trig functions to double-double

* bug fix: trigonometry functions

* WIP: adding trigonometric function verification suites

* bug fix: both shim and native sqrt function needed fixing

* bug fix of inverse trigonometry functions for double-double

* removing meta_programming experiment as it is causing compilation issues

* removing meta_programming from build

* adding clang17/18 builder containers, which now include the gdb debugger

* standardizing on double-double documentation

* code hygiene double-double

* adding three_sum2 version of three_sum

* code hygiene

* initial check-in of quad-double skeleton

* rewriting three_sums to reflect Li/Bailey LBNL paper

* changing behavior of to_binary for double-double and quad-double

* unifying the to_binary() algorithm for double-double and quad-double

* implementing addition and subtraction for quad-double

* reclassifying some helper class methods to be protected

* adding multiplication to the quad-double

* adding division to quad-double arithmetic

* generating and testing the quad-precision constants

* enabling native log() functions for double-double type

* adding sub() and div() methods to double-double

* adding classification regression test for quad-double

* adding error/gamma regression test for quad-double

* adding exponent regression test for quad-double: exp algorithm is way off

* compilation fix for gcc

* completing the double add/sub/mul/div promotion to double-double API example

* adding fmod/remainder regression test for quad-double

* adding hyperbolic functions regression test for quad-double

* adding hypot function regression test for quad-double

* adding logarithmic function regression tests for quad-double: approximations are way off

* adding min/max function regression tests for quad-double

* adding nextafter/toward regression tests to quad-double

* adding pow function regression test to quad-double

* adding truncating functions regression tests to quad-double

* adding trigonometry regression tests to quad-double

* adding sqrt regression test to quad-double

v3.78

Toggle v3.78's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
V3.78: adding a double-double arithmetic type (#426)

* Setting SEMVER to v3.78

* Setting SEMVER to v3.78

* setting default devcontainer to clang16

* header updates for elastic integer

* header update for c_api

* header update for elastic float

* header update for elastic posit

* header updates for elastic unum

* header updates of mixed-precision applications

* header updates

* adding mathematics section to accuracy applications

* std::numbers inspired numerical constants, sans the C++20 concepts

* AppleClang compilation fix

* header changes for applications of accuracy

* header update and code hygiene for precision applications

* header updates for applications generating mathematical constants

* creating a mixed-precision midpoint/lerp skeleton test to lerp test complex ranges

* code hygiene on precision applications

* header updates and code hygiene for precision applications

* header updates and code hygiene for rest of application projects

* residual compensation algorithm using the quire

* code hygiene for dfloat skeleton

* code hygiene for dfloat skeleton

* code hygiene for bfloat16 skeleton

* initial skeleton for doubledouble arithmetic type

* gcc/clang compilation fix for dfloat template

* adding a doubledouble skeleton

* adding missing quad-double directory and build file

* adding maxpos calculation to doubledouble

* WIP: bootstrapping doubledouble algorithms

* WIP: experiments how to verify doubledouble arithmetic correctness

* compilation and test fixes of doubledouble regression tests

* disabling doubledouble regression tests until coverage

* WIP: bug fix in quad-double multiply operator

* WIP: implementing numerics and classification functions for doubledouble

* WIP: decimal string printing and parsing of doubledouble

* replacing MSVC specific _fpclass API with standard C++ for doubledouble fpclassify

* WIP: skeletons for doubledouble math function regression tests

* bug fix for compilation guard logic for checkNaN/checkInf constexpr functions

* removing BIT_CAST_SUPPORT and standardize on bit_cast.hpp auto configuration

* removing constexpr from bfloat[8|16].assign() as clang doesn't have constexpr std::string

* second attempt to get the BIT_CAST_CONSTEXPR compiler guards correct across the three compilers

* third attempt to get BIT_CAST and LONG_DOUBLE support working across all compilers

* defeaturing std::bit_cast<> from processing long doubles

* removing std::bit_cast<blob, long double>

* adding doubledouble constant generation example

* streamlining doubledouble api tests

* adding a skeleton for experimentation with doubledouble

* changing to_binary of a doubledouble to reflect the hidden bit of the second segment

* adding performance measurements for dd vs native and quad emulation

* marking all variables and intermediates in the Kahan sums and products volatile

* compilation fix for gcc

* experiment with infinite sequence constants

* updating build containers to contain gdb

* code hygiene on volatile qualifier

* implementing setbit on double-double

* WIP: std::stream functionality for double-double

* new utility to report on language features configured

* removing <format> as gcc doesn't support it yet

* quick readme update

* making <stdfloat> conditional as gcc and clang do not support it yet

* code hygiene for double-double

* completing arithmetic regression test skeletons for double-double

* removing unsafe sscanf from parse function of double-double

* WIP: code streamlining and documentation

* code hygiene

* adding pow, exp, and sqrt algorithms for double-double courtesy of Scibuilders

* adding double-double constants of note and a generator

* generating exp table

* code hygiene

* adding shims for the rest of the math library for double-double

* compilation fix for gcc and clang

v3.77

Toggle v3.77's commit message
re-enabling macos-latest in CI now that we have Xcode/AppleClang spec…

…ific build

v3.76

Toggle v3.76's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #418 from stillwater-sc/snyk-fix-da47d9edd77abb137…

…5d6dcc259a6160c

[Snyk] Security upgrade ubuntu from mantic to 23.10

v3.75

Toggle v3.75's commit message

Partially verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
We cannot verify signatures from co-authors, and some of the co-authors attributed to this commit require their commits to be signed.
V3.75: specialized posit enhancements (#407)

* Bumping SEMVER to v3.75.1

* enabling CI for development branch v3.75

* codacy code hygiene fix

* code hygiene fast posit<8,2>

* properly standardizing on STL size_type throughout the Universal BLAS vector and matrix types

* codacy hygiene for Chebyshev applications

* codacy hygiene for arbitrary precision constants

* codacy hygiene for DSP and Cryptography applications

* codacy hygiene catastrophic cancellation demonstration application

* WIP: implementing a fast posit<8,2>: new float_assign algorithm

* found a fix to the weird floating-point NaN behavior in release builds: need to deal with special cases first

* adding minpos/maxpos/minneg/maxneg free functions to cfloat

* renaming reciprocate() to reciprocal() to reflect mathematical nomenclature

* removed test_tag (#406)

Signed-off-by: Theodore Omtzigt <[email protected]>
Co-authored-by: Theodore Omtzigt <[email protected]>

* trace variable update from reciprocate to reciprocal

* fixing reciprocal regression test when exceptions can be thrown

* WIP: bug fix in integer_assign of small specialized posits, and streamlined VerifyIntegerAssignment

* code hygiene for posit attribute functions

* codacy code hygiene

* Structuring the file system to reflect the application project organization

* adding mixed precision sin function learning DNN

* WIP: restructuring test suites to follow the same pattern

* WIP: unifying posit test suite with generic test suite API

* fix regression stress level failure for binary integer arithmetic right shift

* bug fix in regression test for elastic integer

* bug fixes in elastic decimal regression stress test

* stress level regression results

* bug fix in CMakeList.txt

* bug fix in regression level logic

* bug fix in regression logic

* simplifying the REGRESSION_LEVEL_4 to be significantly smaller to reduce running time

* cleanup on isle 5, and renaming fixed-size decimal integer build target

* WIP: creating posit number system checker: need to research what the right interpretation of INFINITY is for posits

* posit maps INFINITE to NaR

---------

Signed-off-by: Theodore Omtzigt <[email protected]>
Co-authored-by: James Quinlan <[email protected]>

v3.74

Toggle v3.74's commit message
compilation fix for gcc 11

v3.73

Toggle v3.73's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
V3.73 (#374)

* updating SEMVER to v3.73.1

* updating CI to build branch v3.73

* code hygiene for benchmarking

* adding dynamic range benchmarking

* code hygiene

* WIP: adding a home for parameterized fma function

* WIP: bfloat16 refinement

v3.71

Toggle v3.71's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
V3.71 (#356)

* incrementing SEMVER to v3.71

* augmenting the skeleton structure to best known practice

* embellishing the oneparam library standard header

* cleaning up orphaned code

* cleanup on the IEEE-754 quire isle

* adding documentation to the quire number type for future research

* WIP: adding error free transform operators

* WIP: faithful skeleton

* WIP: faithful addition

* WIP: implementation of compensated addition twosum style

* WIP: adding compensated evaluations for multiplication and division

* WIP: progress to supporting cfloat in faithful arithmetic

* WIP: experiment to include classic floats in the faithful shim

* expanding converting constructor to support fp8/fp16/fp32/fp64 conversions

* WIP: twosum and fma algorithm updates

* WIP: enable custom fma for cfloats smaller than 40bits

* removing warning from Clang/GCC builds

* fix code documentation to reflect current design

* renaming lns2b to dbns

* WIP: generalizing the cfloat conversion by virtue of the blocktriple

* WIP: generalizing cfloat conversion

* WIP: adding a blockfraction to deliver a binary to decimal string conversion facility

* WIP: declaring blockfraction to be unsigned

* compilation fix for clang and gcc

* WIP: reverse engineering the Dragon4 algorithm

* WIP: dragon1 test case

* WIP: debugging the dynamic stopping condition

* Dragon1 example with correct exit

* WIP: highlighting the subtleties of decimal conversion

* numeric_limits fix for faithful type

---------

Co-authored-by: Theodore Omtzigt <[email protected]>

v3.70

Toggle v3.70's commit message
standardizing containers on ubuntu:kinetic base layer