Можно ли заменить умножение чисел с плавающей точкой сложением , сдвигом и не знаю чем еще.. Если кто-то сталкивался, отзовитесь плиз
целые числа полбеды (хотя если у кого то есть исходники ДАВАЙТЕ!! =) ).. а вот с плавающей точкой пока что-то не догоню никак =(
Попробуй посмотреть библиотеки старых компилляторов типа tp7, когда они генерят код без сопроцессора (для паскаля ключ $N-).
мне нужно вообще без всякого умножения как целочисленного так и умножения чисел с п точкой.. эмуляция скорее всего его содержит
absolut77 > "целые числа полбеды .. а вот с плавающей точкой пока что-то не догоню никак" Не знаю для чего тебе это нужно, но с вещественными почти также как и с целыми: "перемножаешь" мантиссы как (длинные) целые числа, складываешь порядки и ксоришь знаковые биты . Конечно не все так просто, т.к. сначала нужно извлечь мантиссы со сдвигом, после "умножения" решить задачку округления до требуемого числа разрядов с учетом возможного увеличения порядка числа, ну и наконец сдвинуть итоговое значение на место. Можно cказать "Элементарно, Ватсон", вот только оно тебе надо ?
Как вариант можно перемножать, представляя числа как неправильные дроби. Тогда перемножаешь целые числа. Если надо просто перемножать, то можно поизврашатся, и представлять число как вектор из степеней простых чмсел, перемножение которого дает число ( степени могут быть отрицательны). Тогда перемножение и деление - просто прибавление показателей для простых чисел.
Смысл - ускорение умножения. А зачем это надо? - спросите Вы. А, например, для поиска простых чисел (последнее найденное имеет более 6000 десятичных разрядов). А за вновь найденное дают $20 000 US
Смысл - ускорение умножения. А зачем это надо? - спросите Вы. А, например, для поиска простых чисел (последнее найденное имеет более 6000 десятичных разрядов). А за вновь найденное дают $20 000 US
Смысл - ускорение умножения. А зачем это надо? - спросите Вы. А, например, для поиска простых чисел (последнее найденное имеет более 6000 десятичных разрядов). А за вновь найденное дают $20 000 US
Для справочки: в атлонах латентность регистровых операций IMUL - 3-4 такта, FMUL - 4 такта. ИМХО кроме отдельных тривиальных случаев никакими заменами быстрее не сделаешь. Поэтому нужно думать не об ускорении отдельного IMUL\FMUL, а об оптимизации алгоритма и распараллеливании вычислений