Git Product home page Git Product logo

stddecimal's Introduction

Build

std::decimal

This is an implementation of the proposed C++ ISO/IEC JTC1 SC22 WG21 N2849 std::decimal including the ISO/IEC JTC1 SC22 WG21 N3871 revisions. It is built on the Intel Floating Point Library that does all the hard work.

Intent

I've used this implementation successfully in the past however I wanted build a modern version that relied on templates instead of macros to generate the numerous operators required.

Building

  • std::decimal currently requires a C++ 17 compiler. It is built and tested on macOS with Apple Clang from the latest Xcode and on Ubuntu with Clang 15.
  • The general_decimal_arithmetic/test_runner requires boost. If you don't want to install this just comment it out in the top level CMakeLists.txt
  • Check the supplied Dockerfile for detailed build requirements. This is the environment used to build in Github Actions here.

Floating Point Environment

The specification adds the following functions which have been implemented.

namespace std::decimal {

    int fe_dec_getround();
    int fe_dec_setround(int round);  

}

The specification does not add decimal specific exception state functions as described here. Because the state functions are opaque and we can't really use them I've introduced a decimal specific set by adding DEC_ and _dec_ to the names as follows.

namespace std::decimal {

    constexpr fexcept_t FE_DEC_DIVBYZERO;
    constexpr fexcept_t FE_DEC_INEXACT;
    constexpr fexcept_t FE_DEC_INVALID;
    constexpr fexcept_t FE_DEC_OVERFLOW;
    constexpr fexcept_t FE_DEC_UNDERFLOW;
    constexpr fexcept_t FE_DEC_ALL_EXCEPT;

    struct fenv_t;

    int fe_dec_clearexcept(int except);
    int fe_dec_raiseexcept(int except);
    int fe_dec_setexceptflag(const fexcept_t *pflag, int except);
    int fe_dec_getexceptflag(fexcept_t *pflag, int except);
    int fe_dec_testexcept(int except);
    int fe_dec_getenv(fenv_t *penv);
    int fe_dec_setenv(const fenv_t *penv);
    int fe_dec_holdexcept(fenv_t *penv);
    int fe_dec_updateenv(const fenv_t *penv);

}

Extensions

Support has been added for selectively throwing C++ exceptions.

// Throw std::decimal::exception if any of the exceptions in the except mask are raised.
// NB: Some operations will result in multiple floating point exceptions being raised and
// this will result in a single std::decimal::exception being thrown. The flags property of
/// this exception will include all raised exceptions.
void set_exceptions(int except) noexcept;
// Remove an exceptions in the except mask from the throw list.
void clear_exceptions(int except) noexcept;
// What exceptions have been configured to throw with set_exceptions?
int get_exceptions() noexcept;
// Check the decimal floating point environment exception flags and throw a std:decimal::exception if
// any exceptions have been raised.
// This function is called internally if any exceptions have been enabled with set_exceptions but it
// can also be called manually by the user.
void check_exceptions();
namespace std::decimal {

class exception : public std::exception
{
public:

    exception(fexcept_t flags);
    constexpr fexcept_t flags() const { return m_flags; }
    const char* what() const noexcept override { return m_what.c_str(); }

private:

    fexcept_t m_flags;
    std::string m_what;

};

}

Testing

The library is validated using the General Decimal Arithmetic Test Cases.

  • I'm currently in the process of building the test harness and implementing what is needed to run as many tests as possible so there are a lot of failures.
  • Failing tests are currently more likely to be problems mapping exceptions between the specification and the Intel library than real problems with the calculations.
  • Test cases that are not applicable or not yet supported will be explicitly skipped so this column will likely never get to zero.

Subset Arithmetic

Type Operation Passed Failed Skipped
decimal32 abs 46 0 13
decimal32 add 173 9 210
decimal32 base 0 0 772
decimal32 compare 343 0 70
decimal32 comparetotal 0 0 455
decimal32 divide 95 1 94
decimal32 divideint 0 0 173
decimal32 exp 69 33 217
decimal32 fma 2 7 0
decimal32 inexact 31 3 86
decimal32 ln 77 25 211
decimal32 log10 59 44 210
decimal32 max 29 2 36
decimal32 min 29 2 36
decimal32 minus 32 0 13
decimal32 multiply 74 0 118
decimal32 plus 51 0 13
decimal32 power 125 9 125
decimal32 quantize 221 142 65
decimal32 randombound32 0 0 2400
decimal32 randoms 0 0 4000
decimal32 reduce 0 0 106
decimal32 remainder 154 25 70
decimal32 remaindernear 0 0 263
decimal32 rescale 0 0 203
decimal32 rounding 511 217 0
decimal32 samequantum 64 0 0
decimal32 squareroot 2765 0 52
decimal32 subtract 203 22 294
decimal32 testall 0 0 0
decimal32 tointegral 0 0 70
decimal32 trim 0 0 93
decimal32 5153 541 10468
Type Operation Passed Failed Skipped
decimal64 abs 55 3 1
decimal64 add 219 139 34
decimal64 base 0 0 772
decimal64 compare 393 0 20
decimal64 comparetotal 0 0 455
decimal64 divide 134 10 46
decimal64 divideint 0 0 173
decimal64 exp 134 34 151
decimal64 fma 2 7 0
decimal64 inexact 67 46 7
decimal64 ln 163 30 120
decimal64 log10 134 47 132
decimal64 max 59 8 0
decimal64 min 59 8 0
decimal64 minus 41 3 1
decimal64 multiply 100 20 72
decimal64 plus 60 3 1
decimal64 power 168 58 33
decimal64 quantize 233 157 38
decimal64 randombound32 0 0 2400
decimal64 randoms 989 502 2509
decimal64 reduce 0 0 106
decimal64 remainder 179 44 26
decimal64 remaindernear 0 0 263
decimal64 rescale 0 0 203
decimal64 rounding 224 504 0
decimal64 samequantum 64 0 0
decimal64 squareroot 2808 2 7
decimal64 subtract 295 216 8
decimal64 testall 0 0 0
decimal64 tointegral 0 0 70
decimal64 trim 0 0 93
decimal64 6580 1841 7741
Type Operation Passed Failed Skipped
decimal128 abs 55 3 1
decimal128 add 214 156 22
decimal128 base 0 0 772
decimal128 compare 407 0 6
decimal128 comparetotal 0 0 455
decimal128 divide 135 10 45
decimal128 divideint 0 0 173
decimal128 exp 206 36 77
decimal128 fma 2 7 0
decimal128 inexact 50 63 7
decimal128 ln 225 36 52
decimal128 log10 208 46 59
decimal128 max 59 8 0
decimal128 min 59 8 0
decimal128 minus 41 3 1
decimal128 multiply 98 23 71
decimal128 plus 60 3 1
decimal128 power 169 59 31
decimal128 quantize 241 175 12
decimal128 randombound32 1812 273 315
decimal128 randoms 815 715 2470
decimal128 reduce 0 0 106
decimal128 remainder 180 44 25
decimal128 remaindernear 0 0 263
decimal128 rescale 0 0 203
decimal128 rounding 210 518 0
decimal128 samequantum 64 0 0
decimal128 squareroot 2815 2 0
decimal128 subtract 261 250 8
decimal128 testall 0 0 0
decimal128 tointegral 0 0 70
decimal128 trim 0 0 93
decimal128 8386 2438 5338

Extended Arithmetic

Type Operation Passed Failed Skipped
decimal32 abs 54 0 35
decimal32 add 845 55 1200
decimal32 and 0 0 279
decimal32 base 0 0 1168
decimal32 clamp 0 0 132
decimal32 class 0 0 84
decimal32 compare 449 0 190
decimal32 comparesig 0 0 625
decimal32 comparetotal 0 0 670
decimal32 comparetotmag 0 0 664
decimal32 copy 0 0 43
decimal32 copyabs 0 0 43
decimal32 copynegate 0 0 43
decimal32 copysign 0 0 111
decimal32 ddAbs 0 0 75
decimal32 ddAdd 0 0 1091
decimal32 ddAnd 0 0 287
decimal32 ddBase 0 0 945
decimal32 ddCanonical 0 0 230
decimal32 ddClass 0 0 42
decimal32 ddCompare 0 0 649
decimal32 ddCompareSig 0 0 559
decimal32 ddCompareTotal 0 0 613
decimal32 ddCompareTotalMag 0 0 613
decimal32 ddCopy 0 0 43
decimal32 ddCopyAbs 0 0 43
decimal32 ddCopyNegate 0 0 43
decimal32 ddCopySign 0 0 107
decimal32 ddDivide 0 0 717
decimal32 ddDivideInt 0 0 373
decimal32 ddEncode 0 0 376
decimal32 ddFMA 0 0 1378
decimal32 ddInvert 0 0 151
decimal32 ddLogB 0 0 108
decimal32 ddMax 0 0 256
decimal32 ddMaxMag 0 0 242
decimal32 ddMin 0 0 247
decimal32 ddMinMag 0 0 233
decimal32 ddMinus 0 0 43
decimal32 ddMultiply 0 0 446
decimal32 ddNextMinus 0 0 84
decimal32 ddNextPlus 0 0 84
decimal32 ddNextToward 0 0 304
decimal32 ddOr 0 0 237
decimal32 ddPlus 0 0 43
decimal32 ddQuantize 0 0 683
decimal32 ddReduce 0 0 134
decimal32 ddRemainder 0 0 505
decimal32 ddRemainderNear 0 0 529
decimal32 ddRotate 0 0 212
decimal32 ddSameQuantum 0 0 333
decimal32 ddScaleB 0 0 184
decimal32 ddShift 0 0 212
decimal32 ddSubtract 0 0 516
decimal32 ddToIntegral 0 0 178
decimal32 ddXor 0 0 278
decimal32 decDouble 0 0 0
decimal32 decQuad 0 0 0
decimal32 decSingle 0 0 0
decimal32 divide 453 4 174
decimal32 divideint 0 0 389
decimal32 dqAbs 0 0 75
decimal32 dqAdd 0 0 1012
decimal32 dqAnd 0 0 357
decimal32 dqBase 0 0 926
decimal32 dqCanonical 0 0 244
decimal32 dqClass 0 0 42
decimal32 dqCompare 0 0 659
decimal32 dqCompareSig 0 0 559
decimal32 dqCompareTotal 0 0 613
decimal32 dqCompareTotalMag 0 0 613
decimal32 dqCopy 0 0 43
decimal32 dqCopyAbs 0 0 43
decimal32 dqCopyNegate 0 0 43
decimal32 dqCopySign 0 0 107
decimal32 dqDivide 0 0 688
decimal32 dqDivideInt 0 0 374
decimal32 dqEncode 0 0 368
decimal32 dqFMA 0 0 1451
decimal32 dqInvert 0 0 193
decimal32 dqLogB 0 0 109
decimal32 dqMax 0 0 256
decimal32 dqMaxMag 0 0 242
decimal32 dqMin 0 0 247
decimal32 dqMinMag 0 0 233
decimal32 dqMinus 0 0 43
decimal32 dqMultiply 0 0 473
decimal32 dqNextMinus 0 0 84
decimal32 dqNextPlus 0 0 84
decimal32 dqNextToward 0 0 304
decimal32 dqOr 0 0 341
decimal32 dqPlus 0 0 43
decimal32 dqQuantize 0 0 686
decimal32 dqReduce 0 0 134
decimal32 dqRemainder 0 0 500
decimal32 dqRemainderNear 0 0 530
decimal32 dqRotate 0 0 248
decimal32 dqSameQuantum 0 0 333
decimal32 dqScaleB 0 0 202
decimal32 dqShift 0 0 248
decimal32 dqSubtract 0 0 520
decimal32 dqToIntegral 0 0 178
decimal32 dqXor 0 0 348
decimal32 dsBase 0 0 907
decimal32 dsEncode 0 0 268
decimal32 exp 94 42 304
decimal32 fma 1158 68 1386
decimal32 inexact 49 17 86
decimal32 invert 0 0 128
decimal32 ln 110 47 257
decimal32 log10 62 94 233
decimal32 logb 0 0 128
decimal32 max 231 8 88
decimal32 maxmag 0 0 312
decimal32 min 221 8 88
decimal32 minmag 0 0 303
decimal32 minus 77 0 36
decimal32 multiply 279 13 229
decimal32 nextminus 0 0 104
decimal32 nextplus 0 0 106
decimal32 nexttoward 0 0 341
decimal32 or 0 0 276
decimal32 plus 77 0 45
decimal32 power 508 29 670
decimal32 powersqrt 2791 4 61
decimal32 quantize 283 291 201
decimal32 randombound32 0 0 2400
decimal32 randoms 0 0 4000
decimal32 reduce 0 0 168
decimal32 remainder 378 39 100
decimal32 remaindernear 0 0 446
decimal32 rescale 0 0 617
decimal32 rotate 0 0 195
decimal32 rounding 714 248 68
decimal32 samequantum 301 0 32
decimal32 scaleb 0 0 155
decimal32 shift 0 0 200
decimal32 squareroot 3098 284 204
decimal32 subtract 310 15 356
decimal32 testall 0 0 0
decimal32 tointegral 0 0 168
decimal32 tointegralx 0 0 180
decimal32 trim 0 0 110
decimal32 xor 0 0 277
decimal32 12542 1266 51305
Type Operation Passed Failed Skipped
decimal64 abs 63 3 23
decimal64 add 1563 273 264
decimal64 and 0 0 279
decimal64 base 0 0 1168
decimal64 clamp 0 0 132
decimal64 class 0 0 84
decimal64 compare 517 0 122
decimal64 comparesig 0 0 625
decimal64 comparetotal 0 0 670
decimal64 comparetotmag 0 0 664
decimal64 copy 0 0 43
decimal64 copyabs 0 0 43
decimal64 copynegate 0 0 43
decimal64 copysign 0 0 111
decimal64 ddAbs 0 0 75
decimal64 ddAdd 0 0 1091
decimal64 ddAnd 0 0 287
decimal64 ddBase 0 0 945
decimal64 ddCanonical 0 0 230
decimal64 ddClass 0 0 42
decimal64 ddCompare 0 0 649
decimal64 ddCompareSig 0 0 559
decimal64 ddCompareTotal 0 0 613
decimal64 ddCompareTotalMag 0 0 613
decimal64 ddCopy 0 0 43
decimal64 ddCopyAbs 0 0 43
decimal64 ddCopyNegate 0 0 43
decimal64 ddCopySign 0 0 107
decimal64 ddDivide 0 0 717
decimal64 ddDivideInt 0 0 373
decimal64 ddEncode 0 0 376
decimal64 ddFMA 0 0 1378
decimal64 ddInvert 0 0 151
decimal64 ddLogB 0 0 108
decimal64 ddMax 0 0 256
decimal64 ddMaxMag 0 0 242
decimal64 ddMin 0 0 247
decimal64 ddMinMag 0 0 233
decimal64 ddMinus 0 0 43
decimal64 ddMultiply 0 0 446
decimal64 ddNextMinus 0 0 84
decimal64 ddNextPlus 0 0 84
decimal64 ddNextToward 0 0 304
decimal64 ddOr 0 0 237
decimal64 ddPlus 0 0 43
decimal64 ddQuantize 0 0 683
decimal64 ddReduce 0 0 134
decimal64 ddRemainder 0 0 505
decimal64 ddRemainderNear 0 0 529
decimal64 ddRotate 0 0 212
decimal64 ddSameQuantum 0 0 333
decimal64 ddScaleB 0 0 184
decimal64 ddShift 0 0 212
decimal64 ddSubtract 0 0 516
decimal64 ddToIntegral 0 0 178
decimal64 ddXor 0 0 278
decimal64 decDouble 0 0 0
decimal64 decQuad 0 0 0
decimal64 decSingle 0 0 0
decimal64 divide 515 14 102
decimal64 divideint 0 0 389
decimal64 dqAbs 0 0 75
decimal64 dqAdd 0 0 1012
decimal64 dqAnd 0 0 357
decimal64 dqBase 0 0 926
decimal64 dqCanonical 0 0 244
decimal64 dqClass 0 0 42
decimal64 dqCompare 0 0 659
decimal64 dqCompareSig 0 0 559
decimal64 dqCompareTotal 0 0 613
decimal64 dqCompareTotalMag 0 0 613
decimal64 dqCopy 0 0 43
decimal64 dqCopyAbs 0 0 43
decimal64 dqCopyNegate 0 0 43
decimal64 dqCopySign 0 0 107
decimal64 dqDivide 0 0 688
decimal64 dqDivideInt 0 0 374
decimal64 dqEncode 0 0 368
decimal64 dqFMA 0 0 1451
decimal64 dqInvert 0 0 193
decimal64 dqLogB 0 0 109
decimal64 dqMax 0 0 256
decimal64 dqMaxMag 0 0 242
decimal64 dqMin 0 0 247
decimal64 dqMinMag 0 0 233
decimal64 dqMinus 0 0 43
decimal64 dqMultiply 0 0 473
decimal64 dqNextMinus 0 0 84
decimal64 dqNextPlus 0 0 84
decimal64 dqNextToward 0 0 304
decimal64 dqOr 0 0 341
decimal64 dqPlus 0 0 43
decimal64 dqQuantize 0 0 686
decimal64 dqReduce 0 0 134
decimal64 dqRemainder 0 0 500
decimal64 dqRemainderNear 0 0 530
decimal64 dqRotate 0 0 248
decimal64 dqSameQuantum 0 0 333
decimal64 dqScaleB 0 0 202
decimal64 dqShift 0 0 248
decimal64 dqSubtract 0 0 520
decimal64 dqToIntegral 0 0 178
decimal64 dqXor 0 0 348
decimal64 dsBase 0 0 907
decimal64 dsEncode 0 0 268
decimal64 exp 221 48 171
decimal64 fma 1904 288 420
decimal64 inexact 85 60 7
decimal64 invert 0 0 128
decimal64 ln 207 52 155
decimal64 log10 157 98 134
decimal64 logb 0 0 128
decimal64 max 261 14 52
decimal64 maxmag 0 0 312
decimal64 min 251 14 52
decimal64 minmag 0 0 303
decimal64 minus 86 3 24
decimal64 multiply 298 29 194
decimal64 nextminus 0 0 104
decimal64 nextplus 0 0 106
decimal64 nexttoward 0 0 341
decimal64 or 0 0 276
decimal64 plus 91 3 28
decimal64 power 767 65 375
decimal64 powersqrt 2840 9 7
decimal64 quantize 296 322 157
decimal64 randombound32 0 0 2400
decimal64 randoms 1004 469 2527
decimal64 reduce 0 0 168
decimal64 remainder 411 59 47
decimal64 remaindernear 0 0 446
decimal64 rescale 0 0 617
decimal64 rotate 0 0 195
decimal64 rounding 346 616 68
decimal64 samequantum 301 0 32
decimal64 scaleb 0 0 155
decimal64 shift 0 0 200
decimal64 squareroot 3217 309 60
decimal64 subtract 476 154 51
decimal64 testall 0 0 0
decimal64 tointegral 0 0 168
decimal64 tointegralx 0 0 180
decimal64 trim 0 0 110
decimal64 xor 0 0 277
decimal64 15877 2902 46334
Type Operation Passed Failed Skipped
decimal128 abs 73 15 1
decimal128 add 1265 798 37
decimal128 and 0 0 279
decimal128 base 0 0 1168
decimal128 clamp 0 0 132
decimal128 class 0 0 84
decimal128 compare 546 0 93
decimal128 comparesig 0 0 625
decimal128 comparetotal 0 0 670
decimal128 comparetotmag 0 0 664
decimal128 copy 0 0 43
decimal128 copyabs 0 0 43
decimal128 copynegate 0 0 43
decimal128 copysign 0 0 111
decimal128 ddAbs 0 0 75
decimal128 ddAdd 0 0 1091
decimal128 ddAnd 0 0 287
decimal128 ddBase 0 0 945
decimal128 ddCanonical 0 0 230
decimal128 ddClass 0 0 42
decimal128 ddCompare 0 0 649
decimal128 ddCompareSig 0 0 559
decimal128 ddCompareTotal 0 0 613
decimal128 ddCompareTotalMag 0 0 613
decimal128 ddCopy 0 0 43
decimal128 ddCopyAbs 0 0 43
decimal128 ddCopyNegate 0 0 43
decimal128 ddCopySign 0 0 107
decimal128 ddDivide 0 0 717
decimal128 ddDivideInt 0 0 373
decimal128 ddEncode 0 0 376
decimal128 ddFMA 0 0 1378
decimal128 ddInvert 0 0 151
decimal128 ddLogB 0 0 108
decimal128 ddMax 0 0 256
decimal128 ddMaxMag 0 0 242
decimal128 ddMin 0 0 247
decimal128 ddMinMag 0 0 233
decimal128 ddMinus 0 0 43
decimal128 ddMultiply 0 0 446
decimal128 ddNextMinus 0 0 84
decimal128 ddNextPlus 0 0 84
decimal128 ddNextToward 0 0 304
decimal128 ddOr 0 0 237
decimal128 ddPlus 0 0 43
decimal128 ddQuantize 0 0 683
decimal128 ddReduce 0 0 134
decimal128 ddRemainder 0 0 505
decimal128 ddRemainderNear 0 0 529
decimal128 ddRotate 0 0 212
decimal128 ddSameQuantum 0 0 333
decimal128 ddScaleB 0 0 184
decimal128 ddShift 0 0 212
decimal128 ddSubtract 0 0 516
decimal128 ddToIntegral 0 0 178
decimal128 ddXor 0 0 278
decimal128 decDouble 0 0 0
decimal128 decQuad 0 0 0
decimal128 decSingle 0 0 0
decimal128 divide 554 15 62
decimal128 divideint 0 0 389
decimal128 dqAbs 0 0 75
decimal128 dqAdd 0 0 1012
decimal128 dqAnd 0 0 357
decimal128 dqBase 0 0 926
decimal128 dqCanonical 0 0 244
decimal128 dqClass 0 0 42
decimal128 dqCompare 0 0 659
decimal128 dqCompareSig 0 0 559
decimal128 dqCompareTotal 0 0 613
decimal128 dqCompareTotalMag 0 0 613
decimal128 dqCopy 0 0 43
decimal128 dqCopyAbs 0 0 43
decimal128 dqCopyNegate 0 0 43
decimal128 dqCopySign 0 0 107
decimal128 dqDivide 0 0 688
decimal128 dqDivideInt 0 0 374
decimal128 dqEncode 0 0 368
decimal128 dqFMA 0 0 1451
decimal128 dqInvert 0 0 193
decimal128 dqLogB 0 0 109
decimal128 dqMax 0 0 256
decimal128 dqMaxMag 0 0 242
decimal128 dqMin 0 0 247
decimal128 dqMinMag 0 0 233
decimal128 dqMinus 0 0 43
decimal128 dqMultiply 0 0 473
decimal128 dqNextMinus 0 0 84
decimal128 dqNextPlus 0 0 84
decimal128 dqNextToward 0 0 304
decimal128 dqOr 0 0 341
decimal128 dqPlus 0 0 43
decimal128 dqQuantize 0 0 686
decimal128 dqReduce 0 0 134
decimal128 dqRemainder 0 0 500
decimal128 dqRemainderNear 0 0 530
decimal128 dqRotate 0 0 248
decimal128 dqSameQuantum 0 0 333
decimal128 dqScaleB 0 0 202
decimal128 dqShift 0 0 248
decimal128 dqSubtract 0 0 520
decimal128 dqToIntegral 0 0 178
decimal128 dqXor 0 0 348
decimal128 dsBase 0 0 907
decimal128 dsEncode 0 0 268
decimal128 exp 286 69 85
decimal128 fma 1651 855 106
decimal128 inexact 68 77 7
decimal128 invert 0 0 128
decimal128 ln 270 70 74
decimal128 log10 231 99 59
decimal128 logb 0 0 128
decimal128 max 277 20 30
decimal128 maxmag 0 0 312
decimal128 min 267 20 30
decimal128 minmag 0 0 303
decimal128 minus 96 15 2
decimal128 multiply 345 70 106
decimal128 nextminus 0 0 104
decimal128 nextplus 0 0 106
decimal128 nexttoward 0 0 341
decimal128 or 0 0 276
decimal128 plus 101 19 2
decimal128 power 901 123 183
decimal128 powersqrt 2847 9 0
decimal128 quantize 340 383 52
decimal128 randombound32 1848 186 366
decimal128 randoms 830 682 2488
decimal128 reduce 0 0 168
decimal128 remainder 424 59 34
decimal128 remaindernear 0 0 446
decimal128 rescale 0 0 617
decimal128 rotate 0 0 195
decimal128 rounding 330 632 68
decimal128 samequantum 333 0 0
decimal128 scaleb 0 0 155
decimal128 shift 0 0 200
decimal128 squareroot 3224 339 23
decimal128 subtract 457 206 18
decimal128 testall 0 0 0
decimal128 tointegral 0 0 168
decimal128 tointegralx 0 0 180
decimal128 trim 0 0 110
decimal128 xor 0 0 277
decimal128 17564 4761 42788

stddecimal's People

Contributors

garyhughes avatar

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.