Menu

Tree [b9780f] master /
 History

HTTPS access


File Date Author Commit
 @intinf 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 COPYING 2018-09-03 Etienne Grossmann Etienne Grossmann [105215] Add license file (COPYING) and README. Add some...
 README 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_abs.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_add.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_cmp.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_div.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_inv.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_mul.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_pow.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_prepare_num.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_rand.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 apia_sub.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 intinf_divide.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 intinf_rand.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 intinf_ut.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...
 intinf_vs_bc_ut.m 2018-09-08 Etienne Grossmann Etienne Grossmann [b9780f] Add link to Octave-forge's symbolic package. Fi...

Read Me

Copyright (C) 2018 Etienne Grossmann <etienne@users.sourceforge.net>

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, see <http://www.gnu.org/licenses/>.

This folder contains Octave code to perform arbitrary-precision integer
arithmetic. It may or may not work in Matlab.

The supported operations are:

  >> s = a = intinf (126)               % Creation of intinf-class object from integer or string
  s = 126
  >> b = intinf ('-792716404922304611755050042308687')
  b = -792716404922304611755050042308687
  >> c = a + b                          % Addition
  c = -792716404922304611755050042308561
  >> d = a - b                          % Subtraction
  d = 792716404922304611755050042308813
  >> e = c * d                          % Multiplication
  e = -628399298632943207296804593622614025887290777301864028724995648093
  >> f = (e - a^2) / b                  % Exponentiation, division
  f = 792716404922304611755050042308687
  >> f == -b                            % Logical operators
  ans =  1
  >> [q, r] = intinf_divide (b^2, a)    % Divsion and remainder
  q = 4987296020896374661085750743036619253073736327792571656547584634
  r = 85
  >> r < a
  ans =  1
  >> x = intinf_rand (100)              % Random number (here, with 100 digits)
  x = 5957920324041182863967505832677200714276564790135557044108872634353981714576255029666518574621376764
  >> tic, a^a, toc                      % Don't be in a big hurry
  ans = 4432907660220782149197257457170010056248664733961715006433455717789043517106373872170818953941792055669609014893218047089803712563472169065833738899530142657476809234058293370126853817068631046152741967763913240019546541793769190722594113575550312228000452759781376
  Elapsed time is 2.70419 seconds.

  For faster calculations, you may want to consider the "symbolic" package of
  Octave-forge https://octave.sourceforge.io/symbolic


Code organization:
* This directory contains non-class m-files, e.g. intinf_div() and the back-end
  functions that actually perform the calculations, e.g. apia_add(),
  app_mul(). "apia" stands for "arbitrary-precision integer arithmetic". The
  integers are represented as strings. These functions take double or string
  arguments.
* The sub-directory @intinf contains the class m-files, e.g. intinf(), times().

TODO:
* Better errors.
* Make a package loadable by octave's pkg function.