• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

benchmarks/H07-Apr-2015-281222

c_api_client/H07-Apr-2015-186125

inc/H07-Apr-2015-3,7211,832

lib/Math/H07-Apr-2015-328153

t/H07-Apr-2015-932633

travis/H07-Apr-2015-2617

ChangesH A D07-Apr-20154.8 KiB145111

INSTALLH A D07-Apr-2015946 4424

Int128.xsH A D07-Apr-201545.9 KiB2,1061,927

MANIFESTH A D07-Apr-2015836 4746

META.jsonH A D07-Apr-201520.8 KiB667665

META.ymlH A D07-Apr-201513.2 KiB486485

Makefile.PLH A D07-Apr-20154.9 KiB193153

README.mdH A D07-Apr-20153.6 KiB11978

c_api.declH A D07-Apr-2015577 2716

c_api.hH A D07-Apr-2015892 3016

cpanfileH A D07-Apr-20151,016 4035

dist.iniH A D07-Apr-2015991 4540

perl_math_int64.cH A D07-Apr-20154.4 KiB135111

perl_math_int64.hH A D07-Apr-20152.1 KiB6743

ppport.hH A D07-Apr-2015170.8 KiB7,0643,086

strtoint128.hH A D07-Apr-20153.9 KiB11766

typemapH A D07-Apr-2015250 2013

weaver.iniH A D07-Apr-2015166 1811

README.md

1NAME
2
3    Math::Int128 - Manipulate 128 bits integers in Perl
4
5SYNOPSIS
6
7      use Math::Int128 qw(int128);
8
9      my $i = int128(1);
10      my $j = $i << 100;
11      my $k = int128("1234567890123456789000000");
12      print($i + $j * 1000000);
13
14DESCRIPTION
15
16    This module adds support for 128 bit integers, signed and unsigned, to
17    Perl.
18
19    In order to compile this module, your compiler must support one of
20    either the __int128 or int __attribute__ ((__mode__ (TI))) types. Both
21    GCC and Clang have supported one or the other type for some time, but
22    they may only do so on 64-bit platforms.
23
24 OSX Caveat
25
26    On OSX, the system Perl is compiled with both the "-arch x86_64" and
27    "-arch i386" flags. When building this module with a Perl like this, we
28    strip the "-arch i386" flag out, meaning it is only compiled for the
29    64-bit architecture. Attempting to use this module while running in
30    32-bit mode may lead to brokenness. It's also possible that this will
31    cause other problems that we cannot foresee.
32
33    Note that if you have built your own non-multiarch Perl on OSX then
34    this will not be an issue.
35
36API
37
38    See Math::Int64. This module provides a similar set of functions, just
39    s/64/128/g ;-)
40
41    Besides that, as object allocation and destruction has been found to be
42    a bottleneck, an alternative set of operations that use their first
43    argument as the output (instead of the return value) is also provided.
44
45    They are as follows:
46
47      int128_inc int128_dec int128_add int128_sub int128_mul int128_pow
48      int128_div int128_mod int128_divmod int128_and int128_or int128_xor
49      int128_left int128_right int128_not int128_neg
50
51    and the corresponding uint128 versions.
52
53    For instance:
54
55      my $a = int128("1299472960684039584764953");
56      my $b = int128("-2849503498690387383748");
57      my $ret = int128();
58      int128_mul($ret, $a, $b);
59      int128_inc($ret, $ret); # $ret = $ret + 1
60      int128_add($ret, $ret, "12826738463");
61      say $ret;
62
63    int128_divmod returns both the result of the division and the
64    remainder:
65
66      my $ret = int128();
67      my $rem = int128();
68      int128_divmod($ret, $rem, $a, $b);
69
70C API
71
72    The module provides a C API that allows to wrap/unwrap int128_t and
73    uint128_t values from other modules written in C/XS.
74
75    It is identical to that provided by Math::Int64 so read the
76    documentation there in order to know how to use it.
77
78TODO
79
80    Support more operations as log2, pow, etc.
81
82BUGS AND SUPPORT
83
84    The C API feature is experimental.
85
86    This module requires 128bit integer support from the C compiler.
87    Currently only gcc 4.4 and later are supported. If you have a different
88    compiler that also supports 128bit integers get in touch with me in
89    order to have it supported.
90
91    You can send me bug reports by email to the address that appears below
92    or use the CPAN RT bug tracking system available at http://rt.cpan.org.
93
94    The source for the development version of the module is hosted at
95    GitHub: https://github.com/salva/p5-Math-Int128.
96
97 My wishlist
98
99    If you like this module and you're feeling generous, take a look at my
100    Amazon Wish List: http://amzn.com/w/1WU1P6IR5QZ42
101
102SEE ALSO
103
104    Math::Int64, Math::GMP, Math::GMPn.
105
106    http://perlmonks.org/?node_id=886488.
107
108COPYRIGHT AND LICENSE
109
110    Copyright © 2007, 2009, 2011-2015 by Salvador Fandiño
111    (sfandino@yahoo.com)
112
113    Copyright © 2014-2015 by Dave Rolsky
114
115    This library is free software; you can redistribute it and/or modify it
116    under the same terms as Perl itself, either Perl version 5.10.1 or, at
117    your option, any later version of Perl 5 you may have available.
118
119