Giter Club home page Giter Club logo

berkeley-softfloat-3's People

Contributors

jerryz123 avatar jerryzj avatar jhauser-ucberkeley avatar kijimad avatar midnighter95 avatar nibrunie avatar nibrunieatsi5 avatar sbeamer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

berkeley-softfloat-3's Issues

softfloat in the kernel

I ported the berkeley-softfloat-3 library to run in the NetBSD kernel.

The only difference is that we need to include different headers than the userspace ones.

I intend to merge this into the NetBSD distribution, but would you accept the patch to make berkeley-softloat-3 buildable in such environment out of the box upstream?

Another approach would be to rely on GCC/Clang defines and redefine all the *int* types from the builtin types, such as __INT_FAST64_TYPE__. It would make berkeley-softfloat-3 fully standalone.

I prefer to avoid downstream patches if possible.

conflicts with gcc's <arm_neon.h>

<arm_neon.h> is defined by a spec that ARM releases, and implemented by compilers. It is not a "real" header file. This happen with either included first.

[2/244] Building CXX object CMakeFiles/zig.dir/src/tokenizer.cpp.o
FAILED: CMakeFiles/zig.dir/src/tokenizer.cpp.o 
/usr/bin/c++   -I../deps/lld/include -I/usr/lib/llvm-8/include -I../deps/SoftFloat-3e/source/include -I../ -I. -I../src -I../deps/SoftFloat-3e-prebuilt -I../deps/SoftFloat-3e/source/8086 -g   -std=c++11 -Werror -Wall -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fno-exceptions -fno-rtti  -Werror=strict-prototypes -Werror=old-style-definition -Werror=type-limits -Wno-missing-braces -MD -MT CMakeFiles/zig.dir/src/tokenizer.cpp.o -MF CMakeFiles/zig.dir/src/tokenizer.cpp.o.d -o CMakeFiles/zig.dir/src/tokenizer.cpp.o -c ../src/tokenizer.cpp
In file included from ../src/utf8/range2-neon.c:10,
                 from ../src/utf8/utf8.h:4,
                 from ../src/tokenizer.cpp:11:
/usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:72:16: error: conflicting declaration ‘typedef __fp16 float16_t’
 typedef __fp16 float16_t;
                ^~~~~~~~~
In file included from ../deps/SoftFloat-3e/source/include/softfloat.h:51,
                 from ../src/softfloat.hpp:12,
                 from ../src/util.hpp:36,
                 from ../src/list.hpp:11,
                 from ../src/buffer.hpp:11,
                 from ../src/tokenizer.hpp:11,
                 from ../src/tokenizer.cpp:8:
../deps/SoftFloat-3e/source/include/softfloat_types.h:50:32: note: previous declaration as ‘typedef struct float16_t float16_t’
 typedef struct { uint16_t v; } float16_t;
                                ^~~~~~~~~
In file included from ../src/utf8/range2-neon.c:10,
                 from ../src/utf8/utf8.h:4,
                 from ../src/tokenizer.cpp:11:
/usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:73:15: error: conflicting declaration ‘typedef float float32_t’
 typedef float float32_t;
               ^~~~~~~~~
In file included from ../deps/SoftFloat-3e/source/include/softfloat.h:51,
                 from ../src/softfloat.hpp:12,
                 from ../src/util.hpp:36,
                 from ../src/list.hpp:11,
                 from ../src/buffer.hpp:11,
                 from ../src/tokenizer.hpp:11,
                 from ../src/tokenizer.cpp:8:
../deps/SoftFloat-3e/source/include/softfloat_types.h:51:32: note: previous declaration as ‘typedef struct float32_t float32_t’
 typedef struct { uint32_t v; } float32_t;
                                ^~~~~~~~~
In file included from ../src/utf8/range2-neon.c:10,
                 from ../src/utf8/utf8.h:4,
                 from ../src/tokenizer.cpp:11:
/usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:74:16: error: conflicting declaration ‘typedef double float64_t’
 typedef double float64_t;
                ^~~~~~~~~
In file included from ../deps/SoftFloat-3e/source/include/softfloat.h:51,
                 from ../src/softfloat.hpp:12,
                 from ../src/util.hpp:36,
                 from ../src/list.hpp:11,
                 from ../src/buffer.hpp:11,
                 from ../src/tokenizer.hpp:11,
                 from ../src/tokenizer.cpp:8:
../deps/SoftFloat-3e/source/include/softfloat_types.h:52:32: note: previous declaration as ‘typedef struct float64_t float64_t’
 typedef struct { uint64_t v; } float64_t;
                                ^~~~~~~~~

Perhaps softfloat does not work with <arm_neon.h>, in which case a preprocessor #error should give a more helpful error.

Future direction of SoftFloat and its development model

The QEMU project makes extensive use of SoftFloat to model floating point instructions. The source in QEMU's tree is based on SoftFloat2a due to later incompatibilities in the licensing. It has also seen a number of additions over time including specialisation for the various architectures we emulate. Perhaps the biggest one being augmenting the API to pass *float_status to the various operations. This needed to be done as the CPUs we emulate often have different FPU contexts so the floating point flags shouldn't interfere with each other.

As time has moved on and more recent processor revisions require additional features from later revisions of IEE754 we are faced with a dilemma of how to move forward. We can either keep adding features to our copy of 2a or instead port our code to use 3c and it track its future development. However given our extensive changes this doesn't make sense if our internal copy is going to have to be significantly modified and diverge again from the upstream. So this leads to a couple of questions:

  • What are the development goals of SoftFloat?
    • why was it originally written and who are its target users?
  • Is SoftFloat in active development?
    • under history it is mentioned UC Berkley funded v3. Is this an ongoing commitment or was there a goal in mind?
    • is the project interested in taking patches from the wider community?
  • What is SoftFloat's development model?
    • The homepage just suggests mailing John directly but there is this repository. Is future development now here or is this just a fork for the Berkley team?

f32_div and f32_sqrt

I could hardly figure out how does f32_div and f32_sqrt work,
especially the two magic functions "softfloat_approxRecip32_1" and "softfloat_apprroxxRecipSqrt32_1"
If there is any paper or website help me learn more details?

f64_mulAdd propagate non-default NaN based on Linux-ARM-VFPv2-GCC

Dear developer,
I ported the berkeley-softfloat-3 library which is built from berkeley-softfloat-3/build/Linux-ARM-VFPv2-GCC/Makefile.
I found that there may be a mistake when I using the function, f64_mulAdd(op2, op1, addend), and give the operand as following

  • op1 = Denormal value
  • op2 = QNaN
  • addend = QNaN

The arithmatic result is different between berkeley-softfloat-3 and pseudo code from ARM spec:

  • berkeley-softfloat-3: return result is equal to op2
  • pseudo code from ARM spec: return result is equal to addend

Please help me to confirm whether berkeley-softfloat-3 library is wrong at here or something missing in my thinking.

The following contents are my investigation:

  • The softfloat result will be the same as op2 based on following code from source/s_mulAddF64.c and source/ARM-VFPv2/s_propagateNaNF64UI.c. (※ uiA -> op2, uiB -> op1, uiC -> addend)

image

image

  • I take the reference to Arm Architecture Reference Manual for A-profile architecture, the result should be the same as addend. The following is its related pseudo code with red mark. (※ I set fpcr's all bits are 0)
    image
    image
    aaa
    image

Many thanks.

s_roundPackToF32.c rounding to odd

Hi,

s_roundPackToF32.c, line 96 implement rounding to odd as following:

96 if ( roundingMode == softfloat_round_odd ) {
97 sig |= 1;

Does this means rod always or the fraction part bit0 to 1'b1?

The correct behavior of rod suppose to be frac round up only:

  1. round > 0.5
  2. if 0.5 & (guard bit == 0)

Kou

behavior of "tininess after rounding" is different in old version

for softfloat-3e
Errors found in f32_mul, rounding near_even:
+01.000000 +7E.7FFFFF => +01.000000 ....x expected +01.000000 ...ux
+01.000000 -7E.7FFFFF => -01.000000 ....x expected -01.000000 ...ux

this case is tricky: the product is a normal number after rounding.

in the function
https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/source/s_roundPackToF32.c

handling tininess part

3e: (line 69 to 80)
if ( exp < 0 ) {
/*----------------------------------------------------------------
----------------------------------------------------------------/
isTiny =
(softfloat_detectTininess == softfloat_tininess_beforeRounding)
|| (exp < -1) || (sig + roundIncrement < 0x80000000);
sig = softfloat_shiftRightJam32( sig, -exp );
exp = 0;
roundBits = sig & 0x7F;
if ( isTiny && roundBits ) {
softfloat_raiseFlags( softfloat_flag_underflow );
}

old 3:
if ( exp < 0 ) {
sig = softfloat_shiftRightJam32( sig, -exp );
isTiny =
(softfloat_detectTininess
== softfloat_tininess_beforeRounding)
|| (exp < -1)
|| (sig + roundIncrement < 0x40000000);
exp = 0;
roundBits = sig & 0x7F;
if ( isTiny && roundBits ) {
softfloat_raiseFlags( softfloat_flag_underflow );
}

the changed part will not affect the choice of tininessbefore
but cause flags different in tininessafter

Consider adding bfloat16 support.

Arm v8.6 and RISC-V extensions Zfbfmin, Zvfbfmin, and Zvfbfwma add support for bfloat16 instructions. Modeling the bfloat16 type would be beneficial in emulating these extensions.

Consider fixing compiler warnings and adding -Wall -Wextra -Weverything

Please consider fixing the following compiler warnings from GCC and Clang. Most of these can probably be fixed by adding explicit type casts. It would add credibility to the project if these warnings were fixed.

GCC 4.9.3 with -Wall -Wextra -Wpedantic -Wno-padded -Wno-missing-prototypes:

../../source/s_mulAddF32.c: In function 'softfloat_mulAddF32':
../../source/s_mulAddF32.c:186:2: warning: label 'invalid' defined but not used [-Wunused-label]
  invalid:
  ^
../../source/s_mulAddF64.c: In function 'softfloat_mulAddF64':
../../source/s_mulAddF64.c:223:2: warning: label 'invalid' defined but not used [-Wunused-label]
  invalid:
  ^
../../source/s_mulAddF128.c: In function 'softfloat_mulAddF128':
../../source/s_mulAddF128.c:329:2: warning: label 'invalid' defined but not used [-Wunused-label]
  invalid:
  ^
../../source/softfloat_state.c:44:60: warning: ISO C does not allow extra ';' outside of a function [-Wpedantic]
 uint_fast8_t softfloat_detectTininess = init_detectTininess;
../../source/f64_to_i64_r_minMag.c: In function 'f64_to_i64_r_minMag':
../../source/f64_to_i64_r_minMag.c:80:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if ( exact && (absZ<<shiftCount != sig) ) {
                                         ^
../../source/extF80_rem.c: In function 'extF80_rem':
../../source/extF80_rem.c:55:10: warning: variable 'signB' set but not used [-Wunused-but-set-variable]
     bool signB;
          ^
../../source/f128_to_i64_r_minMag.c: In function 'f128_to_i64_r_minMag':
../../source/f128_to_i64_r_minMag.c:94:50: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if ( exact && (sig0 || (absZ<<shiftCount != sig64)) ) {
                                                  ^
../../source/f128_rem.c: In function 'f128_rem':
../../source/f128_rem.c:53:10: warning: variable 'signB' set but not used [-Wunused-but-set-variable]
     bool signB;
          ^

Clang 3.7.0 with -Wall -Wextra -Weverything -Wpedantic -Wno-padded -Wno-missing-prototypes:

../../source/s_shortShiftRightJam128.c:50:16: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    negCount = -count;
             ~ ^~~~~~
1 warning generated.
../../source/s_shiftRightJam128.c:50:20: warning: implicit conversion changes signedness: 'uint_fast32_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
        negCount = -count;
                 ~ ^~~~~~
1 warning generated.
../../source/s_shiftRightJam128Extra.c:50:16: warning: implicit conversion changes signedness: 'uint_fast32_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
    negCount = -count;
             ~ ^~~~~~
1 warning generated.
../../source/s_shiftRightJam256M.c:85:28: warning: cast from 'const unsigned long *' to 'unsigned long *' drops const qualifier [-Wcast-qual]
        ptr = (uint64_t *) (aPtr + indexMultiwordLo( 4, wordCount ));
                           ^
../../source/s_shiftRightJam256M.c:86:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
        i = wordCount;
          ~ ^~~~~~~~~
../../source/s_shiftRightJam256M.c:99:19: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
                4 - wordCount,
                ~~^~~~~~~~~~~
../../source/s_shiftRightJam256M.c:108:25: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
            for ( i = 4 - wordCount; i; --i ) {
                    ~ ~~^~~~~~~~~~~
../../source/s_shiftRightJam256M.c:117:10: warning: variable 'ptr' may be uninitialized when used here [-Wconditional-uninitialized]
        *ptr++ = 0;
         ^~~
../../source/s_shiftRightJam256M.c:78:18: note: initialize the variable 'ptr' to silence this warning
    uint64_t *ptr;
                 ^
                  = 0
5 warnings generated.
../../source/s_countLeadingZeros64.c:54:15: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        a32 = a;
            ~ ^
1 warning generated.
../../source/s_mul64To128.c:50:10: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    a0 = a;
       ~ ^
../../source/s_mul64To128.c:52:10: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    b0 = b;
       ~ ^
2 warnings generated.
../../source/s_approxRecip32_1.c:61:21: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    r0 = k0s[index] - ((k1s[index] * (uint_fast32_t) eps)>>20);
       ~ ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecip32_1.c:62:14: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    delta0 = ~(uint_fast32_t) ((r0 * (uint_fast64_t) a)>>7);
           ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecip32_1.c:66:12: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    return r;
    ~~~~~~ ^
3 warnings generated.
../../source/s_approxRecipSqrt32_1.c:60:27: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion]
    index = (a>>27 & 0xE) + oddExpA;
          ~ ~~~~~~~~~~~~~~^~~~~~~~~
../../source/s_approxRecipSqrt32_1.c:62:21: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    r0 = k0s[index] - ((k1s[index] * (uint_fast32_t) eps)>>20);
       ~ ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecipSqrt32_1.c:65:14: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    delta0 = ~(uint_fast32_t) (((uint32_t) ESqrR0 * (uint_fast64_t) a)>>23);
           ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecipSqrt32_1.c:72:12: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    return r;
    ~~~~~~ ^
4 warnings generated.
../../source/s_roundPackToI32.c:67:20: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = sign ? -sig32 : sig32;
          ~        ^~~~~~
../../source/s_roundPackToI32.c:67:29: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = sign ? -sig32 : sig32;
          ~                 ^~~~~
2 warnings generated.
../../source/s_normSubnormalF32Sig.c:46:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros32( sig ) - 8;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_normSubnormalF32Sig.c:46:49: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    shiftCount = softfloat_countLeadingZeros32( sig ) - 8;
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~
2 warnings generated.
../../source/s_roundPackToF32.c:71:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
            sig = softfloat_shiftRightJam32( sig, -exp );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~
../../source/s_roundPackToF32.c:71:46: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            sig = softfloat_shiftRightJam32( sig, -exp );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~
../../source/s_roundPackToF32.c:89:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
3 warnings generated.
../../source/s_normRoundPackToF32.c:48:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros32( sig ) - 1;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_normRoundPackToF32.c:48:49: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    shiftCount = softfloat_countLeadingZeros32( sig ) - 1;
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~
../../source/s_normRoundPackToF32.c:51:17: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        uZ.ui = packToF32UI( sign, sig ? exp : 0, sig<<(shiftCount - 7) );
              ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/include/internals.h:88:89: note: expanded from macro 'packToF32UI'
#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
3 warnings generated.
../../source/s_addMagsF32.c:84:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
            sigA = softfloat_shiftRightJam32( sigA, -expDiff );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~~
../../source/s_addMagsF32.c:93:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
            sigB = softfloat_shiftRightJam32( sigB, expDiff );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~
../../source/s_addMagsF32.c:84:47: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            sigA = softfloat_shiftRightJam32( sigA, -expDiff );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/s_addMagsF32.c:93:47: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            sigB = softfloat_shiftRightJam32( sigB, expDiff );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/s_addMagsF32.c:105:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
5 warnings generated.
../../source/s_subMagsF32.c:87:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
    sigA = softfloat_shiftRightJam32( sigA, -expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~~
../../source/s_subMagsF32.c:101:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
    sigB = softfloat_shiftRightJam32( sigB, expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~
../../source/s_subMagsF32.c:87:39: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    sigA = softfloat_shiftRightJam32( sigA, -expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/s_subMagsF32.c:101:39: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    sigB = softfloat_shiftRightJam32( sigB, expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/s_subMagsF32.c:111:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
5 warnings generated.
../../source/s_mulAddF32.c:82:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB;
                  ^~~~ ~
../../source/s_mulAddF32.c:87:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA;
                  ^~~~ ~
../../source/s_mulAddF32.c:134:66: warning: implicit conversion changes signedness: 'long' to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sigZ = sigC + softfloat_shiftRightJam64( sigProd, 32 - expDiff );
                          ~~~~~~~~~~~~~~~~~~~~~~~~~           ~~~^~~~~~~~~
../../source/s_mulAddF32.c:140:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
                          (uint_fast64_t) sigC<<32, expDiff );
                                                    ^~~~~~~
../../source/s_mulAddF32.c:152:67: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sig64Z = sig64C - softfloat_shiftRightJam64( sigProd, -expDiff );
                              ~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~~
../../source/s_mulAddF32.c:163:67: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sig64Z = sigProd - softfloat_shiftRightJam64( sig64C, expDiff );
                               ~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~
../../source/s_mulAddF32.c:165:62: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( sig64Z ) - 1;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_mulAddF32.c:169:60: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
            sigZ = softfloat_shortShiftRightJam64( sig64Z, -shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~~
../../source/s_mulAddF32.c:194:13: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (expC | sigC) && (signProd != signC) ) {
            ^~~~ ~
../../source/s_mulAddF32.c:186:2: warning: unused label 'invalid' [-Wunused-label]
 invalid:
 ^~~~~~~~
../../source/s_mulAddF32.c:200:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
11 warnings generated.
../../source/s_normSubnormalF64Sig.c:46:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( sig ) - 11;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 warning generated.
../../source/s_roundPackToF64.c:71:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sig = softfloat_shiftRightJam64( sig, -exp );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~
1 warning generated.
../../source/s_normRoundPackToF64.c:48:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( sig ) - 1;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
1 warning generated.
../../source/s_addMagsF64.c:86:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sigA = softfloat_shiftRightJam64( sigA, -expDiff );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~~
../../source/s_addMagsF64.c:95:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sigB = softfloat_shiftRightJam64( sigB, expDiff );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~
2 warnings generated.
../../source/s_subMagsF64.c:87:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sigA = softfloat_shiftRightJam64( sigA, -expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~~
../../source/s_subMagsF64.c:101:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sigB = softfloat_shiftRightJam64( sigB, expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~
2 warnings generated.
../../source/s_mulAddF64.c:86:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB;
                  ^~~~ ~
../../source/s_mulAddF64.c:91:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA;
                  ^~~~ ~
../../source/s_mulAddF64.c:145:67: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sig128Z.v64 = softfloat_shiftRightJam64( sig128Z.v64, -expDiff );
                          ~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~
../../source/s_mulAddF64.c:151:56: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig128C = softfloat_shiftRightJam128( sigC, 0, expDiff );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~
../../source/s_mulAddF64.c:195:67: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( sig128Z.v64 ) - 1;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_mulAddF64.c:198:65: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
            sigZ = softfloat_shortShiftRightJam64( sig128Z.v64, -shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~~
../../source/s_mulAddF64.c:202:46: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
                    sig128Z.v64, sig128Z.v0, shiftCount );
                                             ^~~~~~~~~~
../../source/s_mulAddF64.c:233:13: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (expC | sigC) && (signZ != signC) ) {
            ^~~~ ~
../../source/s_mulAddF64.c:223:2: warning: unused label 'invalid' [-Wunused-label]
 invalid:
 ^~~~~~~~
9 warnings generated.
../../source/s_normSubnormalExtF80Sig.c:46:18: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( sig );
               ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
../../source/s_roundPackToExtF80.c:87:53: warning: implicit conversion changes signedness: 'long' to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            sig = softfloat_shiftRightJam64( sig, 1 - exp );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~       ~~^~~~~
../../source/s_roundPackToExtF80.c:141:66: warning: implicit conversion changes signedness: 'long' to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
                softfloat_shiftRightJam64Extra( sig, sigExtra, 1 - exp );
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 ~~^~~~~
../../source/s_roundPackToExtF80.c:209:20: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = packToExtF80UI64( sign, exp );
                 ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/include/internals.h:129:67: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../../source/s_roundPackToExtF80.c:209:44: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    uZ.s.signExp = packToExtF80UI64( sign, exp );
                   ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                                                     ^
4 warnings generated.
../../source/s_normRoundPackToExtF80.c:59:18: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( sig );
               ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_normRoundPackToExtF80.c:62:62: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
        sig128 = softfloat_shortShiftLeft128( sig, sigExtra, shiftCount );
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~                 ^~~~~~~~~~
2 warnings generated.
../../source/s_addMagsExtF80.c:110:63: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64Extra = softfloat_shiftRightJam64Extra( sigA, 0, -expDiff );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~~
../../source/s_addMagsExtF80.c:126:63: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64Extra = softfloat_shiftRightJam64Extra( sigB, 0, expDiff );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~
../../source/s_addMagsExtF80.c:151:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/s_subMagsExtF80.c:110:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sig128 = softfloat_shiftRightJam128( sigA, 0, -expDiff );
             ~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~~
../../source/s_subMagsExtF80.c:133:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sig128 = softfloat_shiftRightJam128( sigB, 0, expDiff );
             ~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~
../../source/s_subMagsExtF80.c:153:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/s_normSubnormalF128Sig.c:48:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( sig0 ) - 15;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/s_normSubnormalF128Sig.c:58:61: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( sig64 ) - 15;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/s_normSubnormalF128Sig.c:60:59: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
        z.sig = softfloat_shortShiftLeft128( sig64, sig0, shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~
3 warnings generated.
../../source/s_roundPackToF128.c:82:73: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
                softfloat_shiftRightJam128Extra( sig64, sig0, sigExtra, -exp );
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                         ^~~~
1 warning generated.
../../source/s_normRoundPackToF128.c:57:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( sig64 ) - 15;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/s_normRoundPackToF128.c:61:64: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
            sig128 = softfloat_shortShiftLeft128( sig64, sig0, shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~
../../source/s_normRoundPackToF128.c:74:33: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
                sig64, sig0, 0, -shiftCount );
                                ^~~~~~~~~~~
3 warnings generated.
../../source/s_addMagsF128.c:104:68: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            softfloat_shiftRightJam128Extra( sigA.v64, sigA.v0, 0, -expDiff );
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                        ^~~~~~~~
../../source/s_addMagsF128.c:123:68: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            softfloat_shiftRightJam128Extra( sigB.v64, sigB.v0, 0, expDiff );
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                        ^~~~~~~
2 warnings generated.
../../source/s_subMagsF128.c:103:59: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sigA = softfloat_shiftRightJam128( sigA.v64, sigA.v0, -expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~~                     ^~~~~~~~
../../source/s_subMagsF128.c:124:59: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sigB = softfloat_shiftRightJam128( sigB.v64, sigB.v0, expDiff );
           ~~~~~~~~~~~~~~~~~~~~~~~~~~                     ^~~~~~~
2 warnings generated.
../../source/s_mulAddF128.c:101:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB.v64 | sigB.v0;
                  ^~~~ ~
../../source/s_mulAddF128.c:106:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA.v64 | sigA.v0;
                  ^~~~ ~
../../source/s_mulAddF128.c:169:44: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
                        sigZ.v64, sigZ.v0, shiftCount );
                                           ^~~~~~~~~~
../../source/s_mulAddF128.c:195:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
            softfloat_shiftRightJam256M( sig256C, expDiff, sig256C );
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~
../../source/s_mulAddF128.c:298:65: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
                softfloat_shortShiftLeft128( sigZ.v64, sigZ.v0, shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~                     ^~~~~~~~~~
../../source/s_mulAddF128.c:299:63: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
            x128 = softfloat_shortShiftLeft128( 0, sigZExtra, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                ^~~~~~~~~~
../../source/s_mulAddF128.c:309:61: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
    sigZ = softfloat_shortShiftRight128( sigZ.v64, sigZ.v0, shiftCount );
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                     ^~~~~~~~~~
../../source/s_mulAddF128.c:341:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (expC | sigC.v64 | sigC.v0) && (signZ != signC) ) {
            ^~~~ ~
../../source/s_mulAddF128.c:329:2: warning: unused label 'invalid' [-Wunused-label]
 invalid:
 ^~~~~~~~
9 warnings generated.
../../source/softfloat_state.c:44:60: warning: extra ';' outside of a function [-Wextra-semi]
uint_fast8_t softfloat_detectTininess = init_detectTininess;
                                                           ^
1 warning generated.
../../source/ui32_to_f64.c:51:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros32( a ) + 21;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 warning generated.
../../source/ui32_to_extF80.c:50:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros32( a );
                   ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/ui32_to_extF80.c:51:24: warning: implicit conversion changes signedness: 'int' to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
        uiZ64 = 0x401E - shiftCount;
              ~ ~~~~~~~^~~~~~~~~~~~
../../source/ui32_to_extF80.c:54:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/ui32_to_f128.c:50:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros32( a ) + 17;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 warning generated.
../../source/ui64_to_f32.c:48:53: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( a ) - 40;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/ui64_to_f32.c:58:67: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
            (shiftCount < 0) ? softfloat_shortShiftRightJam64( a, -shiftCount )
                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     ^~~~~~~~~~~
../../source/ui64_to_f32.c:51:17: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            a ? packToF32UI(
                ^~~~~~~~~~~~
../../source/include/internals.h:88:89: note: expanded from macro 'packToF32UI'
#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
3 warnings generated.
../../source/ui64_to_extF80.c:50:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( a );
                   ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/ui64_to_extF80.c:51:24: warning: implicit conversion changes signedness: 'int' to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
        uiZ64 = 0x403E - shiftCount;
              ~ ~~~~~~~^~~~~~~~~~~~
../../source/ui64_to_extF80.c:54:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/ui64_to_f128.c:53:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( a ) + 49;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/ui64_to_f128.c:58:55: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
            zSig = softfloat_shortShiftLeft128( 0, a, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~~~~
2 warnings generated.
../../source/i32_to_f64.c:56:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros32( absA ) + 21;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i32_to_f64.c:56:53: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        shiftCount = softfloat_countLeadingZeros32( absA ) + 21;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
2 warnings generated.
../../source/i32_to_extF80.c:56:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros32( absA );
                   ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/i32_to_extF80.c:57:48: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
        uiZ64 = packToExtF80UI64( sign, 0x401E - shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                                                     ^
../../source/i32_to_extF80.c:60:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
../../source/i32_to_extF80.c:56:53: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        shiftCount = softfloat_countLeadingZeros32( absA );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
4 warnings generated.
../../source/i32_to_f128.c:54:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros32( absA ) + 17;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i32_to_f128.c:54:53: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        shiftCount = softfloat_countLeadingZeros32( absA ) + 17;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
2 warnings generated.
../../source/i64_to_f32.c:53:56: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
    shiftCount = softfloat_countLeadingZeros64( absA ) - 40;
               ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i64_to_f32.c:64:57: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
                ? softfloat_shortShiftRightJam64( absA, -shiftCount )
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~~~~~~
../../source/i64_to_f32.c:56:17: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            a ? packToF32UI(
                ^~~~~~~~~~~~
../../source/include/internals.h:88:89: note: expanded from macro 'packToF32UI'
#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
3 warnings generated.
../../source/i64_to_f64.c:50:13: warning: implicit conversion changes signedness: 'int64_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (a & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) {
            ^ ~
1 warning generated.
../../source/i64_to_extF80.c:56:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( absA );
                   ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/i64_to_extF80.c:57:48: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
        uiZ64 = packToExtF80UI64( sign, 0x403E - shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                                                     ^
../../source/i64_to_extF80.c:60:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/i64_to_f128.c:57:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
        shiftCount = softfloat_countLeadingZeros64( absA ) + 49;
                   ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i64_to_f128.c:62:58: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
            zSig = softfloat_shortShiftLeft128( 0, absA, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~           ^~~~~~~~~~
2 warnings generated.
../../source/f32_to_ui32.c:62:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~         ^~~~~~~~~~
1 warning generated.
../../source/f32_to_ui64.c:70:64: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64Extra = softfloat_shiftRightJam64Extra( sig64, 0, shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            ^~~~~~~~~~
1 warning generated.
../../source/f32_to_i32.c:63:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~         ^~~~~~~~~~
1 warning generated.
../../source/f32_to_i64.c:76:64: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64Extra = softfloat_shiftRightJam64Extra( sig64, 0, shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            ^~~~~~~~~~
1 warning generated.
../../source/f32_to_ui32_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
1 warning generated.
../../source/f32_to_ui64_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
1 warning generated.
../../source/f32_to_i32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
../../source/f32_to_i32_r_minMag.c:73:15: warning: implicit conversion changes signedness: 'uint_fast32_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
    absZ = sig>>shiftCount;
         ~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f32_to_i64_r_minMag.c:60:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
../../source/f32_to_i64_r_minMag.c:77:17: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
    absZ = sig64>>shiftCount;
         ~ ~~~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f32_to_extF80.c:85:41: warning: implicit conversion changes signedness: 'long' to 'unsigned long' [-Wsign-conversion]
    uiZ64 = packToExtF80UI64( sign, exp + 0x3F80 );
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                                                     ^
../../source/f32_to_extF80.c:88:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
2 warnings generated.
../../source/f32_roundToInt.c:107:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
1 warning generated.
../../source/f32_mul.c:76:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB;
                  ^~~~ ~
../../source/f32_mul.c:81:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA;
                  ^~~~ ~
../../source/f32_mul.c:119:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
3 warnings generated.
../../source/f32_div.c:100:21: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
            if ( ! (expA | sigA) ) goto invalid;
                    ^~~~ ~
../../source/f32_div.c:176:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
2 warnings generated.
../../source/f32_rem.c:100:16: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    rem = sigA | 0x00800000;
        ~ ~~~~~^~~~~~~~~~~~
../../source/f32_rem.c:164:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
2 warnings generated.
../../source/f32_sqrt.c:77:17: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( ! (expA | sigA) ) return a;
                ^~~~ ~
../../source/f32_sqrt.c:94:64: warning: implicit conversion loses integer precision: 'int_fast16_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
        ((uint_fast64_t) sigA * softfloat_approxRecipSqrt32_1( expA, sigA ))
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/f32_sqrt.c:94:70: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        ((uint_fast64_t) sigA * softfloat_approxRecipSqrt32_1( expA, sigA ))
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~
../../source/f32_sqrt.c:102:30: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        negRem = shiftedSigZ * shiftedSigZ;
               ~ ~~~~~~~~~~~~^~~~~~~~~~~~~
../../source/f32_sqrt.c:117:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
5 warnings generated.
../../source/f64_to_ui32.c:59:65: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    if ( 0 < shiftCount ) sig = softfloat_shiftRightJam64( sig, shiftCount );
                                ~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~~~~~~~
1 warning generated.
../../source/f64_to_ui64.c:73:60: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sigExtra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~
1 warning generated.
../../source/f64_to_i32.c:60:65: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    if ( 0 < shiftCount ) sig = softfloat_shiftRightJam64( sig, shiftCount );
                                ~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~~~~~~~
1 warning generated.
../../source/f64_to_i64.c:78:60: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sigExtra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~
1 warning generated.
../../source/f64_to_ui32_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
1 warning generated.
../../source/f64_to_ui64_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
1 warning generated.
../../source/f64_to_i32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
../../source/f64_to_i32_r_minMag.c:79:15: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
    absZ = sig>>shiftCount;
         ~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f64_to_i64_r_minMag.c:70:19: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
        absZ = sig<<-shiftCount;
             ~ ~~~^~~~~~~~~~~~~
../../source/f64_to_i64_r_minMag.c:73:28: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
            if ( exact && (exp | sig) ) {
                           ^~~ ~
../../source/f64_to_i64_r_minMag.c:79:19: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
        absZ = sig>>shiftCount;
             ~ ~~~^~~~~~~~~~~~
../../source/f64_to_i64_r_minMag.c:80:41: warning: comparison of integers of different signs: 'int_fast64_t' (aka 'long') and 'uint_fast64_t' (aka 'unsigned long') [-Wsign-compare]
        if ( exact && (absZ<<shiftCount != sig) ) {
                       ~~~~~~~~~~~~~~~~ ^  ~~~
4 warnings generated.
../../source/f64_to_f32.c:70:13: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (exp | sig32) ) {
            ^~~ ~
../../source/f64_to_f32.c:76:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
2 warnings generated.
../../source/f64_to_extF80.c:85:41: warning: implicit conversion changes signedness: 'long' to 'unsigned long' [-Wsign-conversion]
    uiZ64 = packToExtF80UI64( sign, exp + 0x3C00 );
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                                                     ^
../../source/f64_to_extF80.c:88:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
2 warnings generated.
../../source/f64_mul.c:85:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB;
                  ^~~~ ~
../../source/f64_mul.c:90:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA;
                  ^~~~ ~
2 warnings generated.
../../source/f64_div.c:97:21: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
            if ( ! (expA | sigA) ) goto invalid;
                    ^~~~ ~
../../source/f64_div.c:134:14: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
        q &= ~7;
          ~~ ^~
2 warnings generated.
../../source/f64_sqrt.c:79:17: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( ! (expA | sigA) ) return a;
                ^~~~ ~
../../source/f64_sqrt.c:98:18: warning: implicit conversion loses integer precision: 'uint_fast64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    sig32A = sigA>>21;
           ~ ~~~~^~~~
../../source/f64_sqrt.c:99:50: warning: implicit conversion loses integer precision: 'int_fast16_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
    recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
3 warnings generated.
../../source/extF80_to_ui32.c:60:43: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sig = softfloat_shiftRightJam64( sig, shiftCount );
          ~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_ui64.c:65:62: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_i32.c:61:43: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
    sig = softfloat_shiftRightJam64( sig, shiftCount );
          ~~~~~~~~~~~~~~~~~~~~~~~~~       ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_i64.c:72:62: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_ui32_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
1 warning generated.
../../source/extF80_to_ui64_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
1 warning generated.
../../source/extF80_to_i32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
../../source/extF80_to_i32_r_minMag.c:84:15: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
    absZ = sig>>shiftCount;
         ~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/extF80_to_i64_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig) ) {
                       ^~~ ~
../../source/extF80_to_i64_r_minMag.c:80:15: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
    absZ = sig>>shiftCount;
         ~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/extF80_to_f32.c:72:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (exp | sig32) ) {
            ^~~ ~
../../source/extF80_to_f32.c:82:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
2 warnings generated.
../../source/extF80_to_f64.c:62:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (exp | sig) ) {
            ^~~ ~
1 warning generated.
../../source/extF80_roundToInt.c:91:28: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        uiZ64 = signUI64 | exp;
                         ~ ^~~
../../source/extF80_roundToInt.c:119:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    uiZ64 = signUI64 | exp;
                     ~ ^~~
../../source/extF80_roundToInt.c:142:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/extF80_mul.c:91:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB;
                  ^~~~ ~
../../source/extF80_mul.c:96:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA;
                  ^~~~ ~
../../source/extF80_mul.c:153:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
3 warnings generated.
../../source/extF80_div.c:198:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
../../source/extF80_div.c:141:55: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul64ByShifted32To128( sigB, q );
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^
../../source/extF80_div.c:153:55: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul64ByShifted32To128( sigB, q );
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^
3 warnings generated.
../../source/extF80_rem.c:163:69: warning: implicit conversion loses integer precision: 'long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
        rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, expDiff + 30 );
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~^~~~
../../source/extF80_rem.c:219:38: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    uiZ64 = packToExtF80UI64( signA, expA );
            ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
                                                                     ^
../../source/extF80_rem.c:222:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
../../source/extF80_rem.c:150:59: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            term = softfloat_mul64ByShifted32To128( sigB, q );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^
../../source/extF80_rem.c:164:55: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul64ByShifted32To128( sigB, q );
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^
5 warnings generated.
../../source/extF80_sqrt.c:163:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
../../source/extF80_sqrt.c:107:50: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
    recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/extF80_sqrt.c:107:56: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~
../../source/extF80_sqrt.c:121:50: warning: implicit conversion loses integer precision: 'uint_fast64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    term = softfloat_mul64ByShifted32To128( x64, q );
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
../../source/extF80_sqrt.c:135:64: warning: implicit conversion loses integer precision: 'uint_fast64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul64ByShifted32To128( x64 + (q>>27), q );
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 ^
5 warnings generated.
../../source/f128_to_ui32.c:64:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~         ^~~~~~~~~~
1 warning generated.
../../source/f128_to_ui64.c:68:64: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
            sig128 = softfloat_shortShiftLeft128( sig64, sig0, -shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~~
../../source/f128_to_ui64.c:76:65: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sigExtra = softfloat_shiftRightJam64Extra( sig64, sig0, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~
2 warnings generated.
../../source/f128_to_i32.c:64:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
                ~~~~~~~~~~~~~~~~~~~~~~~~~         ^~~~~~~~~~
1 warning generated.
../../source/f128_to_i64.c:72:64: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
            sig128 = softfloat_shortShiftLeft128( sig64, sig0, -shiftCount );
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~~
../../source/f128_to_i64.c:78:65: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
        sigExtra = softfloat_shiftRightJam64Extra( sig64, sig0, shiftCount );
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~
2 warnings generated.
../../source/f128_to_ui32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig64) ) {
                       ^~~ ~
1 warning generated.
../../source/f128_to_ui64_r_minMag.c:70:28: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
            if ( exact && (exp | sig64 | sig0) ) {
                           ^~~ ~
1 warning generated.
../../source/f128_to_i32_r_minMag.c:60:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( exact && (exp | sig64) ) {
                       ^~~ ~
../../source/f128_to_i32_r_minMag.c:81:17: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
    absZ = sig64>>shiftCount;
         ~ ~~~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f128_to_i64_r_minMag.c:81:37: warning: implicit conversion changes signedness: 'unsigned long' to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
        absZ = sig64<<negShiftCount | sig0>>(shiftCount & 63);
             ~ ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../../source/f128_to_i64_r_minMag.c:87:28: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
            if ( exact && (exp | sig64 | sig0) ) {
                           ^~~ ~
../../source/f128_to_i64_r_minMag.c:93:21: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
        absZ = sig64>>shiftCount;
             ~ ~~~~~^~~~~~~~~~~~
../../source/f128_to_i64_r_minMag.c:94:50: warning: comparison of integers of different signs: 'int_fast64_t' (aka 'long') and 'uint_fast64_t' (aka 'unsigned long') [-Wsign-compare]
        if ( exact && (sig0 || (absZ<<shiftCount != sig64)) ) {
                                ~~~~~~~~~~~~~~~~ ^  ~~~~~
4 warnings generated.
../../source/f128_to_f32.c:71:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (exp | sig32) ) {
            ^~~ ~
../../source/f128_to_f32.c:81:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    uZ.ui = uiZ;
          ~ ^~~
2 warnings generated.
../../source/f128_to_extF80.c:94:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
    uZ.s.signExp = uiZ64;
                 ~ ^~~~~
1 warning generated.
../../source/f128_to_f64.c:74:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
    if ( ! (exp | sig64) ) {
            ^~~ ~
1 warning generated.
../../source/f128_roundToInt.c:88:36: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
                        uiZ.v64 &= ~1;
                                ~~ ^~
1 warning generated.
../../source/f128_mul.c:92:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expB | sigB.v64 | sigB.v0;
                  ^~~~ ~
../../source/f128_mul.c:97:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        magBits = expA | sigA.v64 | sigA.v0;
                  ^~~~ ~
2 warnings generated.
../../source/f128_div.c:105:21: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
            if ( ! (expA | sigA.v64 | sigA.v0) ) goto invalid;
                    ^~~~ ~
../../source/f128_div.c:137:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
               ~~~~~~~~~~~~~~~~~~~~                     ^
../../source/f128_div.c:149:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
               ~~~~~~~~~~~~~~~~~~~~                     ^
3 warnings generated.
../../source/f128_rem.c:147:69: warning: implicit conversion loses integer precision: 'long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
        rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, expDiff + 30 );
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~^~~~
../../source/f128_rem.c:136:61: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
                   ~~~~~~~~~~~~~~~~~~~~                     ^
../../source/f128_rem.c:148:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
               ~~~~~~~~~~~~~~~~~~~~                     ^
3 warnings generated.
../../source/f128_sqrt.c:85:17: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
        if ( ! (expA | sigA.v64 | sigA.v0) ) return a;
                ^~~~ ~
../../source/f128_sqrt.c:155:14: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
        q &= ~3;
          ~~ ^~
../../source/f128_sqrt.c:177:33: warning: implicit conversion changes signedness: 'int' to 'uint_fast64_t' (aka 'unsigned long') [-Wsign-conversion]
                    sigZExtra = ~0;
                              ~ ^~
../../source/f128_sqrt.c:105:50: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
    recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^~~~
../../source/f128_sqrt.c:105:56: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^~~~~~
../../source/f128_sqrt.c:113:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    qs[2] = sig32Z;
          ~ ^~~~~~
../../source/f128_sqrt.c:118:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    qs[1] = q;
          ~ ^
../../source/f128_sqrt.c:123:50: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    term = softfloat_mul64ByShifted32To128( x64, q );
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
../../source/f128_sqrt.c:136:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul128By32( term.v64, term.v0, q );
               ~~~~~~~~~~~~~~~~~~~~                     ^
../../source/f128_sqrt.c:141:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
    qs[0] = q;
          ~ ^
../../source/f128_sqrt.c:160:59: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        y    = softfloat_mul64ByShifted32To128( term.v0,  q );
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            ^
../../source/f128_sqrt.c:161:59: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
        term = softfloat_mul64ByShifted32To128( term.v64, q );
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            ^
12 warnings generated.

Sync with softfloat from spike

Spike seems to use a slighty modified version of softfloat 3d with some additions that are not present in this 3e version.
Would it be possible to sync them up again?

In particular I'm personally missing in this 3e release:

  • f32_rsqrte7
  • f64_rsqrte7
  • f32_recip7
  • f64_recip7

I'm happy to create a pull request for this but I first wanted to make sure I didn't overlook something...
E.g. there is a valid reason the versions are incompatible currently.
Or the functions I'm looking for exist but under a different name.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.