Functions for Maxima in EMT

Assume we want a function that evaluates a number to n digits using Maxima’s big float numbers. You can write a purely symbolic function for this.

>function N(x,n) &&= block(fpprec:n, bfloat(x))
 
                      block(fpprec : n, bfloat(x))
 
>&N(pi,100)
 
        3.141592653589793238462643383279502884197169399375105820974944\
 592307816406286208998628034825342117068b0

The value of fpprec is globally changed then. To avoid this you can save the variable in a local value.

   
>function N(x,n) &&= block([m,r], m:fpprec,  ...
>   fpprec:n, r:bfloat(x), fpprec:m, r)
   
          block([m, r], m : fpprec, fpprec : n, r : bfloat(x), 
                                                           fpprec : m, r)
   
>&N(pi,50)
   
           3.1415926535897932384626433832795028841971693993751b0
   
>&fpprec
   
                                    100

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.