Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) CLN CLN example 1: basics: large factorials

 

 

CLN example 1 compares the regular and CLN int in calculating a huge factorial.

 

Operating system: Ubuntu 10.04 LTS Lucid Lynx

IDE: Qt Creator 2.0.0

Project type: console application

Compiler: G++ 4.4.1

Libraries used:

 

 

 

 

 

Qt project file

 

#-------------------------------------------------
#
# Project created by QtCreator 2010-08-24T12:57:24
#
#-------------------------------------------------
QT       += core
QT       -= gui
TARGET = CppClnExample1
CONFIG   += console
CONFIG   -= app_bundle
LIBS += -L/usr/local/lib -lcln
TEMPLATE = app
SOURCES += main.cpp

 

 

 

 

 

main.cpp

 

#include <iostream>
#include <cln/cln.h>

//From http://www.richelbilderbeek.nl/CppClnExample1.htm
int main()
{
  //Regular int
  int x = 1;

  //CLN int
  ::cln::cl_I y = 1;

  for (int i=1; i!=50; ++i)
  {
    x*=i;
    y*=i;
    std::cout << i << "! : " << x << '\t' << y << '\n';
  }
}

 

Screen output:

 

1! : 1 1
2! : 2 2
3! : 6 6
4! : 24 24
5! : 120 120
6! : 720 720
7! : 5040 5040
8! : 40320 40320
9! : 362880 362880
10! : 3628800 3628800
11! : 39916800 39916800
12! : 479001600 479001600
13! : 1932053504 6227020800
14! : 1278945280 87178291200
15! : 2004310016 1307674368000
16! : 2004189184 20922789888000
17! : -288522240 355687428096000
18! : -898433024 6402373705728000
19! : 109641728 121645100408832000
20! : -2102132736 2432902008176640000
21! : -1195114496 51090942171709440000
22! : -522715136 1124000727777607680000
23! : 862453760 25852016738884976640000
24! : -775946240 620448401733239439360000
25! : 2076180480 15511210043330985984000000
26! : -1853882368 403291461126605635584000000
27! : 1484783616 10888869450418352160768000000
28! : -1375731712 304888344611713860501504000000
29! : -1241513984 8841761993739701954543616000000
30! : 1409286144 265252859812191058636308480000000
31! : 738197504 8222838654177922817725562880000000
32! : -2147483648 263130836933693530167218012160000000
33! : -2147483648 8683317618811886495518194401280000000
34! : 0 295232799039604140847618609643520000000
35! : 0 10333147966386144929666651337523200000000
36! : 0 371993326789901217467999448150835200000000
37! : 0 13763753091226345046315979581580902400000000
38! : 0 523022617466601111760007224100074291200000000
39! : 0 20397882081197443358640281739902897356800000000
40! : 0 815915283247897734345611269596115894272000000000
41! : 0 33452526613163807108170062053440751665152000000000
42! : 0 1405006117752879898543142606244511569936384000000000
43! : 0 60415263063373835637355132068513997507264512000000000
44! : 0 2658271574788448768043625811014615890319638528000000000
45! : 0 119622220865480194561963161495657715064383733760000000000
46! : 0 5502622159812088949850305428800254892961651752960000000000
47! : 0 258623241511168180642964355153611979969197632389120000000000
48! : 0 12413915592536072670862289047373375038521486354677760000000000
49! : 0 608281864034267560872252163321295376887552831379210240000000000

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict