pow(2,20000)
От: rs2fun  
Дата: 05.06.07 04:45
Оценка:
Zdrastvuyte.
Kak vicheslit pow(2,200000);
pow vozvrashet double, chislo ne pomestitsya na double, kak sdelat tak chtobi pow rabotal s bolshimi chislami.
Spasibo zaraniye.
Re: pow(2,20000)
От: ilnar Россия  
Дата: 05.06.07 06:06
Оценка:
Здравствуйте, rs2fun, Вы писали:

R>Zdrastvuyte.

R>Kak vicheslit pow(2,200000);
R>pow vozvrashet double, chislo ne pomestitsya na double, kak sdelat tak chtobi pow rabotal s bolshimi chislami.
R>Spasibo zaraniye.

используй библиотеку gmp
Re[2]: pow(2,20000)
От: Аноним  
Дата: 05.06.07 06:29
Оценка:
Здравствуйте, ilnar, Вы писали:

I>Здравствуйте, rs2fun, Вы писали:


R>>Zdrastvuyte.

R>>Kak vicheslit pow(2,200000);
R>>pow vozvrashet double, chislo ne pomestitsya na double, kak sdelat tak chtobi pow rabotal s bolshimi chislami.
R>>Spasibo zaraniye.

I>используй библиотеку gmp

Po podrobne mojna. Kak ispolzovat gmp library???
Re[3]: pow(2,20000)
От: ilnar Россия  
Дата: 05.06.07 07:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, ilnar, Вы писали:


I>>Здравствуйте, rs2fun, Вы писали:


R>>>Zdrastvuyte.

R>>>Kak vicheslit pow(2,200000);
R>>>pow vozvrashet double, chislo ne pomestitsya na double, kak sdelat tak chtobi pow rabotal s bolshimi chislami.
R>>>Spasibo zaraniye.

I>>используй библиотеку gmp

А>Po podrobne mojna. Kak ispolzovat gmp library???

see http://gmplib.org/
Re: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 07:53
Оценка:
Здравствуйте, rs2fun, Вы писали:

R>Zdrastvuyte.

R>Kak vicheslit pow(2,200000);

1 << 200000 ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[2]: pow(2,20000)
От: alzt  
Дата: 05.06.07 08:06
Оценка:
Здравствуйте, frogkiller, Вы писали:

R>>Zdrastvuyte.

R>>Kak vicheslit pow(2,200000);

F>1 << 200000 ?


Это юмор такой?
Re: pow(2,20000)
От: Аноним  
Дата: 05.06.07 08:14
Оценка: :)
Здравствуйте, rs2fun, Вы писали:

R>chislo ne pomestitsya na double,


template <class XZ>
void pow00(XZ &r)
{ r=1; 
  for(int j=2000;j--;)
    r*=2;
}
Re[3]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 08:19
Оценка:
Здравствуйте, alzt, Вы писали:

A>Это юмор такой?


Почему сразу юмор?

char result[2500]; // = 20000/8
memset(result,0,2500);
result[0] = 256;


Относительно легко обобщается для произвольного показателя степени двойки.
Кто-нибудь говорил о форме выражения этого числа?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re: pow(2,20000)
От: alzt  
Дата: 05.06.07 08:20
Оценка:
Здравствуйте, rs2fun, Вы писали:

pow с большими числами работать не будет.
Можно написать свою реализацию double (с нужной точностью), скорость выполнения естественно будет ниже, чем у double.
И для неё уже реализовывать всякие pow.
Плюс от задачи зависит — иногда можно обойтись без излишнего умножения, вроде:
int x=10;
x*=100000;
x/=10000;

Но это только в частном случае.
Re[4]: pow(2,20000)
От: Andrew S Россия http://alchemy-lab.com
Дата: 05.06.07 08:31
Оценка:
F>Почему сразу юмор?

F>
F>char result[2500]; // = 20000/8
F>memset(result,0,2500);
F>result[0] = 256;
F>


Не, точно юмор.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[5]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 08:48
Оценка:
Здравствуйте, Andrew S, Вы писали:

F>>
F>>unsigned char result[2500]; // = 20000/8
F>>memset(result,0,2500);
AS>F>result[0] = 256;
F>>


AS>Не, точно юмор.


Так лучше?
Всё равно в упор не вижу, где тут смешно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[6]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 08:53
Оценка:
Здравствуйте, Andrew S, Вы писали:

Или ты хотел так:
unsignedchar result[2500]; // = 20000/8
memset(result,0,2500);
result[2499] = 1;

?

Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[4]: pow(2,20000)
От: alzt  
Дата: 05.06.07 09:34
Оценка:
Здравствуйте, frogkiller, Вы писали:

F>
F>char result[2500]; // = 20000/8
F>memset(result,0,2500);
F>result[0] = 256;
F>


F>Относительно легко обобщается для произвольного показателя степени двойки.

F>Кто-нибудь говорил о форме выражения этого числа?

2,5 килобайта на число? Я думаю это немного не то, чего хотел rs2fun.
Если он использует double, то ему не нужна абсолютная точность.
Re[5]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 10:23
Оценка:
Здравствуйте, alzt, Вы писали:

A>2,5 килобайта на число? Я думаю это немного не то, чего хотел rs2fun.

A>Если он использует double, то ему не нужна абсолютная точность.

Ну так он как раз и спрашивал:
R>pow vozvrashet double, chislo ne pomestitsya na double, kak sdelat tak chtobi pow rabotal s bolshimi chislami.

Вообще, понятно, что необходим класс со специальной логикой. Но в данном конкретном случае (степень двойки) можно сделать и так. Самый первый вариант, если помнишь, был "1 << 20000". Чем плохо?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[6]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 10:25
Оценка:
Здравствуйте, frogkiller, Вы писали:

F>Вообще, понятно, что необходим класс со специальной логикой. Но в данном конкретном случае (степень двойки) можно сделать и так. Самый первый вариант, если помнишь, был "1 << 20000". Чем плохо?


Пусть даже в виде строки
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[6]: pow(2,20000)
От: alzt  
Дата: 05.06.07 11:05
Оценка:
Здравствуйте, frogkiller, Вы писали:

F>Вообще, понятно, что необходим класс со специальной логикой. Но в данном конкретном случае (степень двойки) можно сделать и так. Самый первый вариант, если помнишь, был "1 << 20000". Чем плохо?


Попробуйте запустить сл. код:
int main()
{
   long test = 1 << 20000;
   return 0;
}

И посмотрите чему будет равна переменная test. Уверяю — это будет не 2 в 20000 степени.
Re[7]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 11:22
Оценка:
Здравствуйте, alzt, Вы писали:

F>>Вообще, понятно, что необходим класс со специальной логикой. Но в данном конкретном случае (степень двойки) можно сделать и так. Самый первый вариант, если помнишь, был "1 << 20000". Чем плохо?

A>Попробуйте запустить сл. код:
A>
A>int main()
A>{
A>   long test = 1 << 20000;
A>   return 0;
A>}
A>

A>И посмотрите чему будет равна переменная test. Уверяю — это будет не 2 в 20000 степени.

) Наконец понял, что вызвало смех.

Разумеется, в long не влезет результат, так же как он не влез в double. Как было видно, в общем случае, потребуется 2.5 килобайтный кусок памяти, именно это я хотел показать предыдущими постами.

А вот такой вариант вполне может прокатить:

struct my_num
{
    int num_;
    my_num(int n_) : num_(n_) {}
    std::string operator << (const my_num& num2) const { return "1 << 20000"; }
}


Всё дело в том, как представлять числа
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[8]: pow(2,20000)
От: alzt  
Дата: 05.06.07 11:47
Оценка:
Здравствуйте, frogkiller, Вы писали:

F>) Наконец понял, что вызвало смех.


F>А вот такой вариант вполне может прокатить:


F>
F>struct my_num
F>{
F>    int num_;
F>    my_num(int n_) : num_(n_) {}
F>    std::string operator << (const my_num& num2) const { return "1 << 20000"; }
F>}
F>


F>Всё дело в том, как представлять числа


Так же сразу и надо было говорить .
В общем — pow всё равно работать не будет. Нужен свой.
Только в данном случае 2,5 килобайта резервировать не надо:
class my_num2
{
   int m_powNum;//степень, в которой находится двойка
public:
   my_num2():m_powNum(0){}
   my_num2 pow(my_num2 num)
   {
      my_num2 res;
      res.m_powNum = m_powNum + num.m_powNum;
      return res;
   }
};

Т.е. если возводить только степени двойки — то столько памяти хранить не надо. А если возводить другие числа, то смещение не поможет.
Re[9]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 11:57
Оценка:
Здравствуйте, alzt, Вы писали:

A>Т.е. если возводить только степени двойки — то столько памяти хранить не надо. А если возводить другие числа, то смещение не поможет.


Именно так
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[9]: pow(2,20000)
От: frogkiller Россия  
Дата: 05.06.07 12:01
Оценка:
Здравствуйте, alzt, Вы писали:

A>В общем — pow всё равно работать не будет. Нужен свой.

A>Только в данном случае 2,5 килобайта резервировать не надо:

[skiped]

И вторая проблема, как представить такое большое число (в общем виде) в удобной для восприятия форме.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.