Еще вопросы по фортрану
2. Объявить.
3. ATAN.
4. Сказано же: так устроен мир.
---
...Я работаю антинаучным аферистом...
1. По умолчанию.
Приводить по умолчанию - это как?
Как, например, привести real4 к real8?
2. Объявить.
Нафига, если есть библиотеки тригонометрии, где пи точно есть, но его оттуда почему-то нельзя получить
3. ATAN.Так конечно можно, но я хочу сделать real(8parameter::pi=...
А так сделать нельзя из-за 4
4. Сказано же: так устроен мир.А в стандарте 2003-го года такие вещи слечано не поправили?
Мб стоит копать в этом направлении?..
2. Это должен знать каждый. Наизусть.
3. Найди функцию с более точным значением.
Умножение на степень двойки, кстати, менять погрешность не будет.
4. Может быть.
Хотя сомнительно.
См. "Wisdom."
---
...Я работаю...
1. Повышение точности должно быть доступно по умолчанию.
Есть функции, которые точность ответа меняют в зависимости от точности параметра.
2. Это должен знать каждый. Наизусть.
Что знать? Значение числа Пи?
Или откуда его брать?
3. Найди функцию с более точным значением.
Умножение на степень двойки, кстати, менять погрешность не будет.
Проблема не в точности, а в возможности использования.
2. Число "пи."
3. Невозможно использовать функцию ATAN?
---
...Я работаю антинаучным аферистом...
1. Примеры?Да любая тригонометрия:
например
real(4) a
sin(a) будет типа real(4)
а
real(8) a
sin(a) будет типа real(8)
2. Число "пи."А нафига его помнить, если оно должно быть доступно из библиотек?!
Может быть и e надо наизусть помнить?
3. Невозможно использовать функцию ATAN?Следующий вызов не работает (не компилируется) в cvf 6.6
real,parameter::PI=acos(-1.)
И даже такой не работает
real::PI=acos(-1.)
Почему нельзя использовать exp, sqrt, sin и тп при задании параметра (константы) через выражение?
Точно так же в Си и других, наверное языках программирования. Это происходит потому, что компилятор не занимается аналитическими вычислениями и не знает, что sin(PI/6) = 1/2. Он вычисляет синус через сумму рядов на этапе исполнения, а не на этапе компиляции. Такой вот он глупый компилятор.
Gforth 0.6.2, Copyright (C) 1995-2003 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 s>d d>f fatan 4 s>d d>f f* fconstant pi
1 s>d d>f fatan 4 s>d d>f f* fconstant pi redefined pi ok
pi f.
pi f. 3.14159265358979 ok
guile> (define pi (* 4 (atan 1
guile> pi
3.14159265358979
Очевидно, я что-то неправильно делаю.
---
...Я работаю антинаучным аферистом...
Это происходит потому, что компилятор не занимается аналитическими вычислениями и не знает, что sin(PI/6) = 1/2. Он вычисляет синус через сумму рядов на этапе исполнения, а не на этапе компиляции.
Во-первых уже давно никто никаких рядов не суммирует:
double mysin(double x)
{
return(sin(x;
00401080 fld qword ptr [esp+4]
00401084 fsin
}
Во-вторых нет никаких _объективных_ причин запрещать вычислять на этапе компиляции не только примитивы процессора (add, mul, fsin ...) но и _произвольные_ _пользовательские_ функции. Что, разработчики компилятора боятся, что компилятор тогда можно будет "повесить"? Его и так можно повесить, напишу, скажем,
template<int N>
class C
{
public:
typedef C<N+1>::T T;
T t;
};
C<0> x;
И повиснем... Ну, конечно не повиснем, а в INTERNAL ERROR свалимся, но это в принципе одно и то же...
И чтобы убедиться в этом, достаточно попытаться продумать,
как такое можно сделать.
С учётом того, что в _самом_ языке тригонометрических действий нет.
Ну, жизнь у фортранов и сей такая тяжёлая.
---
...Я работаю антинаучным аферистом...
как такое можно сделать
Что означает "можно сделать"? Можно сделать в существующих C-ях/Fortran-е/... или можно сделать другой язык в котором это будет?
Попробуй представить, как должен быть устроен компилятор.
Именно сей и фортранов.
Как это сделать в некоторых других языках, я вполне представляю.
---
...Я работаю антинаучным аферистом...
Можно сделать в существующих C-ях/Fortran-е/... или можно сделать другой язык в котором это будет?
Можно сделать новый компилятор для старых С/Фортран. Конечно, если у тебя есть исходники... Таких "если" очень много...
Возьмёшься?
---
...Я работаю антинаучным аферистом...
w_fc_p_8.1.019
И Array Visualizer-a нет случайно?
Оставить комментарий
durka82
Как приводить типы в фортране?Как получить число пи?
Насчет числа пи - оно используется в куче библиотек, но почему-то его само из них получить нельзя
Кроме того, я уже про
Вопрос еще актуален, если вдруг кто знает