NAME
Math::Int113 - 113-bit integer arithmetic
DESCRIPTION
113-bit integer arithmetic using perl's native arithmetic operations.
This requires that perl's NV either is '__float128' or the IEEE 754
'long double'.
This module will fail to build && fail to load if that requirement is not
met.
SYNOPSIS
use Math::Int113;
A Math::Int113 object holds, by definition, an (113-bit) integer value in
the range:
-10384593717069655257060992658440192 .. 10384593717069655257060992658440192
All integer values in that range are representable as Math::Int113 objects.
Any perl scalar, $x, will be evaluated as int($x), except for scalars used
in '**' and '**=' operations, where they will be evaluated as per normal.
This allows (eg) for $obj**0.5 to be evlauated as int(sqrt($obj)) rather
simply as $obj**0 (which is 1).
my $a = Math::Int113->new('123.5') # $a holds value of 123
my $b = $a + 42.5; # $b holds value of 165
$b += 35; # $b holds value of 200
print $b, "\n"; # prints 200
$b /= 10.6; # $b holds value of 20
$c = $b ** 0.5; # $c holds value of int(sqrt(20))
print $c; # prints 4.
FUNCTIONS
No functions are provided, except for new() and the subroutines that are
responsible for overloading the '+', '-', '*', '/', '**', '++', '--',
'>=', '<=', '==', '!=', '>', '<', '<=>', '""', '+=', '-=', '*=', '/=',
'**=', '<<', '>>', '&', '|', '^', '~', '<<=', '>>=', '&=', '|=', '^='
(and perhaps other) operations.
head1 LICENSE
This program is free software; you may redistribute it and/or
modify it under the same terms as Perl itself.
Copyright 2023, Sisyphus
AUTHOR
Sisyphus <sisyphus at(@) cpan dot (.) org>