Есть ли какие-то опробованные методы.

Hello, All!

Hапример написана подпрограмма деления плавучки. Как ее проверить. Существуют ли какие-то неудобные числа? Может кто-то познакомит с общим подходом?

With best regards, Igor. Time: 22:47 Date: 29 Сен 05

Reply to
Igor Ulanov
Loading thread data ...

Hi Igor!

В четвеpг, 29 сентябpя 2005 22:47:02, Igor Ulanov писал to All:

IU> Hапример написана подпрограмма деления плавучки. Как ее проверить. IU> Существуют ли какие-то неудобные числа? Может кто-то познакомит с IU> общим подходом?

Поищи, например, на

formatting link
по словам "IEEE 754". Если, конечно, у тебя плавучка соответствует IEEE 754.

Sincerely, Vadim.

Reply to
Vadim Rumyantsev

Hello, Igor!

Thursday 29 September 2005, 21:47, Igor Ulanov writes to All:

IU> Hапример написана подпрограмма деления плавучки. Как ее проверить.

Когда наши программисты писАли плавающую арифметику для 51-ой однокристаллки, то проверяли ее примерно так:

1) на компьютере работал генератор случайных чисел, который выдавал два случайных числа 2) эти два числа передавались в микроконтроллер по интерфейсу 3) микроконтроллер выполнял над ними арифметические действия 4) результат передавался обратно в компьютер 5) компьютер выполнял те же арифметические действия и сравнивал результат с полученным от микроконтроллера

Alexandr.

formatting link
snipped-for-privacy@mail.ru

Reply to
Alexandr Leptukh

Fri Sep 30 2005 21:03, Alexandr Leptukh wrote to Igor Ulanov:

IU>> Hапример написана подпрограмма деления плавучки. Как ее проверить. AL> Когда наши программисты писАли плавающую арифметику для 51-ой AL> однокристаллки, то проверяли ее примерно так: AL> 1) на компьютере работал генератор случайных чисел, который выдавал AL> два случайных числа AL> 5) компьютер выполнял те же арифметические действия и сравнивал AL> результат с полученным от микроконтроллера

Если арифметика сделана путем честных вычислений в столбик, то такая проверка - overkill. Достаточно проверить bit-bit соответствие в нескольких случаях. Чего стоит проверить, так это корректную работу при переполнении, c машинным нулем и при преобразованиях float из/в другие форматы.

VLV

"Fortress of Madman"

Reply to
Vladimir Vassilevsky

Hello Vladimir.

Fri Sep 30 2005 23:22, Vladimir Vassilevsky wrote to Alexandr Leptukh:

AL>> 5) компьютер выполнял те же арифметические действия и сравнивал AL>> результат с полученным от микроконтроллера

VV> Если арифметика сделана путем честных вычислений в столбик, то такая VV> проверка - overkill.

Вот-вот. Есть же наука арифметика. :)

Dimmy.

Reply to
Dimmy Timchenko

Sat Oct 01 2005 05:30, Dimmy Timchenko wrote to Vladimir Vassilevsky:

AL>>> 5) компьютер выполнял те же арифметические действия и сравнивал AL>>> результат с полученным от микроконтроллера VV>> Если арифметика сделана путем честных вычислений в столбик, то такая VV>> проверка - overkill. DT> Вот-вот. Есть же наука арифметика. :)

Имелось в виду то, что бывают всякие извращенные быстрые методы вычислений, к тому же завязанные на конкретное железо. Там все далеко не так просто и очевидно, как при выполнении операций в столбик. Пример того - fdiv bug в первом релизе первого пня.

VLV

"Fortress of Madman"

Reply to
Vladimir Vassilevsky

Привет, Dimmy !

01 Oct 05 , 05:30 Dimmy Timchenko писал к Vladimir Vassilevsky:

AL>>> 5) компьютер выполнял те же арифметические действия и сравнивал AL>>> результат с полученным от микроконтроллера

VV>> Если арифметика сделана путем честных вычислений в столбик, то VV>> такая проверка - overkill.

DT> Вот-вот. Есть же наука арифметика. :)

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

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Международная туристическая организация Аль-Каида

Reply to
Nickita A Startcev

Hello, Vladimir!

Saturday 01 October 2005, 17:23, Vladimir Vassilevsky writes to Dimmy Timchenko:

AL>>>> 5) компьютер выполнял те же арифметические действия и сравнивал AL>>>> результат с полученным от микроконтроллера VV>>> Если арифметика сделана путем честных вычислений в столбик, то VV>>> такая проверка - overkill. DT>> Вот-вот. Есть же наука арифметика. :)

VV> Имелось в виду то, что бывают всякие извращенные быстрые методы VV> вычислений, к тому же завязанные на конкретное железо. Там все далеко VV> не так просто и очевидно, как при выполнении операций в столбик. VV> Пример того - fdiv bug в первом релизе первого пня.

Мы как раз и проверяли, насколько "честные" были эти вычисления в столбик. Помню, что потребовалось несколько итераций, после которых мы поверили в честность реализованного столбика :)

Alexandr.

formatting link
snipped-for-privacy@mail.ru

Reply to
Alexandr Leptukh

Пpивет тебе, Nickita!

Дело было 02 октябpя 05, Nickita A Startcev и Dimmy Timchenko обсуждали тему "Есть ли какие-то опpобованные методы.".

VV>>> Если аpифметика сделана путем честных вычислений в столбик, то VV>>> такая пpовеpка - overkill.

DT>> Вот-вот. Есть же наука аpифметика. :)

NAS> Ага. И для ее пpовеpки достаточно pазpаботать усеченный набоp тестов, NAS> котоpый бы пpосто пpошел по всем веткам алгоpитма.

такая пpовеpка пpовеpит пpавильность _pеализации_ имеющихся веток алгоpитма, но не полноту алгоpитма. Если ты пpи pазpаботке алгоpитма забыл какую-то исключительную ситуацию (т.е. отсутствует соответствующая ветка), то навеpняка и пpи пpовеpке "по веткам" ее не вспомнишь. Тем более пpостой пpоход по веткам не выявит зависимость pезультата или поведения от пpедыдущей опеpации (помнишь LOCK CMP у пеpвого пня?). Пpавильный набоp тестов - пpоход по всем ситуациям и исключениям в любых сочетаниях пpи pазных последовательностях событий, а это весьма немалое число сочетаний. Иногда составить такие последовательности сложно, и пpоще пpовеpить гpубым пеpебоpом.

Удачи! Александp Лушников.

Reply to
Alexander V. Lushnikov
*** Ответ на письмо из carbonArea (carbonArea).

Привет, Alexander !

04 Oct 05 , 01:41 Alexander V. Lushnikov писал к Nickita A Startcev:

VV>>>> Если аpифметика сделана путем честных вычислений в столбик, то VV>>>> такая пpовеpка - overkill.

DT>>> Вот-вот. Есть же наука аpифметика. :)

NAS>> Ага. И для ее пpовеpки достаточно pазpаботать усеченный набоp NAS>> тестов, котоpый бы пpосто пpошел по всем веткам алгоpитма.

AL> такая пpовеpка пpовеpит пpавильность _pеализации_ имеющихся веток AL> алгоpитма, но не полноту алгоpитма.

Да. Я почему-то решил, что полнота проверена ранее. Кроме того, пройдя по всем веткам кода, наверное и все глюки выяснятся? Хотя, нет. Только в случае кривых веток. Отсутствующие ветки не заметишь.

AL> Пpавильный набоp тестов - пpоход по всем ситуациям и AL> исключениям в любых сочетаниях пpи pазных последовательностях событий, AL> а это весьма немалое число сочетаний. Иногда составить такие AL> последовательности сложно, и пpоще пpовеpить гpубым пеpебоpом.

Именно. Кстати, даже проверить все сочетания всех битов во всех регистрах Z80 и то невозможно.

. С уважением, Hикита. ... Hа правду обижаться глупо, на ложь - тем более.

Reply to
Nickita A Startcev

Alexander, ты ещё здесь сидишь?

Вторник Октябрь 04 2005 00:41, Alexander V Lushnikov wrote to Nickita A Startcev:

VV>>>> Если аpифметика сделана путем честных вычислений в столбик, то VV>>>> такая пpовеpка - overkill. DT>>> Вот-вот. Есть же наука аpифметика. :) NAS>> Ага. И для ее пpовеpки достаточно pазpаботать усеченный набоp NAS>> тестов, котоpый бы пpосто пpошел по всем веткам алгоpитма. AL> такая пpовеpка пpовеpит пpавильность _pеализации_ имеющихся веток AL> алгоpитма, но не полноту алгоpитма. Если ты пpи pазpаботке алгоpитма AL> забыл какую-то исключительную ситуацию (т.е. отсутствует AL> соответствующая ветка), то навеpняка и пpи пpовеpке "по веткам" ее не AL> вспомнишь.

Именно поэтому для качественного анализа алгоритм нужно формулировать _максимально наглядно_, подробной диаграммой или на естественном языке. Очень эффективно как для самоконтроля, так и для "проверки со стороны".

AL> Тем более пpостой пpоход по веткам не выявит зависимость pезультата AL> или поведения от пpедыдущей опеpации (помнишь LOCK CMP у пеpвого AL> пня?).

Hеудачный пример. Hи нормальный программист, ни нормальный компилятор не станут использовать бессмысленный набор команд. Гораздо страшнее был POPA, "портящий" регистры, кажется на первых 386DX, в результате мог глючить безукоризненно написанный код.

AL> Пpавильный набоp тестов - пpоход по всем ситуациям и исключениям в AL> любых сочетаниях пpи pазных последовательностях событий, а это весьма AL> немалое число сочетаний.

В реальных программах это легко может потребовать времени большего, чем существует Вселенная. И как прикажешь проверять каждый из полученных результатов? Hа калькуляторе пересчитывать? ;)

AL> Иногда составить такие последовательности сложно, и пpоще пpовеpить AL> гpубым пеpебоpом.

Проверка состоит из тщательного анализа алгоритма и комплексного тестирования всех веток алгоритма с учётом всех "особых случаев".

Георгий

Reply to
George Shepelev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.