SIEMENS, DF&PD

Предыдущее посещение: Сб июл 02, 2016 0:37 Текущее время: Сб июл 02, 2016 0:37

Часовой пояс: UTC + 3 часа




 [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: SCL в степень - не понимаю
СообщениеДобавлено: Чт ноя 30, 2006 12:08 
Не в сети
Писатель со стажем

Зарегистрирован: Вт мар 01, 2005 12:10
Сообщения: 592
Прочитал на родном сайте сименса FAQ на ошибки при возведению в степень в SCL. Там вроде все понятно написано - если в основании степени стоит ноль, то результат вычисления NaN (не число).
С этим вопросов нет, но дальше идет таблица с примерами исключений при вычислении в степень:
(-10)**0 possible
(-10)**0.0 not possible
(-10)**2 possible
(-10)**2.0 not possible
(-10)**3 not possible
0**0.0 possible
0**0 not possible
0**2 possible
0.0**2 possible
0**3 possible

0.0**3 not possible
по моему тут нескольо строчек которые противоречат, тому что они сами написали.
Понимаю что вопрос несколько академический, но все таки хотелось бы разобраться, может у кого нибудь есть варианты.
Ссылка на оригинал статьи:

http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&query=SCL&nav0=tree&lang=en&siteid=cseus&aktprim=0&extranet=standard&objid=10805400&DataKey=10805400&treeLang=en[/url]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 30, 2006 16:05 
Не в сети
Писатель со стажем

Зарегистрирован: Вт янв 11, 2005 8:43
Сообщения: 527
Откуда: Россия, г.Самара, ООО НВФ "СМС"
Хм, странно это все. Обычно Х в степени У я вычисляю как
EXP(Y*LN(X)) и без проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 01, 2006 15:48 
Не в сети
Писатель со стажем

Зарегистрирован: Вт мар 01, 2005 12:10
Сообщения: 592
в том то и дело, что SCL (когда компилирует в STL) вычисляет степень по этой формуле,
EXP(Y*LN(X))
но если X=0, то LN(0) не существует (минус бесконечность, вроде), а в статье написано:
0**2 possible
0.0**2 possible
0**3 possible
т.е. данное вычисление возможно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 01, 2006 15:54 
Не в сети
Писатель со стажем

Зарегистрирован: Вт янв 11, 2005 8:43
Сообщения: 527
Откуда: Россия, г.Самара, ООО НВФ "СМС"
Видимо он еще расшифровывает степень = если она равна 2 то вместо этого он использует SQR. C 3-й степенью правда не знаю что тогда. И еще интересный момент -
0**3 possible
0.0**3 not possible
- могу предположить, что для целых чисел 2-й и 3-й степени он просто ставить *i нужное количество раз:)))

На самом деле это все мои догадки, но более логичного объяснения я придумать не могу:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 01, 2006 16:37 
Не в сети
Писатель со стажем

Зарегистрирован: Вт мар 01, 2005 12:10
Сообщения: 592
Забавно, не поленился посмотреть

все возможные варианты возведения нуля в степень, переводятся как:

L 0.000000e+000
T #out

а те которые невозможны в таблице - просто не компилируются :)
понять сие невозможно :) ну и ладно...

построение компиляторов - темный лес :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group