for floating numbers, question 1 cannot be answered, eg. 0.3 cannot be
represented exactly in binary notation. conversely the inexact binary
representation can correspond to a range of real numbers.

question 2. you need to use =: for definitions in a script if those names
are intended to be available outside that script.

    mantissa=: 3 : 0
      sn=. 0j_3 ": ]  NB. convert to scientific notation as a literal
      ((sn y) i. 'e') {. (sn y)
    )

however, in session manager, there is no difference between =. and =:


Втр, 29 Мар 2011, PackRat писал(а):
> This has got to be easy, but I couldn't find anything easily 
> discernable from the Vocabulary page or from the Phrases pages:
> 
> I'm having problems extracting the mantissa and the exponent from a 
> number in scientific notation.  I'm trying to compare numbers of 
> differing magnitudes to see how similar the digits of the numbers are 
> regardless of the magnitude.  To do so, I'm converting them to 
> scientific notation to separate the magnitude from the base value, 
> using this little converter to scientific notation:
> 
>    sn=. 0j_3 ": ]
> 
> QUESTION 1:  The converter requires a specification of the number of 
> digits to retain in the result (in this case, 3).  Instead of a 
> specified fixed value, how does one specify to the interpreter to use 
> whatever number of digits there are in the argument?  (In other words, 
> the converter should depend upon the input, not upon the programmer.)
> 
> 
> The following verb phrase extracts the mantissa from a scientific 
> notation equivalent of the argument (using the above converter):
> 
>    ((sn y) i. 'e') {. (sn y)
> 
> If y = 440.5 , then the above converts it to '4.405e2' and correctly 
> extracts the digits ahead of the 'e':  '4.405' .
> 
> QUESTION 2:  However, if the two verb phrases above are incorporated 
> into an explicit verb in a script:
> 
>    mantissa=. 3 : 0
>      sn=. 0j_3 ": ]  NB. convert to scientific notation as a literal
>      ((sn y) i. 'e') {. (sn y)
>    )
> 
> then it fails with the following error after loading the script 
> containing the above verb and then executing the verb with a value:
> 
>       mantissa 440.5
>    |syntax error
>    |       mantissa 440.5
> 
> Obviously, I must be doing something wrong, but I can't see what the 
> the error is in the explicit verb definition, since both lines within 
> the verb work perfectly well when entered directly into the 
> interpreter.
> 
> 
> I have a companion explicit verb to extract the exponent:
> 
>    exponent=. 3 : 0
>      sn=. 0j_3 ": ]  NB. convert to scientific notation as a literal
>      (1+(#(mantissa y))) }. (sn y)
>    )
> 
> but it depends upon the "mantissa" verb earlier, which is currently 
> giving the above error message.
> 
> 
> Can anyone help the blind see?  Thanks in advance!
> 
> Harvey
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to