Цитата(GIGAWAT @ Apr 4 2007, 00:34)

2)Кусочек кода:
#include <math.h>
float x1;
float rezult;
main()
{
x1=pow(25,0.333);
rezult=x1*2;
}
Неработает собственно при любой попытке обращения к float.
Что 'неработает', обясните. Что вы понимаете под 'попыткa обращения к float'?
Вы не видети вызова функции pow? Так его и не должно быть - это называеться вычисления во время компиляции. Оба аргумента функции 'pow' известны компилятору, о он ее вычисляет во время компиляции и результат присваивает переменной 'x1'. C rezult аналогично.
Вот что у меня в main, два присваивания констант переменным:
Код
54: 8c eb ldi r24, 0xBC; 188
56: 9f ee ldi r25, 0xEF; 239
58: aa e3 ldi r26, 0x3A; 58
5a: b0 e4 ldi r27, 0x40; 64
5c: 80 93 60 00 sts 0x0060, r24
60: 90 93 61 00 sts 0x0061, r25
64: a0 93 62 00 sts 0x0062, r26
68: b0 93 63 00 sts 0x0063, r27
x1=pow(25,0.333);
rezult=x1*2;
6c: 8c eb ldi r24, 0xBC; 188
6e: 9f ee ldi r25, 0xEF; 239
70: aa eb ldi r26, 0xBA; 186
72: b0 e4 ldi r27, 0x40; 64
74: 80 93 64 00 sts 0x0064, r24
78: 90 93 65 00 sts 0x0065, r25
7c: a0 93 66 00 sts 0x0066, r26
80: b0 93 67 00 sts 0x0067, r27
Давайте другой пример.
Цитата
4)Я бы отказался, но я так и не нашел варианта как можно сделать числа с запятой (хотя бы с фиксированнной).
Когда я делал тоже самое на асме, я просто домножал целое число на 100 и принимал последние два числа, как бы за "числа после запятой". Так вот и вычислял домножением и делением на сто. Убого конечно, грамоздко (650 строк кода на асме

), но работало, формула четко просчитывалась.
Но неохота мне тоже самое мутить на С. Это же несерьезно

Так и нужно делать. только на С это будет пару строк, работать в 10 раз быстрее чем с float и занимать на 2 KB меньше кода.
Цитата
Плюс конечно неприятно, что при наличии пачки математических функций их можно просто выбросить на свалку истории, только из-за глюков оптимизации

В данном примере я вижу правильную и хорошую работу оптимизатора.
Анатолий.