ADA - Ada.Numerics.Big_Numbers.Big_Integer has upper limit?

  • Thread starter Thread starter MFerguson
  • Start date Start date
  • Tags Tags
    Limit
AI Thread Summary
The discussion centers on the Big_Integer library in the 202X version of Ada, which is touted as an "arbitrary precision library" but has a default limit of 300 digits for calculations. Users express confusion regarding this limitation, questioning whether it can be modified or eliminated. The conversation also touches on the distinction between Big Integers and arbitrary precision reals, highlighting that a limit is necessary for certain calculations, such as division. Additionally, there is clarification regarding the terminology, emphasizing that ADA refers to an acronym, while Ada is the name of the programming language named after Ada Lovelace, a pioneer in computing.
MFerguson
Messages
1
Reaction score
0
I just started using the Big_Integer library that is a part of the 202X version of ADA.

It is repeatedly described as an "arbitrary precision library" that has user defined implementation.

I was under the impression that this library would be able to infinitely calculate numbers of any length, but there is clearly a default limit of 300 digits.

Is there any way to get rid of this problem?

Here is some example code:

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Real_Time; use Ada.Real_Time;
with Ada.Numerics.Big_Numbers.Big_Integers;
use Ada.Numerics.Big_Numbers.Big_Integers;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;

procedure Test is
package Time_IO is new Fixed_IO(Duration);
start_time, end_time : Ada.Real_Time.Time;
elapsed_seconds : Ada.Real_Time.Time_Span;
solution : Unbounded_String;

rop : Big_Integer;
sum : Big_Integer := 0;

begin
start_time := Ada.Real_Time.Clock;

for i in 1..700 loop
rop := To_Big_Integer(i) ** Natural(i);
sum := sum + rop;
end loop;
solution := To_Unbounded_String(sum'Image); end_time := Ada.Real_Time.Clock;
elapsed_seconds := end_time - start_time;
Put("Solution: " & solution'Image); New_Line; New_Line;
Put("Program completed in ");
Time_IO.Put(To_Duration(elapsed_seconds), Fore => 0, Aft => 3);
Put(" seconds");
end BigTest;
 
Technology news on Phys.org
Do you want Big Integers or arbitrary precision reals? If the latter then there must be a (modifiable) limit otherwise the calculation of e.g. 1/10 would not terminate.
 
Last edited:
MFerguson said:
I just started using the Big_Integer library that is a part of the 202X version of ADA.

It is repeatedly described as an "arbitrary precision library" that has user defined implementation.

I was under the impression that this library would be able to infinitely calculate numbers of any length, but there is clearly a default limit of 300 digits.

Is there any way to get rid of this problem?

Here is some example code:
 
ADA is not the Ada programming language. The former is an acronym, a three letter one at that. The latter, Ada, is the name of the programming language, named after Ada Lovelace, credited by many as being one of, or the first programmer. She worked with Charles Babbage in the mid Nineteenth Century in designing an analytic machine, later evolved into modern digital computers.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
49
Views
11K
Back
Top