Пара замеченных ньюансов

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Пара замеченных ньюансов

Dmitry Yakimov
Привет,

1. -1 2/ и -1 2 / дают разные результаты (в gforth кстати дают одно и то же)
2. -1 allocate в spf4 работает а не должен

Дмитрий Якимов.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Пара замеченных ньюансов

Иванов
По стандарту 94 они могут быть разными:

&6.1.0330   2/   "two-slash"                   CORE
( x1 -- x2 )
        x2 - результат смещения x1 на один бит к младшему двоичному 
            разряду, оставляет старший бит неизменным.


&6.1.0230   /     "slash"                      CORE
( n1 n2 -- n3 )
   Делит n1 на n2, возвращает частное одна-ячейка n3. Неопределенная 
   ситуация существует, если n2 нулевое. Если n1 и n2 отличаются по 
   знаку, возвращенный результат, определенный реализацией будет тот 
   же самый, как и возвращаемый фразой  >R S>D R> FM/MOD SWAP DROP или 
   фразой >R S>D R> SM/REM SWAP DROP.


В Пн, 23/01/2017 в 22:02 +0300, Dmitry Yakimov пишет:
Привет,

1. -1 2/ и -1 2 / дают разные результаты (в gforth кстати дают одно и то же)
2. -1 allocate в spf4 работает а не должен

Дмитрий Якимов.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Spf-dev mailing list

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Пара замеченных ньюансов

Ruvim Pinka
In reply to this post by Dmitry Yakimov
Привет!


2017-01-23 22:02 GMT+03:00 Dmitry Yakimov <[hidden email]>:

1. -1 2/ и -1 2 / дают разные результаты (в gforth кстати дают одно и то же)

Как уже написал Ivanov, это допустимо.

'2/' делает просто сдвиг, что равносильно округлению вниз, а в '/' допускается реализовать либо округление вниз либо симметричное (но вроде как в стандарте не указано, какое из симметричных).

В SP-Forth делается округление к нулю. Разница проявляется только если аргументы разных знаков.


2. -1 allocate в spf4 работает а не должен

Было переполнение при добавлении размера служебной ячейки при аргументе от -4 до -1

Спасибо, исправлено!

--
Ruvim

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Пара замеченных ньюансов

Ruvim Pinka

2017-01-24 13:21 GMT+03:00 Ruvim Pinka <[hidden email]>:

2017-01-23 22:02 GMT+03:00 Dmitry Yakimov <[hidden email]>:

1. -1 2/ и -1 2 / дают разные результаты (в gforth кстати дают одно и то же)

Как уже написал Ivanov, это допустимо.

'2/' делает просто сдвиг, что равносильно округлению вниз, а в '/' допускается реализовать либо округление вниз либо симметричное (но вроде как в стандарте не указано, какое из симметричных).

Указано в главе Usage requirements, части 3.2.2.1 Integer division

Symmetric division is integer division in which the remainder carries the sign of the dividend or is zero and the quotient is the mathematical quotient "rounded towards zero" or "truncated".

 

В SP-Forth делается округление к нулю. Разница проявляется только если аргументы разных знаков.


--
Ruvim


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev