Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  15:43[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 2306—2297 | 2296—2287 | 2286—2277 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 397


№ 2296   24-01-2007 18:21 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2293« (PGR)
___________________________

Ответ на »сообщение 2291« (AVC)
___________________________

Значит вычисление с более точным типом (long double) дает менее точный результат ... Все-таки 10/0.1=100


Был неправ. Вычисление с long double дает правильный ответ -- 100.
Просто константу 0.1 нужно задавать в виде 0.1L (типа long double), а не просто 0.1 (тип double).


#include <stdio.h>
#include <math.h>

int main()
{
  long double lx = 0.1L;
  printf("%d\n", (int) floorl(10.0 / lx));
  return 0;
}



Так, что проблема в блэкбоксовской ENTIER.

И еще вопрос -- почему в BlackBox нет типа LONGREAL ?


№ 2295   24-01-2007 17:11 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2293« (PGR)
___________________________

Получается, что в BlackBox выполняется неявное преобразование "вещественных" типов.

Если процессор при пересылке из регистра в память по пути срубает с хвоста мантиссы пару байтов, то при чем тут ББ... В Интел надо письма писать.

А вообще-то смешно, конешно, работать с разрывной функцией вблизи точки разрыва -- никогда не знаешь, че вылезет 8))

А Вы тут, кстати, столкнулись с фактом, что в некотором конструктивно-интуиционистском смысле разрывные функции "не существуют".
Поэтому, кстати, раз программирование -- вещь конструктивная, и все должно быть интуитивно понятно, то Вирт и убрал ключевое слово FUNCTION, вместе с GOTO, для более глубокой научности. И теперь всюду одни PROCEDURE.
А мы тут, несмотря на все наше нешаблонное мышление, этот пункт-от ишшо не обсудили как следовает.

А пункт глубо-о-о-о-о-о-о-о-о-о-о-окий...

Ведь вот хоть насчет моделирования переходов между состояниями с помощью функций: одни говорят, мол, функций нет, другие, сообщают, состояния тоже, типа, так себе, убогая абстракция внутри головы...

И че тогда делать будем? 8)))))))))))))))))))))))))))))))))))))


№ 2294   24-01-2007 16:41 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2292« (Сергей Осколков)
___________________________

Речь шла о том, что нам нужны переменные, потому что у моделируемого объекта есть меняющиеся характеристики, играющие существенную роль в нашей задаче. По моему мысль вполне простая и достаточно оче-видная.

Это очевидная мылсь для тех, у кого шаблонное мышление.
А Вы попробуйте раскрепоститца...



№ 2293   24-01-2007 15:09 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2291« (AVC)
___________________________

Спасибо за объяснение.
Значит вычисление с более точным типом (long double) дает менее точный результат ... Все-таки 10/0.1=100

Всегда думал, что


x := expr;
y = f(x);


эквивалентно


y = f(expr);


Получается, что в BlackBox выполняется неявное преобразование "вещественных" типов.


№ 2292   24-01-2007 14:45 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2266« (Владимир Лось)
___________________________
Ну вот опять! То, что вы в данном случае определяете как "состояние" - просто абстракция, заменяющая недостаток знания по конкретным процессам, происходящим внутри некоторой системы, производящей именно такой набор и конфигурацию "пиков" на спектре...
Ну, значит "конкретные процессы, происходящие внутри некоторой системы, производящей именно такой набор и конфигурацию "пиков" на спектре" вы признаете. ("Процесс" стало быть, приемлемая абстракция, не требующая определения, в отличие от "состояние" :D ). Осталось признать, что у этих процессов, у этой системы есть свойства, характеристики. О них изначально и шла речь.

Любое познание избирательно. В случае с ракетой мы имеем цель попасть в определенную точку, может быть еще сделать несколько маневров, пролететь по определенной траектории - я не специалист. Отсюда нам интересны те характеристики, которые существенны для достижения наших целей. Но то, что мы имеем абстрактную модель полета ракеты, которую (физическую модель) потом моделируем уже в программе, никак не опреовергает того факта, что у ракеты есть скорость, положение и т.п. Которые меняются со временем в зависимости от многих обстоятельств. И для адекватного моделирования нам нужен язык с переменными, значения которых могут меняться - о чем и шла речь в сообщении info21, c которого началось это обсуждение. Речь шла о том, что нам нужны переменные, потому что у моделируемого объекта есть меняющиеся характеристики, играющие существенную роль в нашей задаче. По моему мысль вполне простая и достаточно оче-видная.


№ 2291   24-01-2007 13:50 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2288« (AVC)
___________________________

Отсюда следующее предположение.
Функция Math.Floor -- это обычная математическая функция с аргументом типа REAL (double).
ENTIER -- встроенная (predeclared) функция с аргументом любого типа с плавающей точкой (не хочу называть их "действительными" или "вещественными").
Скорее всего она напрямую обращается к сопроцессору, работающему в принципе с 10-байтовыми числами (long double).
И, видимо, именно для long double она возвращает 99.
Т.е. причина в том, что для в выражении ENTIER(10 / dt) его часть 10 / dt берется (наверное, для эффективности) как long double, т.е. прямо в том виде, в каком верну его сопроцессор.
То же самое могло случиться с Math.Floor, но Math.Floor -- "обычная" функция, ее аргумент предварительно приводится к 8-байтовому типу REAL и запихивается в стек.
Для ENTIER можно добиться аналогичного результата, если воспользоваться промежуточной переменной:

VAR x: REAL;
...
x := 10 / dt;
ENTIER(x) ---> 100

 AVC


№ 2290   24-01-2007 13:20 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2279« (Сергей Перовский)
___________________________
Заметим, очень эффективная абстракция :)
На данный момент.
Эпициклы тоже были достаточны и очень эффективны. Для своего времени.
Но я думаю мы, в отличие от ТЕХ "создателей моделей", прекрассно понимаем, что истины в последней инстанции нет. Понимаем, в том числе, и на примере тех "убеждённых эпицикшиков"... :о)


№ 2289   24-01-2007 13:14 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2271« (Сергей Губанов)
___________________________
Ваши проблемы - физический термин "состояние" к Миру (и к компьютеру) применим.
Ну тогда (хотя бы "на пальцах") раскройте мне мне этот "физический" термин (применительно к Миру, а не к одной из его моделей)...


№ 2288   24-01-2007 12:42 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2287« (PGR)
___________________________

Ответ на »сообщение 2284« (AVC)
___________________________

Допустим, что 10/dt не точно 100, а 99.99999999999...,
но тогда бы и Floor тоже вернул 99, а не 100


Информация для размышления.
У меня на Си (компилятор MinGW) printf в следующей программе

#include <stdio.h>
#include <math.h>

int main()
{
        long double lx = 0.1;
        printf("%d\n", (int) floorl(10.0 / lx));
        return 0;
}


как раз печатает 99.
 AVC


№ 2287   24-01-2007 12:32 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2284« (AVC)
___________________________

Допустим, что 10/dt не точно 100, а 99.99999999999...,
но тогда бы и Floor тоже вернул 99, а не 100


<<<... | 2306—2297 | 2296—2287 | 2286—2277 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 397


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования