S.Atan писал(а):
Эта процедура в WinAos возвращает 0 при любых значениях начиная с ревизии больше 2081
Это воспринимать как тонкий тролинг?
Сегодня уже 6685 ревизия. Вы хотите сказать, что 4600 ревизий sqrt ноль возвращает для всех значений и это никто не исправит?
Вот, тестовый код:
Код: "OBERON"
MODULE Untitled;
IMPORT
Math, Commands;
PROCEDURE Test*(c: Commands.Context);
VAR
i: LONGINT;
BEGIN
FOR i := 0 TO 9 DO
c.out.Float(Math.sqrt(i), 20);
c.out.Ln
END
END Test;
END Untitled.
Вот, результат на последней ревизии:
Цитата:
0.00000000000E+000
1.00000000000E+000
1.41421353817E+000
1.73205077648E+000
2.00000000000E+000
2.23606801033E+000
2.44948983192E+000
2.64575123787E+000
2.82842707634E+000
3.00000000000E+000
Можете сами запустить, убедиться...
S.Atan писал(а):
Вот такой код работает
Код: "OBERON"
PROCEDURE -sqrt(x: Real): Real;
CODE {SYSTEM.i386, SYSTEM.FPU}
DB 0D9H, 004H, 024H (* FLD [ESP] *)
DB 0D9H, 0FAH (* FSQRT ST(0) *)
DB 058H (* POP EAX *)
END sqrt;
Так, он как-раз в I386.Math.Mod сейчас и присутствует.
S.Atan писал(а):
Но это на OP2 компиляторе.
Ну, так ранние ревизии WinAos как-раз его и использовали!
S.Atan писал(а):
Вообщем в MicroVCL_3 модуль Graphics.mod содержит алгоритмы Ву и Брезенхема для отрисовки прямых, окружностей и антиалиасинга, так вот при компиляции в OPCL оно работает, рисует окружности и т.д как положено, а при компиляции Fox-ом рисует вместо окружностей крестики с диаметром окружности, ну то есть схлопывает синусоиду!!!
А у меня ваш MicroVCL не собирается ни OP2 ни Fox-ом... Можете конкретный кусок кода показать, что-бы не делать голословных заявлений?