Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

(CDABS(z) .le. 4.0_8)Лишний квадратный корень в каждой итерации, надо сравнивать с квадратом нормы
DLOG(DLOG(CDABS(z))) / DLOG(2.0_8)! Формула для сглаживания iter-ln(log2(|Z|))Хоть разница и несущественна, строго говоря, это log2(ln(|Z|)). Ну и CDABS(z) считается повторно (квадратный корень опять ни к чему, тк все равно берём логарифм).
REAL(z)**2 + AIMAG(z)**2
CDABS(z)
А кто заставляет переписывать? Вопрос был про новый код. А существующие библиотеки никто не запрещает использовать хоть из Python.
Хотя и существующее переписывают «почему-то», например ЦЕРН давно перешел с CERNLIB [Fortran] на ROOT [C++].
с помощью ужасов типа COMMON blocks
Бонус: отсутствие проверки типов и возможность назвать сколько угодно разных блоков одним именем, и потом удивляться результату.
когда программа связана пачкой слабодокументированных common блоков это плохо, потому что, поменяв что-то в одном месте, нельзя быть уверенным
for(uint8_t i=1;i<8;i=i<<1)
const uint_8t res=a | b | c | d;
RES=OR(A (OR(B, OR(C,D) ) ) )
Если отложить синтаксис, суть вопроса теряется, потому как язык и есть синтаксис. А семантика — его стандартная библиотека
Получился прекрасный забор из скобок
А что насчет адресной арифметики
ассемблерных вставок
наподобии volatile?
Я лично в этом убедился на том маленьком коде в статье.
Можно заменить другим.
100 лет назад, когда писал на фортране, связка ассемблер+фортран+линкер вполне работала.
#include <stdio.h>
int main(void) {
//Меняем переменные местами с помощью инструкции x86 процессора
int a = 0xAABBCCDD, b = 0xFFFFFFFF;
__asm__
(
"xchgl %[a], %[b]\n\t"
: [a]"+r"(a), [b]"+r"(b)
);
printf("%x\n%x\n", a, b);
//Меняем байты местами с помощью инструкции циклического сдвига x86 процессора
short int c = 0xAABB;
__asm__
(
"rorw $8, %[c]\n\t"
: [c]"+r"(c)
);
printf("%hx", c);
}
Речь же не о написании драйверов.
А можно узнать чем можно заменить адресную арифметику? Только без костылей, чтоб было так-же удобно.В Фортране 77 адресная арифметика эмулируется массивами и equivalence оператором, только программа при этом становится абсолютно нечитаемой.
только программа при этом становится абсолютно нечитаемой
Эмулировать или извращаться можно на любом языке
Речь шла о работе с устройствами, что из той-же оперы.
Примеры, конечно, уровня Hello World, но в вашем случае это можно сделать только путем вызова функции, а это лишние действия по её вызову
Да и когда требуется вызвать одну инструкцию, городить целую функцию это слишком.
То что С для работы с бинарными данными и для побитовых операций вне конкуренции, сомнений не вызывает.
У меня есть сомнения, что используя Win32 можно работать с периферией в режиме реального времени
Мне нужно было с аудиокарты данные получать, делать преобразование Фурье, совершать какие-то манипуляции с составляющими, делать обратное преобразование и выдавать обратно на аудиокарту — и все это с минимальной задержкой
и сделал все на Дельфи
Фракталы, Fortran и OpenMP