Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : U.P.Galyuck                          2:5020/400     23 Mar 2005  20:07:40
 To : Ilya Anfimov
 Subject : Re: Need GUI development tool (Kylix or something)
 -------------------------------------------------------------------------------- 
 
 > >>  В GNU C комплексная арифметика есть.
 > >
 > >     Расскажи, пожалуйста, в какой версии С-компилятора комплексная
 > > арифметика присутствует, какие ключевые слова при этом используются, и
 
 по
 
 > > какому стандарту это реализовано. Без этих пояснений отвечать на
 
 остальные
 
 >
 >  man 5 complex, далее по ссылкам, включая C99.
 >  Или info libc /complex (откуда я впервые про это узнал).
 >  Тогда, когда я этим пользовался, был, кажется, gcc 2.7.2.1
 >  Впрочем, это я мог и запамятовать, и там уже был 2.9x, x < 5.
 
     Спасибо, я, действительно, обнаружил у себя (gcc 3.2.2) эту так сказать
 комплексную арифметику. Hет, не зря я не знал о ее существовании. Это
 типичный образец того, как формально решая поставленную задачу (введение
 нового типа complex) по существу получается издевательство (В.И.Ленин). Вся
 проблема реализации этого типа данных оказывается именно в том, что
 реализация этой арифметики оказывается для компилятора чем-то внешним,
 навешанным снаружи через макросы. В силу этого, компилятору очень трудно
 провести оптимизацию кода, а именно: операции с операндами разного типа
 данных. Сразу приходящее в голову решение привело к тому, что при
 перемножении комплексного и вещественного числа происходит сначала
 приведение более простого типа (float) к комплексному (копированием
 вещественной переменной в реальную часть структуры и копированием нулевой
 константы в мнимую часть), после чего происходит перемножение переменных по
 правилу комплексная на комплексную. Итак - вместо двух перемножений, которые
 требуются по алгоритму, получается 4 умножения и два сложения. Еще хуже
 ситуация, когда программируется выражение вида a*b*z, где a, b - типа float,
 а z - complex. Сначала вычисляется b*z, и т.к. они разных типов, происходит
 приведение вещественного b к комплексому типу с перемножением общего вида,
 после чего уже переменная a приводится к комплексному типу и снова
 перемножаются комплексные операнды. Итого - вместо 3-х умножений было
 потрачено 12 умножений и 4 сложения, не считая затраты на приведения
 (пересылки), которые в современных процессорах занимают такое же время, как
 и арифметические операции. Замечу, что усли записать выражение в виде z*b*a,
 т.е. вещественные операнды после комплексного, то оно делается за 5
 умножений и 4 сложения, что тоже далеко от идеального с 3-мя умножениями.
 Оптимизация (-О3) никак не изменила количества операций. Все это происходит
 потому, что компилятор ничего не знает о свойствах этого типа данных
 (коммутативности и ассоциативности) и не может так переставить операции,
 чтобы сначала делалась вещественная арифметика, а потом комплексная, да еще
 учитывалась перегруженность операций с разными сочетаниями типов.
 В Фортране, для которого комплексный тип является встроенным, это делается
 достаточно просто. В С, и как я подозреваю в С++ , это либо не делается
 вообще (главное, чтобы формально поддерживался этот тип данных), либо очень
 трудно реализовать. Поэтому научные программы еще долго будут
 разрабатываться на специально для этого приспособленном языке - Фортран, а
 все логические умозаключения, основанные на собственном понимании проблемы,
 и  "принципе Оккама", оказываются опровергнутыми элементарными тестами (все,
 что я описал, я выяснил, вычитывая ассемблерный листинг результатов
 компиляции).
 
     Галюк Юрий
 --- ifmail v.2.15dev5.3
  * Origin: St.Petersburg University (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   17 Mar 2005 12:42:08 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   17 Mar 2005 15:17:55 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   17 Mar 2005 17:34:40 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   17 Mar 2005 18:06:09 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   17 Mar 2005 18:50:49 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   17 Mar 2005 20:20:34 
 Re: Need GUI development tool (Kylix or something)   Aleksey Barabanov   17 Mar 2005 20:59:34 
 Re: Need GUI development tool (Kylix or something)   Victor Wagner   18 Mar 2005 09:22:40 
 Re: Need GUI development tool (Kylix or something)   Kirill Kuvaldin   18 Mar 2005 11:52:02 
 Re: Need GUI development tool (Kylix or something)   Victor Wagner   18 Mar 2005 14:06:08 
 Need GUI development tool (Kylix or something)   Sergey Klimov   20 Mar 2005 21:03:10 
 Re: Need GUI development tool (Kylix or something)   Eugeny Chernetcki   21 Mar 2005 13:27:23 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   18 Mar 2005 13:52:25 
 Re: Need GUI development tool (Kylix or something)   Victor Wagner   18 Mar 2005 14:08:11 
 Need GUI development tool (Kylix or something)   Sergey Klimov   20 Mar 2005 21:14:46 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   22 Mar 2005 18:57:46 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   18 Mar 2005 13:52:25 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   22 Mar 2005 19:29:51 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   22 Mar 2005 21:12:50 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   22 Mar 2005 23:05:53 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   23 Mar 2005 20:07:40 
 Re: Need GUI development tool (Kylix or something)   Eugene B. Berdnikov   23 Mar 2005 22:08:22 
 Re: Need GUI development tool (Kylix or something)   Victor Wagner   24 Mar 2005 12:35:55 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   24 Mar 2005 17:10:09 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   24 Mar 2005 18:46:03 
 Re: Need GUI development tool (Kylix or something)   Alex Kislica   24 Mar 2005 17:16:55 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   23 Mar 2005 22:23:32 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   24 Mar 2005 17:10:09 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   24 Mar 2005 17:50:30 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   24 Mar 2005 19:43:21 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   25 Mar 2005 01:21:01 
 Re: Need GUI development tool (Kylix or something)   U.P.Galyuck   25 Mar 2005 17:56:18 
 Re: Need GUI development tool (Kylix or something)   Ilya Anfimov   25 Mar 2005 23:05:22 
 Re: Need GUI development tool (Kylix or something)   Dmitry Ponyatov   23 Mar 2005 19:59:42 
 Need GUI development tool (Kylix or something)   Vitaly Mayatskih   18 Mar 2005 00:03:26 
Архивное /ru.linux/6578716ac6ae.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional