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