-
Использую Дельфи 7. В новых версиях Дельфи есть вещественные числа, там скажем 128 битные или может даже ещё большей точности?
Кстати, есть ли больше чем Int64?
Спасибо. :)
-
Именно в Delphi - нет. А вам зачем ?
-
> Path (21.11.08 08:59) [1]
>
> Именно в Delphi - нет. А вам зачем ?
Для мат. расчётов.
Есть библиотечки, но они тормозные. Хотелось бы, чтобы на уровне компилятора была работа с большими вещественными числами.
-
А в Delphi 2009 (или как там это теперь называте) тоже ничего такого нет?]
Просто очень жаль, тогда.
-
большую разрядность не поддерживает аппаратура IBM PC на данный момент.
А значит увеличение разрядности - лишь программно, отсюда и существенные тормоза, компиляторы тут ни при чем.
К стати есть мнение, что вам просто стоит пересмотреть организацию вычислений согласно давно наработанным рекомендациям.
-
> KSergey (21.11.2008 9:15:04) [4]
Наверно растояние до альфа центавры вычисляет с точностью до миллиметра.
-
> KSergey © (21.11.08 09:15) [4]
>
> большую разрядность не поддерживает аппаратура IBM PC на
> данный момент.
> А значит увеличение разрядности - лишь программно, отсюда
> и существенные тормоза, компиляторы тут ни при чем.
>
> К стати есть мнение, что вам просто стоит пересмотреть организацию
> вычислений согласно давно наработанным рекомендациям.
Нет. Там очень большие с очень малыми складываются. В результате эта малость теряется, как будто её нет вообще, а это важно.
А новых Дельфи есть какие-нибудь оптимизации компиляции под SSE различных версий?
-
> Для мат. расчётов.
Я как-то догадался, что для расчётов - а не попу подтирать...
> очень большие с очень малыми складываются. В результате эта малость теряется
Используйте записи из двух чисел - одно для больших, другое для малых.
Такое ощущение что вы никогда не работали ни с простыми дробями ни с комплексными числами. Может для начала подучить мат. ?
-
> Path (21.11.2008 9:54:07) [7]
Кроме того Extended это не ТОЧНОЕ
Поэтому и здесь провал в знаниях.
-
> Path (21.11.08 09:54) [7]
>
> > Для мат. расчётов.
>
> Я как-то догадался, что для расчётов - а не попу подтирать.
А повежливей не пробовали?
-
> KSergey © (21.11.08 09:15) [4]
> большую разрядность не поддерживает аппаратура IBM PC на
> данный момент.
Зачем неправду говоришь?
-
> Anatoly Podgoretsky © (21.11.08 09:59) [8]
>
> > Path (21.11.2008 9:54:07) [7]
>
> Кроме того Extended это не ТОЧНОЕ
Никто и не говорил, что это ТОЧНОЕ. Так, что это у вас провал в знаниях. А также приступ немотивированной агрессии.
-
> oxffff © (21.11.08 10:18) [10]
> Зачем неправду говоришь?
А у Вас есть более точная информация об этом ?
-
> 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.
-
> 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
-
> В новых версиях Дельфи есть вещественные числа, там скажем
> 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!®
-
> 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!®
Благодарю! Попытаюсь где-нибудь скачать.
-
> Благодарю! Попытаюсь где-нибудь скачать.
Учти это только встроенный ассемблер.
-
> Благодарю! Попытаюсь где-нибудь скачать.
Учти это только встроенный ассемблер.
-
Вряд ли можно рассчитывать на то, что какой-то язык высокого уровня имеет средства для решения ЛЮБОЙ практической задачи. Для этих целей используются либо машкодовые (асм) вставки, если язык позволяет, либо пишутся библиотеки.
-
> Math (21.11.2008 10:19:11) [11]
Извиняюсь, был неправ, об этом речь не стояла.
-
пользуй Decimal.
18 знаков до запятой, 10 после.
его нет в дельфи, но можешь импортировать из oleaut32.dll.
функции типа VarDecSub и пр. (см. MSDN).
не скажу, что они медленные, но медленне вещ. чисел, это точно.
но есть достоинство - это точные типы, можно сравнивать равенством без эпсилона.
-
> Math (21.11.08 09:32) [6]
> Нет. Там очень большие с очень малыми складываются.
Я так и думал.
Это опять же говорит просто о неправильно организованном алгоритме, не учитывающем то, что выполняться он будет на реальных ЭВМ, а не на теоретических.
Впрочем, поведение реальных ЭВМ в данном вопросе так же очень подробно описано в учебниках, так что это вполне можно причислить к теории, которую необходимо подучить.
Здесь уже предложен вариант - учитывать эти числа раздельно. Или порядок операций поменять, чтобы разномасштабные числа не складывались.
-
> тимохов (21.11.08 12:42) [21]
> пользуй Decimal.
> 18 знаков до запятой, 10 после.
Не факт, что автору этого хватит, хватит сегодня - не хватит завтра.
Тут подход менять явно надо.
-
> тимохов (21.11.2008 12:42:21) [21]
По крайней мере для БД поддержано и Number(38) - оно же Decimal, по скорости не мерял.
-
128-XMM регистр - это не тоже самое, что 128-разрядное число
-
> icWasya (21.11.2008 13:36:25) [25]
Врядли оно поддерживает вещественные.
-
>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
-
> icWasya © (21.11.08 14:29) [27]
О радует, что такой внимательный.
Я уже прочитал.
-
> icWasya (21.11.2008 14:29:27) [27]
Что такое упакованые Double и Single
-
"Целые числа созданы богом, все остальное – творение человека" (С) Кронекер
-
-
> Что такое упакованые Double и Single
Упакованные - это когда в один регистр запихнули несколько чисел одного типа. В 128битном регистре может уместиться 4 числа single или 2 double
-
> Math (21.11.08 09:32) [6]
> очень большие с очень малыми складываются.
> В результате эта малость теряется, как будто её нет вообще
Это хорошо известная проблема. Не менее хорошо известно и то, что увеличение разрядности здесь помогает мало, или не помогает вообще. Зато помогает реорганизация вычислений. Вот простейший пример.
Если написать так:
Р := Б + м1 + м2 + м3....
(где Р - результат, Б - большое число, мХ - малые числа),
то получим Р = Б.
А если написать так:
Р := (м1 + м2 + м3.... ) + Б
то получим Р <> Б.
Подобных приемов существует немало, и в том числе - перевод задачи в безразмерный вид с таких масштабированием, чтобы этой проблемы избежать совсем.