Quantcast

Fwd: lib/include/float2.f

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Fwd: lib/include/float2.f

Andrey Cherezov
Привет!
Предложения по исправлению FLOAT.

-------- Original Message --------
Date: Sun, 28 Jun 2009 23:39:33 +0400
From: Igor Panasenko [hidden email]
To: Андрей Черезов [hidden email]

lib/include/float2.f
1. EXP, FTYPE и FEMIT объявлены глобальными словами. Между тем, первое 
задает рабочую область для преобразования в символьное представление, а 
остальные два - векторы, переключаемые в процессе этого преобразования. 
IMHO, надо переделать в USER-*.
2. В связи с введением переключаемого размера FLOAT (а также слов FLOATS 
и FLOAT+) некоторой недоделкой смотрится жесткое переопределение F@ и F! 
и определение F, для работы строго с восьмибайтными числами. Может, 
сделать поведение этих слов зависимым от размера? Плюс просятся TF@ , 
TF! и TF, для работы с десятибайтными.
3. Есть предложение доработать слово FLOAT? , чтобы можно было 
сворачивать числа без экспоненты. В текстах программ требования можно 
соблюсти, а вот исходные данные могут быть разные. Собственно свертка 
(внутри >FLOAT) вроде бы относится к такому формату спокойно, только 
FLOAT? настаивает на обязательном наличии экспоненты. Есть такой (пока 
не проверенный) вариант:

: ?FLOAT ( addr u -- bool )
    DUP 1 < IF 2DROP 0 EXIT THEN
    1   0 <SIGN>    >R
    16  0 <DIGITS>  >R
    1   0 <DOT>     >R
    16  0 <DIGITS>  >R
    1   1 <EXP>
    IF
      1   0 <SIGN>    >R
      4   0 <DIGITS>  >R
    ELSE
      TRUE DUP 2>R
    THEN
    NIP 0= \ После всего этого должен быть конец строки
    2R> 2R> 2R>
    AND AND AND AND AND
    AND
;

Неустраненный глюк - благосклонно принимает выражения вида -. и +. , а 
также - + . (если вдруг попадутся во входных данных).


------------------------------------------------------------------------------

_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Fwd: lib/include/float2.f

ygrek-3
On Mon, 29 Jun 2009 19:17:11 +0300
Andrey Cherezov <[hidden email]> wrote:

> lib/include/float2.f
> 1. EXP, FTYPE и FEMIT объявлены глобальными словами. Между тем, первое
> задает рабочую область для преобразования в символьное представление, а
> остальные два - векторы, переключаемые в процессе этого преобразования.
> IMHO, надо переделать в USER-*.

Да, согласен.

> 2. В связи с введением переключаемого размера FLOAT (а также слов FLOATS
> и FLOAT+) некоторой недоделкой смотрится жесткое переопределение F@ и F!
> и определение F, для работы строго с восьмибайтными числами. Может,
> сделать поведение этих слов зависимым от размера? Плюс просятся TF@ ,
> TF! и TF, для работы с десятибайтными.

Вообще тут кривость изначально уже в том что в ядре F! определён для 10-байтных, а в либе
переопределяется для восьми.
Но стоит ли теперь менять семантику этих слов -- будет несовместимость.. И я не уверен что
такое переключение будет удобно и не бажно. Ещё одна глобальная переменная которую надо помнить.
Пускай уж лучше формат записываемых данных определяется "на месте" -- самим словом которое используется.
TF ввести можно (лично мне никогда не нужны были, 8 байт хватало).

> 3. Есть предложение доработать слово FLOAT? , чтобы можно было
> сворачивать числа без экспоненты. В текстах программ требования можно
> соблюсти, а вот исходные данные могут быть разные. Собственно свертка
> (внутри>FLOAT) вроде бы относится к такому формату спокойно, только
> FLOAT? настаивает на обязательном наличии экспоненты. Есть такой (пока
> не проверенный) вариант:

>FLOAT используется в NOTFOUND поэтому у него должны быть жёсткие ограничения по формату,
можно ввести дополнительное слово которое будет пытаться трактовать строку как вещественное
число "приложив максимум усилий".

--
 ~ygrek

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (204 bytes) Download Attachment
Loading...