Леша на полке клопа нашел

Sep 02, 2024 01:32

Короче, был такой программист по имени Эдсгер Дейкстра, который вместе с коллегой реально написал за первую половину 1960 года первый в мире компилятор с Алгола-60, по слухам, не имевший ошибок. Но не на таких напал, как мы с vak@Dreamwidth.
В Алголе-60 были встроенные в язык элементарные функции, типа abs, sin, cos, exp, ln и пр., которые ( Read more... )

retrocomputing

Leave a comment

xxxxx September 2 2024, 18:32:21 UTC
вы таки будете смияца - сейчас ровно это происходит со скажем функцией sin в отличие от скажем функции sinf (речь о си-плюс-плюсах на amd64 архитектуре). Надо какую-то хитрую хрень написать с шаблончиками и окажется что у этих синусов совершенно разный тип (а не просто заменить double на float). Я подозреваю, что инструкция sin есть, а инструкции sinf наверное нету в процессоре - наверное в этом дело.

Reply

spamsink September 2 2024, 18:51:14 UTC
"ровно это" - это что именно?

Reply

xxxxx September 2 2024, 18:54:09 UTC
невозможность запихнуть sin в функцию в которую оно в общем-то должно полезать

Reply

spamsink September 2 2024, 19:06:37 UTC
Как это? Они ж все библиотечные, не должны отличаться от любых других. Вроде работает:

#include
#include

double apply(double(*f)(double), double val) {
return f(val);
}

int main() {
for (double x = 0; x < 3.14; x += 0.1) {
std::cout << apply(sin, x) << '\n';
}
}

Reply

xxxxx September 2 2024, 19:11:27 UTC
Должно-то оно должно, но есть нюанс, см. ниже ню-картинку-анс

Reply

xxxxx September 7 2024, 07:11:56 UTC

... )

Reply

spamsink September 7 2024, 07:30:19 UTC
И что кланговцы думают про эту ошибку?

Reply

xxxxx September 7 2024, 08:57:54 UTC
а чо сразу ошибка? разве кто-то обещал что от синуса можно брать адрес? вот синус вычисляет и ладно, а как он это делает вроде на милость компилятора. Опять же непонятно что должно быть адресом, если на деле вставляется отдельная инструкция. Ну или должна быть отдельно вставлятельная инструкция и отдельно функция если кто адрес захочет взять - наверное так да. А вот ещё и камрады из микрософта докладывают, что ихний мелко-мягкий компилятор тоже ниасилил это программу затранслировать как положено, а вместо этого выругался [много-много-строк-ругательств] while trying to match the argument list '(overloaded-function, const char [4])'

Reply

spamsink September 8 2024, 07:20:21 UTC
26 лет прошло, а как вчера родились.

Reply


Leave a comment

Up