* Big numbers
@ 2005-04-18 10:49 Doker
2005-04-18 13:40 ` John B. Matthews
0 siblings, 1 reply; 5+ messages in thread
From: Doker @ 2005-04-18 10:49 UTC (permalink / raw)
program like that one can count only up to 29. what can i do to deal with
data up to 100?
with Ada.Text_Io;
use Ada.Text_Io;
procedure Silnia is
A : Long_Long_Integer;
package Lng_Int_Io is new Ada.Text_Io.Integer_Io(Long_Long_Integer);
use Lng_Int_Io;
function Silnia (
Liczba : Long_Long_Integer)
return Long_Long_Integer is
Efekt : Long_Long_Integer := 1;
begin
for I in 2..Liczba loop
Efekt := Efekt * I;
end loop;
return Efekt;
end;
begin
Put_Line("start");
loop
begin
New_Line;
Put("give a number:");
Get(A);
if A >28 then
Put_Line ("can't do with this");
raise Constraint_Error;
end if;
Put ("the result is ");
Put(Long_Long_Integer'Image(Silnia(A)));
exit;
exception
when Data_Error =>
Put("Data Error ");
Skip_Line;
when Constraint_Error =>
Put("Constraint Error ");
Skip_Line;
end;
end loop;
end Main;
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Big numbers
2005-04-18 10:49 Big numbers Doker
@ 2005-04-18 13:40 ` John B. Matthews
2005-04-18 18:53 ` Doker
0 siblings, 1 reply; 5+ messages in thread
From: John B. Matthews @ 2005-04-18 13:40 UTC (permalink / raw)
In article <d402ru$2meo$1@node2.news.atman.pl>, "Doker" <doker0@wp.pl> wrote:
> program like that one can count only up to 29. what can i do to deal with
> data up to 100?
> function Silnia (
> Liczba : Long_Long_Integer)
> return Long_Long_Integer is
> Efekt : Long_Long_Integer := 1;
> begin
> for I in 2..Liczba loop
> Efekt := Efekt * I;
> end loop;
> return Efekt;
> end;
Unless I misunderstand, Silnia returns the factorial of Liczba. Calculating
Silnia(100) would require over 500 bits of storage. I must be missing
something, because your program should fail for Liczba > 20. What is the size
of your implementation's Long_Long_Integer?
Given the following bc program,
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
print "2^64: ", 2^64, "\n"
for (i = 20; i < 30 ; i ++ ) {
print i, "!: ", f(i), "\n"
}
print "100!: ", f(100), "\n"
print "log2(100!): ", l(f(100)) / l(2), "\n"
quit
I get the following output:
$ bc -ql fac.bc
2^64: 18446744073709551616
20!: 2432902008176640000
21!: 51090942171709440000
22!: 1124000727777607680000
23!: 25852016738884976640000
24!: 620448401733239439360000
25!: 15511210043330985984000000
26!: 403291461126605635584000000
27!: 10888869450418352160768000000
28!: 304888344611713860501504000000
29!: 8841761993739701954543616000000
100!: 93326215443944152681699238856266700490715968264381621468\
59296389521759999322991560894146397615651828625369792082\
7223758251185210916864000000000000000000000000
log2(100!): 524.76499329005968632625
--
John
jmatthews at wright dot edu
www dot wright dot edu/~john.matthews/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Big numbers
2005-04-18 13:40 ` John B. Matthews
@ 2005-04-18 18:53 ` Doker
2005-04-18 21:22 ` Jacob Sparre Andersen
0 siblings, 1 reply; 5+ messages in thread
From: Doker @ 2005-04-18 18:53 UTC (permalink / raw)
yes. Silnia is factorial - x!
I couldn't find in a dictionary :)
I don't know what implementation i have. I know i use GNAT and adaGIDE for Win.
But how can I count co big numbers? wIll I find any textbased aritmetic
operation functions or a special type for that?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Big numbers
2005-04-18 18:53 ` Doker
@ 2005-04-18 21:22 ` Jacob Sparre Andersen
2005-04-19 18:19 ` Doker
0 siblings, 1 reply; 5+ messages in thread
From: Jacob Sparre Andersen @ 2005-04-18 21:22 UTC (permalink / raw)
Doker wrote:
> yes. Silnia is factorial - x!
> I couldn't find in a dictionary :)
>
> I don't know what implementation i have. I know i use GNAT and
> adaGIDE for Win.
>
> But how can I count co big numbers? wIll I find any textbased
> aritmetic operation functions or a special type for that?
Take a look at:
http://www.chez.com/bignumber/#Big_Number
Greetings,
Jacob
--
A: Yes.
>Q: Are you sure?
>>A: Because it reverses the logical flow of conversation.
>>>Q: Why is top posting frowned upon?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Big numbers
2005-04-18 21:22 ` Jacob Sparre Andersen
@ 2005-04-19 18:19 ` Doker
0 siblings, 0 replies; 5+ messages in thread
From: Doker @ 2005-04-19 18:19 UTC (permalink / raw)
many thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-04-19 18:19 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-18 10:49 Big numbers Doker
2005-04-18 13:40 ` John B. Matthews
2005-04-18 18:53 ` Doker
2005-04-18 21:22 ` Jacob Sparre Andersen
2005-04-19 18:19 ` Doker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox