Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Erlang and Big Numbers

I am trying to store pi to about 200 decimal places, erlang concats it to about 15 digits, how can I keep the original and have it used in further calculations?

1> P = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513
282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233
786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367
892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351
885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467
669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112
129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253
344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781
857780532171226806613001927876611195909216420198938095257201065485863278865936153381827968230301952035301852968995773622
599413891249721775283479131515574857242454150695950829533116861727855889075098381754637464939319255060400927701671139009
848824012858361603563707660104710181942955596198946767837449448255379774726847104047534646208046684259069491293313677028
989152104752162056966024058038150193511253382430035587640247496473263914199272604269922796782354781636009341721641219924
586315030286182974555706749838505494588586926995690927210797509302955321165344987202755960236480665499119881834797753566
369807426542527862551818417574672890977772793800081647060016145249192173217214772350141441973568548161361157352552133475
741849468438523323907394143334547762416862518983569485562099219222184272550254256887671790494601653466804988627232791786
0857843838279679766814541009538837863609506800642251252051173929848960841284886.
3.141592653589793
2> P.
3.141592653589793
like image 963
BAR Avatar asked Feb 12 '12 17:02

BAR


1 Answers

While Erlang has arbirary big integers, floating point numbers are represented as IEEE 754 doubles. There is no built-in floating point type with arbitrary precision in Erlang.

If you need floating calculations with arbitrary precision you usually have to resort to languages like Mathematica or MAPLE.

You could build your own arbitrary precision floats in Erlang quite easily however by storing them as tuples of two integers – one for the fraction and one for the exponent. You then have to write your own arithmetic functions and can't use the normal operators.

like image 190
Peer Stritzinger Avatar answered Nov 04 '22 17:11

Peer Stritzinger