Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Вниз

Более точные вещественные числа чем Extended?   Найти похожие ветки 

 
Math   (2008-11-21 08:52) [0]

Использую Дельфи 7. В новых версиях Дельфи есть вещественные числа, там скажем 128 битные или может даже ещё большей точности?

Кстати, есть ли больше чем Int64?

Спасибо. :)


 
Path   (2008-11-21 08:59) [1]

Именно в Delphi - нет. А вам зачем ?


 
Math   (2008-11-21 09:09) [2]


> Path   (21.11.08 08:59) [1]
>
> Именно в Delphi - нет. А вам зачем ?


Для мат. расчётов.
Есть библиотечки, но они тормозные. Хотелось бы, чтобы на уровне компилятора была работа с большими вещественными числами.


 
Math   (2008-11-21 09:11) [3]

А в Delphi 2009 (или как там это теперь называте) тоже ничего такого нет?]
Просто очень жаль, тогда.


 
KSergey ©   (2008-11-21 09:15) [4]

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

К стати есть мнение, что вам просто стоит пересмотреть организацию вычислений согласно давно наработанным рекомендациям.


 
Anatoly Podgoretsky ©   (2008-11-21 09:20) [5]

> KSergey  (21.11.2008 9:15:04)  [4]

Наверно растояние до альфа центавры вычисляет с точностью до миллиметра.


 
Math   (2008-11-21 09:32) [6]


> KSergey ©   (21.11.08 09:15) [4]
>
> большую разрядность не поддерживает аппаратура IBM PC на
> данный момент.
> А значит увеличение разрядности - лишь программно, отсюда
> и существенные тормоза, компиляторы тут ни при чем.
>
> К стати есть мнение, что вам просто стоит пересмотреть организацию
> вычислений согласно давно наработанным рекомендациям.


Нет. Там очень большие с очень малыми складываются. В результате эта малость теряется, как будто её нет вообще, а это важно.

А новых Дельфи есть какие-нибудь оптимизации компиляции под SSE различных версий?


 
Path   (2008-11-21 09:54) [7]


> Для мат. расчётов.

Я как-то догадался, что для расчётов - а не попу подтирать...


> очень большие с очень малыми складываются. В результате эта малость теряется

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

Такое ощущение что вы никогда не работали ни с простыми дробями ни с комплексными числами. Может для начала подучить мат. ?


 
Anatoly Podgoretsky ©   (2008-11-21 09:59) [8]

> Path  (21.11.2008 9:54:07)  [7]

Кроме того Extended это не ТОЧНОЕ
Поэтому и здесь провал в знаниях.


 
Math   (2008-11-21 10:13) [9]


> Path   (21.11.08 09:54) [7]
>
> > Для мат. расчётов.
>
> Я как-то догадался, что для расчётов - а не попу подтирать.


А повежливей не пробовали?


 
oxffff ©   (2008-11-21 10:18) [10]


> KSergey ©   (21.11.08 09:15) [4]
> большую разрядность не поддерживает аппаратура IBM PC на
> данный момент.


Зачем неправду говоришь?


 
Math   (2008-11-21 10:19) [11]


> Anatoly Podgoretsky ©   (21.11.08 09:59) [8]
>
> > Path  (21.11.2008 9:54:07)  [7]
>
> Кроме того Extended это не ТОЧНОЕ


Никто и не говорил, что это ТОЧНОЕ. Так, что это у вас провал в знаниях. А также приступ немотивированной агрессии.


 
icWasya ©   (2008-11-21 10:23) [12]


> oxffff ©   (21.11.08 10:18) [10]
> Зачем неправду говоришь?

А у Вас есть более точная информация об этом ?


 
oxffff ©   (2008-11-21 10:32) [13]


> Math   (21.11.08 08:52)  


ASM в руки.

This chapter describes the 128-bit media and scientific
programming model. This model includes all instructions that
access the 128-bit XMM registers—called the 128-bit media
instructions. These instructions perform integer and floatingpoint
operations primarily on vector operands (a few of the
instructions take scalar operands). They can speed up certain
types of procedures—typically high-performance media and
scientific procedures—by substantial factors, depending on
data-element size and the regularity and locality of data
accesses to memory.

This chapter describes the 128-bit media and scientific
programming model. This model includes all instructions that
access the 128-bit XMM registers—called the 128-bit media
instructions. These instructions perform integer and floatingpoint
operations primarily on vector operands (a few of the
instructions take scalar operands). They can speed up certain
types of procedures—typically high-performance media and
scientific procedures—by substantial factors, depending on
data-element size and the regularity and locality of data
accesses to memory.
4.1 Overview
4.1.1 Origins The 128-bit media instruction set includes instructions
originally introduced as the streaming SIMD extensions (SSE),
and instructions added in subsequent exensions (SSE2, and
SSE3). For details on the instruction set origin of each
instruction, see “Instruction Subsets and CPUID Feature Sets”
in Volume 3.
4.1.2 Compatibility The 128-bit media instructions can be executed in any of the
architecture’s operating modes. Existing SSE, SSE2 and SSE3
binary programs run in legacy and compatibility modes without
modification. The support provided by the AMD64 architecture
for such binaries is identical to that provided by legacy x86
architectures.


 
oxffff ©   (2008-11-21 10:34) [14]


> icWasya ©   (21.11.08 10:23) [12]
>
> > oxffff ©   (21.11.08 10:18) [10]
> > Зачем неправду говоришь?
>
> А у Вас есть более точная информация об этом ?


У меня то есть.

RTFM
AMD64 Architecture Programmer’s Manual Volume 4: 128-Bit Media Instructions


 
oxffff ©   (2008-11-21 10:41) [15]


>  В новых версиях Дельфи есть вещественные числа, там скажем
> 128 битные или может даже ещё большей точности?


В Delphi 2009 есть поддержка со стороны компилятора встроенного ассемблера

INTEGRATED COMPILERS
Enhanced in 2009! High-performance 32-bit optimizing Delphi® native code compiler,
including High performance x86 Assembler - 32-bit inline assembler supporting the
Intel® x86 instruction set (including Intel Pentium® Pro, Pentium III, Pentium 4, Intel
MMX,™ SIMD, Streaming SIMD Extensions, SSE, SSE2, SSE3, SSE 4.1, SSE 4.2, AMD SSE4Aand AMD® 3DNow!®


 
Math   (2008-11-21 10:44) [16]


> oxffff ©   (21.11.08 10:41) [15]
> В Delphi 2009 есть поддержка со стороны компилятора встроенного
> ассемблера
>
> INTEGRATED COMPILERS
> Enhanced in 2009! High-performance 32-bit optimizing Delphi®
> native code compiler,
> including High performance x86 Assembler - 32-bit inline
> assembler supporting the
> Intel® x86 instruction set (including Intel Pentium® Pro,
>  Pentium III, Pentium 4, Intel
> MMX,™ SIMD, Streaming SIMD Extensions, SSE, SSE2, SSE3,
> SSE 4.1, SSE 4.2, AMD SSE4Aand AMD® 3DNow!®


Благодарю! Попытаюсь где-нибудь скачать.


 
oxffff ©   (2008-11-21 10:52) [17]


> Благодарю! Попытаюсь где-нибудь скачать.


Учти  это только встроенный ассемблер.


 
oxffff ©   (2008-11-21 10:52) [18]


> Благодарю! Попытаюсь где-нибудь скачать.


Учти  это только встроенный ассемблер.


 
MsGuns ©   (2008-11-21 11:47) [19]

Вряд ли можно рассчитывать на то, что какой-то язык высокого уровня имеет средства для решения ЛЮБОЙ практической задачи. Для этих целей используются либо машкодовые (асм) вставки, если язык позволяет, либо пишутся библиотеки.


 
Anatoly Podgoretsky ©   (2008-11-21 11:48) [20]

> Math  (21.11.2008 10:19:11)  [11]

Извиняюсь, был неправ, об этом речь не стояла.


 
тимохов   (2008-11-21 12:42) [21]

пользуй Decimal.
18 знаков до запятой, 10 после.

его нет в дельфи, но можешь импортировать из oleaut32.dll.
функции типа VarDecSub и пр. (см. MSDN).

не скажу, что они медленные, но медленне вещ. чисел, это точно.

но есть достоинство - это точные типы, можно сравнивать равенством без эпсилона.


 
KSergey ©   (2008-11-21 13:14) [22]

> Math   (21.11.08 09:32) [6]
> Нет. Там очень большие с очень малыми складываются.

Я так и думал.
Это опять же говорит просто о неправильно организованном алгоритме, не учитывающем то, что выполняться он будет на реальных ЭВМ, а не на теоретических.
Впрочем, поведение реальных ЭВМ в данном вопросе так же очень подробно описано в учебниках, так что это вполне можно причислить к  теории, которую необходимо подучить.

Здесь уже предложен вариант - учитывать эти числа раздельно. Или порядок операций поменять, чтобы разномасштабные числа не складывались.


 
KSergey ©   (2008-11-21 13:15) [23]

> тимохов   (21.11.08 12:42) [21]
> пользуй Decimal.
> 18 знаков до запятой, 10 после.

Не факт, что автору этого хватит, хватит сегодня - не хватит завтра.
Тут подход менять явно надо.


 
Anatoly Podgoretsky ©   (2008-11-21 13:17) [24]

> тимохов  (21.11.2008 12:42:21)  [21]

По крайней мере для БД поддержано и Number(38) - оно же Decimal, по скорости не мерял.


 
icWasya ©   (2008-11-21 13:36) [25]

128-XMM регистр - это не тоже самое, что 128-разрядное число


 
Anatoly Podgoretsky ©   (2008-11-21 13:44) [26]

> icWasya  (21.11.2008 13:36:25)  [25]

Врядли оно поддерживает вещественные.


 
icWasya ©   (2008-11-21 14:29) [27]

>oxffff ©   (21.11.08 10:34) [14]
>У меня то есть.
>RTFM
>AMD64 Architecture Programmer’s Manual Volume 4: 128-Bit Media Instructions
Ну и почитай что там написано -

Операции с двумя упакованными Double
Операции с четырьмя упакованными Single
..
И нигде нет 128-bit float

А лучше посмотри Volume 1
- Figure 4-14. 128-Bit Media Data Types
на странице 150


 
oxffff ©   (2008-11-21 14:35) [28]


> icWasya ©   (21.11.08 14:29) [27]


О радует, что такой внимательный.
Я уже прочитал.


 
Anatoly Podgoretsky ©   (2008-11-21 15:13) [29]

> icWasya  (21.11.2008 14:29:27)  [27]

Что такое упакованые Double и Single


 
Jeer ©   (2008-11-21 15:48) [30]

"Целые числа созданы богом, все остальное – творение человека" (С) Кронекер


 
Jeer ©   (2008-11-21 15:55) [31]

http://lib.mexmat.ru/books/649


 
Pavia ©   (2008-11-21 16:53) [32]


> Что такое упакованые Double и Single

Упакованные - это когда в один регистр запихнули несколько чисел одного типа.  В 128битном регистре может уместиться 4 числа single или 2 double


 
Юрий Зотов ©   (2008-11-21 17:19) [33]

> Math   (21.11.08 09:32) [6]

> очень большие с очень малыми складываются.
> В результате эта малость теряется, как будто её нет вообще

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

Если написать так:
Р := Б + м1 + м2 + м3....
(где Р - результат, Б - большое число, мХ - малые числа),
то получим Р = Б.

А если написать так:
Р := (м1 + м2 + м3.... ) + Б
то получим Р <> Б.

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



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.006 c
2-1228292170
Alex_C
2008-12-03 11:16
2009.01.18
Простая библиотека для записи/воспроизведения звуковых файлов


2-1228481314
snake-as
2008-12-05 15:48
2009.01.18
Не сработало FindNext


2-1228154721
Макс123
2008-12-01 21:05
2009.01.18
Прокрутка картинки


15-1227203696
Andy BitOff
2008-11-20 20:54
2009.01.18
Опять Виста...


15-1227583427
Slider007
2008-11-25 06:23
2009.01.18
С днем рождения ! 25 ноября 2008 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский