Skip to content

Instantly share code, notes, and snippets.

@Halo-5
Created December 16, 2015 05:14
Show Gist options
  • Save Halo-5/1b9bbe760dcc01a920d5 to your computer and use it in GitHub Desktop.
Save Halo-5/1b9bbe760dcc01a920d5 to your computer and use it in GitHub Desktop.
A comparison of factorial and exponent
{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<style>\n",
"\n",
"\n",
".container { width:100% !important; }\n",
"\n",
"div#notebook { /* centers the page content */\n",
"padding-left:2%;\n",
"padding-right:2%;\n",
"}\n",
" \n",
"div.cell { /* Tunes the space between cells */\n",
"margin-top:1em;\n",
"margin-bottom:1em;\n",
"}\n",
" \n",
"div.text_cell_render h1 { /* Main titles bigger, centered */\n",
"font-size: 2.2em;\n",
"line-height:1.4em;\n",
"text-align:center;\n",
"}\n",
" \n",
"div.text_cell_render h2 { /* Parts names nearer from text */\n",
"margin-bottom: -0.4em;\n",
"}\n",
" \n",
" \n",
"div.text_cell_render { /* Customize text cells */\n",
"font-family: 'Times New Roman';\n",
"font-size:1.5em;\n",
"line-height:1.4em;\n",
"padding-left:3em;\n",
"padding-right:3em;\n",
"}\n",
" \n",
"#notebook li { /* More space between bullet points */\n",
"margin-top:0.8em;\n",
"}\n",
"\n",
"#notebook_panel {\n",
"background : url('motivational_penguin.gif') no-repeat left center ;\n",
"}\n",
"div.cell.code_cell { /* Areat containing both code and output */\n",
"background-color:#F1F0FF; /* light blue */\n",
"border-radius: 10px; /* rounded borders = friendlier */\n",
"padding: 1em;\n",
"}\n",
"\n",
"div.input_area {\n",
"border-color: rgba(0,0,0,0.10);\n",
"background: rbga(0,0,0,0.5);\n",
"}\n",
"\n",
"</style>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import math"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"263130836933693530167218012160000000L"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"math.factorial(32)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import math\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/stefan/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py:2: RuntimeWarning: invalid value encountered in remainder\n",
" from ipykernel import kernelapp as app\n"
]
},
{
"data": {
"image/png": "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\njTEOSu4ZtmKFLyUsWeJvyqVlLfWslWYefNDPGE0iaZn5BJKFyUxvvOE3Ztl336Qj6VgtZRnnYPx4\nn+BvvHFHea5PHz9YWbgw/DijpuSeQc75hHTKKf7t44MPpmtd7awl92uu8eu3JyUrdfcsjNqhtpH7\nf/6nLyfedZf/A9ZaVkszSu4ZM2MGnH46fPObcNtt8K1vpW+yRpaS+8KF/p3PuecmF0NWknsW6u0A\nffvCypXBSymVlr1WcpdIzZrlb/h98Yvw5S/7tdPPPDPpqMrLUnKfNAkmTIhvVmo5J58Mixenv586\nC22Q4Od07LMPrFlT+dg77oCf/AQefbT93ZtOPz2bHTNK7ik3Z45fxXHsWLjoIp8ELrrIzwZNq8MP\nh/XrfUtZmq1f73+5x4+vfGyUuneH44/3q3SmWVbKMhCsNPO//wuXXuqXvT7ssPaPO/po+Nvf/LuB\nLFFyT6kFC+CTn/SLfX38434yxec/v2s9MI06dfJLCc+fn3QkHfvNb2DUKDjooKQjyUZpJitlGajc\nDjlnDlx4oa+xn1hhZ+jSTe+slWaU3FPmxRf9i+6jH/W7AS1f7ssw3bolHVl10l6aaWmByZPhkkuS\njsRLe3IvtUFmoSwDHXfMLF/ue9mvuw5GjAh2vuHDs1eaUXJPiZdf9rPhTj/dj3pfegkuu8yvP5JF\naU/ujz7qV64cNizpSLxSP3VaJzOtWeMHGGlvgyxpryyzerWffXrlldXdRD/99ByO3M3sBjNbY2bt\nvsk2s6vNbJmZzTOzQeGGmG+vvw5f+pJfIbB/fz86uvzy+jarToO0J/drrvGj9rRs8nzIIb7k9pe/\nJB1JeVmqt0P5ssyGDb4Md/HF/iZ6NU4+2XdVbdwYXoxRCzJy/zXwsfa+aGajgCOdcwOACcCUkGLL\ntTVr4Gtf8/W+Hj18Oea73/V3+fPghBP8zd/m5qQj2dXy5f7m5QUXJB3JztJcmslSvR12Hbm/956/\nhzV0KHznO9Wfr3t3P2B55pnwYoxaxeTunHsSeLuDQ8YANxePfQboaWZ9wgkvn2bOhGOP9W/BFy3y\nU5179Uo6qnDtuaeve774YtKR7GryZPjc59JX8ho+HJ54IukoystSvR12rrlv3w6f+YwfOE2aVPu7\ntayVZsKoufcFWle3VhSfk3Zcdx1873vwy1/CgQcmHU100lia2bgRbr7Zl8LS5pxz4P77YevWpCPZ\nVdbKMn37+vr69u1+dcc1a/ykv3paiLM2mSn2bfYmTpz4/uOmpiaampriDiFRW7b4mXA//3nSkUSv\nlNzHjk06kh1uvRXOOGPHgl1pcthhcNRR8PjjflmJNMlaWaZrV78kx6WX+i6XJ56of8Oa007z7wC2\nb49+nkmhUKBQKNR1DnMBbs+b2aHAg865XTpCzWwKMMM5N7X4+RJghHNul/lhZuaCXC/P7r3XlwWm\nTUs6kug9+KD/f/3DH5KOxHPO3wu4+upklvcNYvJkX3e/9dakI9nBOX9f6LXXsnVP6JRT/HZ7Tz0F\nBx8czjmPPRZ++1sYFHPbiJnhnKuqoBS0LGPFj3IeAC4uBjAUWF8usYs3dapfVrQRpK0sUyj4RJXW\nZRsAPvUpv3RzmpYiWL16x5T+LLniCj8LNazEDtkqzQRphbwdeAo4ysxeNbNxZjbBzMYDOOceBl42\ns+XAdcCXI404wzZt8qPYJBepitMhh8C77/qlYtNg0qR0tT+W07u37+h48MGkI9kha/X2krPPDv8m\ncJYmM1WsuTvnKlZMnXMpmeeXbg895Nvd8tYZ0x6zHaP3v/u7ZGN59VU/cr/ppmTjCGLsWL+bVlre\n4WWt3h6l00/3E6CyQDNUY9RIJZmStJRmrr3W3wzLwuSwc87xf4jSsvBa1togo/SBD/h3o6++mnQk\nlSm5x2TDBn8T9Zxzko4kXmlI7u++Czfc4LcgzIIePeDv/97ffE+DrJZlomCWnbq7kntMHnjALwSW\nlbU5wpKG5H7HHX76eJYS1IUX+tJMGqgss7OsTGZSco/JnXc2XkkGYOBAP/J7771kru9c8tvo1WL0\naJg3L/k1xJ3zyV1lmR00cpf3rV/vJ1GMGZN0JPHr3t3vJr94cTLXf/ppeOcdGDkymevXqnt3/3qZ\nOjXZOFatgj32gJ49k40jTQYP9gOWDRuSjqRjSu4xuP9+P2mmR4+kI0lGkqWZSZN8rT1t+8wGMXas\nnzCTJJVkdtW1qy/zPf100pF0LIMv+expxC6Z1pJK7qtX+y3Uxo2L/9phOPNM35WxbFlyMehmanlZ\nKM0ouUds7Vo//fnjH086kuQkldyvv97/Uc3azMqSLl3gn/4p2dG72iDLy8JkJiX3iN17r29ry0J/\ndVRKyT3OZYW2boUpU7LT/tie0oSmpJZk0si9vNNOg9mz07lfQYmSe8QavSQDflnjTp3i7fy4916/\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f225e223850>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import scipy.misc\n",
"plt.plot(scipy.misc.factorial(x) % x)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nKJzK00w5sEsAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f225e0700d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.linspace(0, 5, 40)\n",
"plt.plot(scipy.misc.factorial(x) % np.exp2(x))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1, 1, 2.0, 1.0)\n",
"(2, 2, 4.0, 2.0)\n",
"(3, 6, 8.0, 6.0)\n",
"(4, 24, 16.0, 8.0)\n",
"(5, 120, 32.0, 24.0)\n",
"(6, 720, 64.0, 16.0)\n",
"(7, 5040, 128.0, 48.0)\n",
"(8, 40320, 256.0, 128.0)\n",
"(9, 362880, 512.0, 384.0)\n",
"(10, 3628800, 1024.0, 768.0)\n",
"(11, 39916800, 2048.0, 1280.0)\n",
"(12, 479001600, 4096.0, 3072.0)\n",
"(13, 6227020800, 8192.0, 3072.0)\n",
"(14, 87178291200, 16384.0, 10240.0)\n",
"(15, 1307674368000, 32768.0, 22528.0)\n",
"(16, 20922789888000, 65536.0, 32768.0)\n",
"(17, 355687428096000, 131072.0, 98304.0)\n",
"(18, 6402373705728000, 262144.0, 196608.0)\n",
"(19, 121645100408832000, 524288.0, 65536.0)\n",
"(20, 2432902008176640000, 1048576.0, 262144.0)\n",
"(21, 51090942171709440000L, 2097152.0, 262144.0)\n",
"(22, 1124000727777607680000L, 4194304.0, 1572864.0)\n",
"(23, 25852016738884976640000L, 8388608.0, 0.0)\n",
"(24, 620448401733239439360000L, 16777216.0, 0.0)\n",
"(25, 15511210043330985984000000L, 33554432.0, 0.0)\n",
"(26, 403291461126605635584000000L, 67108864.0, 0.0)\n",
"(27, 10888869450418352160768000000L, 134217728.0, 0.0)\n",
"(28, 304888344611713860501504000000L, 268435456.0, 0.0)\n",
"(29, 8841761993739701954543616000000L, 536870912.0, 0.0)\n",
"(30, 265252859812191058636308480000000L, 1073741824.0, 0.0)\n",
"(31, 8222838654177922817725562880000000L, 2147483648.0, 0.0)\n",
"(32, 263130836933693530167218012160000000L, 4294967296.0, 0.0)\n",
"(33, 8683317618811886495518194401280000000L, 8589934592.0, 0.0)\n",
"(34, 295232799039604140847618609643520000000L, 17179869184.0, 0.0)\n",
"(35, 10333147966386144929666651337523200000000L, 34359738368.0, 0.0)\n",
"(36, 371993326789901217467999448150835200000000L, 68719476736.0, 0.0)\n",
"(37, 13763753091226345046315979581580902400000000L, 137438953472.0, 0.0)\n",
"(38, 523022617466601111760007224100074291200000000L, 274877906944.0, 0.0)\n",
"(39, 20397882081197443358640281739902897356800000000L, 549755813888.0, 0.0)\n"
]
}
],
"source": [
"import math\n",
"for x in range(1, 40):\n",
" print(x,math.factorial(x),math.pow(2,x), math.factorial(x) % math.pow(2,x))"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(' 1', ' 1.0', ' 2.0', ' 1.0')\n",
"(' 2', ' 2.0', ' 4.0', ' 2.0')\n",
"(' 3', ' 6.0', ' 8.0', ' 6.0')\n",
"(' 4', ' 24.0', ' 16.0', ' 8.0')\n",
"(' 5', ' 120.0', ' 32.0', ' 24.0')\n",
"(' 6', ' 720.0', ' 64.0', ' 16.0')\n",
"(' 7', ' 5040.0', ' 128.0', ' 48.0')\n",
"(' 8', ' 40320.0', ' 256.0', ' 128.0')\n",
"(' 9', ' 362880.0', ' 512.0', ' 384.0')\n",
"('10', ' 3628800.0', ' 1024.0', ' 768.0')\n",
"('11', ' 39916800.0', ' 2048.0', ' 1280.0')\n",
"('12', ' 479001600.0', ' 4096.0', ' 3072.0')\n",
"('13', ' 6227020800.0', ' 8192.0', ' 3072.0')\n",
"('14', ' 87178291200.0', ' 16384.0', ' 10240.0')\n",
"('15', ' 1.307674368e+12', ' 32768.0', ' 22528.0')\n",
"('16', ' 2.0922789888e+13', ' 65536.0', ' 32768.0')\n",
"('17', ' 3.55687428096e+14', ' 131072.0', ' 98304.0')\n",
"('18', ' 6.40237370573e+15', ' 262144.0', ' 196608.0')\n",
"('19', ' 1.21645100409e+17', ' 524288.0', ' 65536.0')\n",
"('20', ' 2.43290200818e+18', ' 1048576.0', ' 262144.0')\n",
"('21', ' 5.10909421717e+19', ' 2097152.0', ' 262144.0')\n",
"('22', ' 1.12400072778e+21', ' 4194304.0', ' 1572864.0')\n",
"('23', ' 2.58520167389e+22', ' 8388608.0', ' 0.0')\n",
"('24', ' 6.20448401733e+23', ' 16777216.0', ' 0.0')\n",
"('25', ' 1.55112100433e+25', ' 33554432.0', ' 0.0')\n",
"('26', ' 4.03291461127e+26', ' 67108864.0', ' 0.0')\n",
"('27', ' 1.08888694504e+28', ' 134217728.0', ' 0.0')\n",
"('28', ' 3.04888344612e+29', ' 268435456.0', ' 0.0')\n",
"('29', ' 8.84176199374e+30', ' 536870912.0', ' 0.0')\n"
]
}
],
"source": [
"from decimal import Decimal\n",
"for x in range(1, 30):\n",
" \n",
" print (repr(x).rjust(2),str(scipy.misc.factorial(x)).rjust(20),repr(np.exp2(x)).rjust(20),str(scipy.misc.factorial(x) % np.exp2(x)).rjust(20) )"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<style>\n",
"\n",
"\n",
".container { width:100% !important; }\n",
"\n",
"div#notebook { /* centers the page content */\n",
"padding-left:2%;\n",
"padding-right:2%;\n",
"}\n",
" \n",
"div.cell { /* Tunes the space between cells */\n",
"margin-top:1em;\n",
"margin-bottom:1em;\n",
"}\n",
" \n",
"div.text_cell_render h1 { /* Main titles bigger, centered */\n",
"font-size: 2.2em;\n",
"line-height:1.4em;\n",
"text-align:center;\n",
"}\n",
" \n",
"div.text_cell_render h2 { /* Parts names nearer from text */\n",
"margin-bottom: -0.4em;\n",
"}\n",
" \n",
" \n",
"div.text_cell_render { /* Customize text cells */\n",
"font-family: 'Times New Roman';\n",
"font-size:1.5em;\n",
"line-height:1.4em;\n",
"padding-left:3em;\n",
"padding-right:3em;\n",
"}\n",
" \n",
"#notebook li { /* More space between bullet points */\n",
"margin-top:0.8em;\n",
"}\n",
"\n",
"#notebook_panel {\n",
"background : url('motivational_penguin.gif') no-repeat left center ;\n",
"}\n",
"div.cell.code_cell { /* Areat containing both code and output */\n",
"background-color:#F1F0FF; /* light blue */\n",
"border-radius: 10px; /* rounded borders = friendlier */\n",
"padding: 1em;\n",
"}\n",
"\n",
"div.input_area {\n",
"border-color: rgba(0,0,0,0.10);\n",
"background: rbga(0,0,0,0.5);\n",
"}\n",
"\n",
"</style>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"HTML(\"\"\"\n",
"<style>\n",
"\n",
"\n",
".container { width:100% !important; }\n",
"\n",
"div#notebook { /* centers the page content */\n",
"padding-left:2%;\n",
"padding-right:2%;\n",
"}\n",
" \n",
"div.cell { /* Tunes the space between cells */\n",
"margin-top:1em;\n",
"margin-bottom:1em;\n",
"}\n",
" \n",
"div.text_cell_render h1 { /* Main titles bigger, centered */\n",
"font-size: 2.2em;\n",
"line-height:1.4em;\n",
"text-align:center;\n",
"}\n",
" \n",
"div.text_cell_render h2 { /* Parts names nearer from text */\n",
"margin-bottom: -0.4em;\n",
"}\n",
" \n",
" \n",
"div.text_cell_render { /* Customize text cells */\n",
"font-family: 'Times New Roman';\n",
"font-size:1.5em;\n",
"line-height:1.4em;\n",
"padding-left:3em;\n",
"padding-right:3em;\n",
"}\n",
" \n",
"#notebook li { /* More space between bullet points */\n",
"margin-top:0.8em;\n",
"}\n",
"\n",
"#notebook_panel {\n",
"background : url('motivational_penguin.gif') no-repeat left center ;\n",
"}\n",
"div.cell.code_cell { /* Areat containing both code and output */\n",
"background-color:#F1F0FF; /* light blue */\n",
"border-radius: 10px; /* rounded borders = friendlier */\n",
"padding: 1em;\n",
"}\n",
"\n",
"div.input_area {\n",
"border-color: rgba(0,0,0,0.10);\n",
"background: rbga(0,0,0,0.5);\n",
"}\n",
"\n",
"</style>\n",
"\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, 1.000000000000000000000000000000000000000, 1.000000000000000000000000000000000000000, 0)\n",
"(1, 1.000000000000000000000000000000000000000, 2.718281828459045235360287471352662497757, 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000)\n",
"(2, 2.000000000000000000000000000000000000000, 7.389056098930650227230427460575007813180, 2.0000000000000000000000000000000000000000000000000000000000000000000000000000000)\n",
"(3, 6.000000000000000000000000000000000000000, 20.08553692318766774092852965458171789699, 6.0000000000000000000000000000000000000000000000000000000000000000000000000000000)\n",
"(4, 24.00000000000000000000000000000000000000, 54.59815003314423907811026120286087840279, 24.000000000000000000000000000000000000000000000000000000000000000000000000000000)\n",
"(5, 120.0000000000000000000000000000000000000, 148.4131591025766034211155800405522796235, 120.00000000000000000000000000000000000000000000000000000000000000000000000000000)\n",
"(6, 720.0000000000000000000000000000000000000, 403.4287934927351226083871805433882796059, 316.57120650726487739161281945661172039410010264287079738603281167484881936600650)\n",
"(7, 5040.000000000000000000000000000000000000, 1096.633158428458599263720238288121432442, 653.46736628616560294511904684751427023112346066554742486904303689551292267506748)\n",
"(8, 40320.00000000000000000000000000000000000, 2980.957987041728274743592099452888673756, 1567.5461684575324283333027071124472411724167912731358712834741049595005727462221)\n",
"(9, 362880.0000000000000000000000000000000000, 8103.083927575384007709996689432759965011, 6344.3071866831036607601456649585615394950521354090076499930017041560093096125075)\n",
"(10, 3628800.000000000000000000000000000000000, 22026.46579480671651695790064528424436635, 16459.609651698491218904294173383923918023930556687903825390077743066737754390018)\n",
"(11, 39916800.00000000000000000000000000000000, 59874.14171519781845532648579225778161426, 40621.617678252908752560462356317444902120922636514877254171422965007536804459785)\n",
"(12, 479001600.0000000000000000000000000000000, 162754.7914190039208080052048984867831702, 14248.853871461062040681983753397130074075779124772584613961728109703430994776920)\n",
"(13, 6227020800.000000000000000000000000000000, 442413.3920089205033261027759490882817844, 52307.474443915685103428516582433884692367197199753319042420270517287614632162153)\n",
"(14, 87178291200.00000000000000000000000000000, 1202604.284164776777749236770767859449412, 304036.61116660418007725026710065263943798412297249744924870888271350298140644352)\n",
"(15, 1307674368000.000000000000000000000000000, 3269017.372472110639301855046091721315506, 2038663.7063020664719444623896393713944677011099166640422994477266264737933692294)\n",
"(16, 20922789888000.00000000000000000000000000, 8886110.520507872636763023740781450350803, 7248048.7089909822592141667768579678068461672728764254500920806389830106509423521)\n",
"(17, 355687428096000.0000000000000000000000000, 24154952.75357529821477543518038582387987, 24075801.136441754815190680991928690542117698336346541130043674218568681647731871)\n",
"(18, 6402373705728000.000000000000000000000000, 65659969.13733051113878650325906003356922, 56225824.635938471725699005806472146626457024095100264281674990489611574685933022)\n",
"(19, 121645100408832000.0000000000000000000000, 178482300.9631872608449100337887227038836, 38278588.053993155642353629011523849161310615496360934593030295191791167276911731)\n",
"(20, 2432902008176640000.000000000000000000000, 485165195.4097902779691068305415405586846, 92823441.235615631588603742876528595450107776279663762216601947516023056006954586)\n",
"(21, 51090942171709440000.00000000000000000000, 1318815734.483214697209998883745302785091, 783325453.98928175979442051523900316132947991220632318456748890692140867149887925)\n",
"(22, 1124000727777607680000.000000000000000000, 3584912846.131591561681159945978420689223, 2540560235.2432522840995588208719632146301112856049122148289800741730744150266130)\n",
"(23, 25852016738884976640000.00000000000000000, 9744803446.248902600034632684822975277649, 7802402951.1106634724597606588004207085451883576147018248075723246961776135438794)\n",
"(24, 620448401733239439360000.0000000000000000, 26489122129.84347229413916215281188234087, 1969330232.8714570298488704934807519289893108973693829734307933580303013412870301)\n",
"(25, 15511210043330985984000000.00000000000000, 72004899337.38587252416135146612615791522, 62417263972.987210240748432650843034053406354090729481763727582715674543973385338)\n",
"(26, 403291461126605635584000000.0000000000000, 195729609428.8387642697763978760953427920, 135141266248.59609120205882749685014675332071005756734909026733952741884555127853)\n",
"(27, 10888869450418352160768000000.00000000000, 532048240601.7986166837473043411774416593, 404848021775.49236364461131504166473711923532505617879304430608636687251511624345)\n",
"(28, 304888344611713860501504000000.0000000000, 1446257064291.475173677047422996928856902, 727759885867.03279017663177115593660825977298362386003095892149582743310696931256)\n",
"(29, 8841761993739701954543616000000.000000000, 3931334297144.042074388620580843527685797, 1840487655805.9276637276194057232984309619200237104094497095033320323813505791152)\n",
"(30, 265252859812191058636308480000000.0000000, 10686474581524.46214699046865074140165002, Mod(265252859812191058636308480000000, exp(30)))\n",
"(31, 8222838654177922817725562880000000.000000, 29048849665247.42523108568211167982566676, Mod(8222838654177922817725562880000000, exp(31)))\n",
"(32, 263130836933693530167218012160000000.0000, 78962960182680.69516097802263510822421996, Mod(263130836933693530167218012160000000, exp(32)))\n",
"(33, 8683317618811886495518194401280000000.000, 214643579785916.0646242977615312608803692, Mod(8683317618811886495518194401280000000, exp(33)))\n",
"(34, 295232799039604140847618609643520000000.0, 583461742527454.8814029027346103910190037, Mod(295232799039604140847618609643520000000, exp(34)))\n",
"(35, 1.033314796638614492966665133752320000000e+40, 1586013452313430.728129644625774660125176, Mod(10333147966386144929666651337523200000000, exp(35)))\n",
"(36, 3.719933267899012174679994481508352000000e+41, 4311231547115195.227113422292856925390789, Mod(371993326789901217467999448150835200000000, exp(36)))\n",
"(37, 1.376375309122634504631597958158090240000e+43, 11719142372802611.30877293979119019452168, Mod(13763753091226345046315979581580902400000000, exp(37)))\n",
"(38, 5.230226174666011117600072241000742912000e+44, 31855931757113756.22032867170129864599954, Mod(523022617466601111760007224100074291200000000, exp(38)))\n",
"(39, 2.039788208119744335864028173990289735680e+46, 86593400423993746.95360693271926493424970, Mod(20397882081197443358640281739902897356800000000, exp(39)))\n",
"(40, 8.159152832478977343456112695961158942720e+47, 235385266837019985.4078999107490348045089, Mod(815915283247897734345611269596115894272000000000, exp(40)))\n",
"(41, 3.345252661316380710817006205344075166515e+49, 639843493530054949.2226634035155708188793, Mod(33452526613163807108170062053440751665152000000000, exp(41)))\n",
"(42, 1.405006117752879898543142606244511569936e+51, 1739274941520501047.394681303611235226148, Mod(1405006117752879898543142606244511569936384000000000, exp(42)))\n",
"(43, 6.041526306337383563735513206851399750727e+52, 4727839468229346561.474457562744280370820, Mod(60415263063373835637355132068513997507264512000000000, exp(43)))\n"
]
}
],
"source": [
"import sympy as sy\n",
"sy.init_printing() # enable pretty printing in IPython\n",
"X= sy.symbols('X')\n",
"\n",
"\n",
"expr = (sy.factorial(X))\n",
"expr2 =(sy.exp(X))\n",
"expr3 = (sy.factorial(X)) % (sy.exp(X))\n",
"# The values:\n",
"for k in range(44):\n",
" vX = k\n",
"# substitute values into variables:\n",
" expr10 = expr.subs({X:vX})\n",
" expr20 = expr2.subs({X:vX})\n",
" expr30 = expr3.subs({X:vX})\n",
"# evaluate to 150 digits with internal precision up to 100 digits:\n",
" print(vX,expr10.evalf(n=40, maxn=100),expr20.evalf(n=40, maxn=100), expr30.evalf(n=80, maxn=100))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment