Maxima - internal numeric representation ruins calculation -
how can tell maxima solve following problem? (the "solve" part):
i did:
load(distrib); fpprec: 100; bftorat:true; solve(2*bfloat(cdf_normal(x,0,1))-1=0.99999999999999999968130594071b0, [x]); %,numer
got:
(%o1) "/usr/share/maxima/5.32.1/share/distrib/distrib.mac" (%o2) 100 (%o3) true `rat' replaced -1.99999999999999999968130594071b0 -199999999999999999968130594071/100000000000000000000000000000 = -1.99999999999999999968130594071b0 `rat' replaced 5.0b-1 1/2 = 5.0b-1 `rat' replaced 5.0b-1 1/2 = 5.0b-1 `rat' replaced 7.071067811865475244008443621048490392848359376884740365883398689953662392310535194251937671638207864b-1 118807941462947422469655519336079782367473013592460/168019802134529020067676914738440478110633605571601 = 7.071067811865475244008443621048490392848359376884740365883398689953662392310535194251937671638207864b-1 `rat' replaced 7.071067811865475244008443621048490392848359376884740365883398689953662392310535194251937671638207864b-1 118807941462947422469655519336079782367473013592460/168019802134529020067676914738440478110633605571601 = 7.071067811865475244008443621048490392848359376884740365883398689953662392310535194251937671638207864b-1 (%o4) [x= (168019802134529020067676914738440478110633605571601*inverse_erf(99999999999999999968130594071/100000000000000000000000000000))/118807941462947422469655519336079782367473013592460] inverse_erf: inverse_erf(1.0) undefined. -- error. debug try: debugmode(true);
further tried (to see if rational replacement affects inverse_erf):
inverse_erf(9.9999999999999999968130594071b−1); gamma_incomplete: continued fractions failed gamma_incomplete(5.0b-1, 1.675965338889773975600843228854238162008399514002414970690458801529039878850010279559673197036592113916729947593696740535214189646774061729913734402353264492788885098143556404059170138591463120333687838496039284224858192931635551067412157341539627014907074717352945374476804912353312948754404927014555821149803440423871160460111635311071245528519256957555845418916034380535359079516879576795825857468710891474077746896341697834315575814989209244705740463652472196503944998297956825510866851943203353716451062616549067258800559231646552924469724160521456041856694702333938138297284123098699530288993519920353577729741393726951293645734447176179175560311787410907660921783058989196733914852345086206761158383783714360001646880454976428470630991611033582649957934844195398077660932657131767136966243415075424193909691302431604307524134764326959890911322928113456129784004060990585972427799869290459688878023964671879763390452043333273689436077956597199441415992202082578463153853017929328667898523224007b0). -- error. debug try: debugmode(true);
my advice try solve equation symbolic value , replace numerical value later on. here's get:
(%i1) load (distrib) $ (%i2) fpprec : 100 $ (%i3) solve (2 * cdf_normal (x, 0, 1) - 1 = a, x); (%o3) [x = sqrt(2) inverse_erf(a)] (%i4) %, = 0.99999999999999999968130594071b0; (%o4) [x = 6.33712711592763726142078700288254243769449484599872720866948195829\ 6543071614144180808554952052800789b0 sqrt(2)] (%i5) bfloat (%); (%o5) [x = 8.96205111382716157629734310948891265577140990195458570850348910814\ 5354833288951128435123731428126303b0]
Comments
Post a Comment