pif_LongInt

by Popisfizzy
Double, triple, and quadruple-precision integers, both signed and unsigned.
ID:2331808
 
This is a fairly-minor update. The main purpose was to correct a few bugs I noticed lingering from the previous update, and get some features in I'd been lingering on for a long time for no real reason. See the change log below for details.

A minor note about the version number: Based on my numbering scheme, the last update should probably have been b1.2.1.20171217, so I'm skipping over this version number and jumping to the correct order. To be honest, b1.1.0.20170724 should probably have been b1.2.0.20170724 too, but oh well.

pif_LongInt Changelog
  • Fixed a bug that would result in empty arguments (except in constructors) would result in a runtime error. (report)
  • Fixed a bug in the operator-() method on the Signed32 class that would fail to return the proper result when doing negation (that is, when the operator-() method had no arguments). (report)
  • Changed the behavior of right bitshifting methods (BitshiftRight(), operator>>(), and operator>>=()) on the Signed32 class. Previously, the most significant bits were filled with 0's, while common behavior is to fill them with 1's if the number is negative so as to keep right bitshifts the same as integer division by two. The BitshiftRightRotate() method is not affected by this change. (report)
  • Implemented FindFirstSet(), FindLastSet(), CountLeadingZeros(), and CountTrailingZeros() on both Signed32 and Unsigned32.

pif_Arithmetic Changelog
  • Updated the specification on the FindFirstSet() and FindLastSet() methods.
  • Added CountLeadingZeros() and CountTrailingZeros() methods.

The MIT License
Copyright (c) 2016-2017 Timothy "popisfizzy" Reilly

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.