Форум программистов, компьютерный форум, киберфорум
Наши страницы

Erlang, OTP

Войти
Регистрация
Восстановить пароль
 
zonick
1 / 1 / 0
Регистрация: 12.09.2017
Сообщений: 2
#1

[very, very, very, .] large integer - Erlang

12.09.2017, 12:41. Просмотров 221. Ответов 3
Метки нет (Все метки)

Здравствуйте !
В своей работе мне требуются огромные числа 3 в степени N. N может достигать 10000000 и даже больше.
Пока все работало нормально, но вчера я получил неприятную неожиданность когда возводил в квадрат 3^(около 15 миллионов) -

** exception error: a system limit has been reached

in operator */2

Возведение в квадрат всего лишь умножение X*X.
Например:

Код
> T1 = fem:po3(N), T2 = T1*T1, ok.
Код
fem:po3
- это моя функция степеней 3. Работает нормально (вероятно тоже до определенного N, пока не натыкался).
Но сейчас не об этом...

Вопросы:
1. Что за 'limit' такой, который срабатывает при умножении large integers ?
2. Могу ли я этот 'limit' где-то увеличить (при старте Эрланга или еще где) ?

Мое железо - Supermicro server with two Intel(r) Xeon(r) CPU E5-2640 2.50GHz (24 virtual processors), 64 GB RAM, 10 SAS HDD (10000 rpm).
Running Oracle Solaris 11.3 and Erlang 20.0 starts as

> screen -S FEM erl -smp +S -2:-2 +P 33554432 +K true +A 32 +a 32 -name fem@Krusning.eyear.me -kernel net_ticktime 600 -kernel inet_dist_listen_min 10000 inet_dist_listen_max 10000 -mnesia dir '"/export/projeKCts/fem"' -mnesia dump_log_write_threshold 40000 -mnesia dc_dump_limit 40 -s ping diva


Спасибо !

Николай
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2017, 12:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос [very, very, very, .] large integer (Erlang):

[Warning] integer constant is too large for its type - C (СИ)
#include <stdio.h> int main(void) { unsigned long long t = 1267650600228229401496703205376; printf("%lld",t); ...

Integer is too large при использовании большого числа - C#
я вроде Numerics прописал а мне надо будет вводить число 50 миллиардов в кубе. Как сделать, студия пишет "Integer is too large" ? Дубль....

Ошибка "integer constant is too large for 'long' type" - C++
#include "Blockdll.h" #include <Windows.h> #include <iostream> using namespace std; #define m 0x100000000 #define...

Warning: integer constant is too large for "long" type - C (СИ)
Можете пояснить и написать, что нужно сделать в коде, чтобы компилятор не выдавал следующие предупреждения: warning: integer constant is...

Нельзя преобразовать тип function(a: integer;b: integer):integer к real - Pascal ABC
unit matr1; interface type matr2=array of real; matr3=array of real; procedure sum (A:matr3;var B:matr2; n:integer); ...

Нельзя преобразовать тип function(z: integer;w: integer;e: integer): real к real - PascalABC.NET
program pract18; uses crt; var x,a,i,k:integer; y:real; function prm1 (z,w,e:integer):real; begin for e:=1 to 20 do ...

3
cybersatyr
Заблокирован
12.09.2017, 13:11 #2
erlang не подходит для числодробилки, об этом авторы предупреждают сразу. Поэтому либо искать готовые решения на erlang, либо ffi + сишка. Распространенный сишный ништяк.
0
zonick
1 / 1 / 0
Регистрация: 12.09.2017
Сообщений: 2
12.09.2017, 13:47  [ТС] #3
эрланг прекрасно подходит для числодробилки для целых и +, -, div, rem. он НЕ подходит для сложной математики да еще с floata-ми, согласен. но перемножить два целых числа по МИЛЛИОНУ цифр - да фигня - секунды на моем железе... что я и делаю. перемножить два числа по 10 МИЛЛИОНОВ, ну минута, ну две ... да хоть 10. меня это устраивает. я не буду городить винегрет из сишника, GMP + MPFR и поливать это эрлангом ... порочно это. просто вопрос был - где ОН заткнулся, я готов хоть исходники поправить, только подскажите где )))

спасибо

PS. ЛИСП (Chez Scheme) умножает это (10 мильенов на 10 мильенов цифр) за 20 минут. Процессорные вентиляторы воют на три этажа слышно ))) Но это опять порочно спаривать Эрланг с Лиспом. Эрлаанг это может, я уверен, только где-то что-то надо увеличить )))

Добавлено через 3 минуты
хотя можно попробовать GMP, если что
спасибо
1
cybersatyr
Заблокирован
12.09.2017, 14:06 #4
Вот доки по лимитам.

Добавлено через 3 минуты
Цитата Сообщение от zonick Посмотреть сообщение
GMP + MPFR и поливать это эрлангом ... порочно это
Сектантство. Цеплять сишку не порочно никогда.
0
12.09.2017, 14:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2017, 14:06
Привет! Вот еще темы с ответами:

Вывести двоичный код вводимого числа(integer) и наоборот из двоичного в integer. - Pascal
Напишите плиззз программу, которая выводит двоичный код вводимого числа(integer) и наоборот из двоичного в integer. И при помощи процедуры...

Help function TCustomWinSocket.ReceiveBuf(var Buf; Count: Integer): Integer; - Delphi
Здраствуй всезнающий All! Хочу задать вопрос относительно function TCustomWinSocket.ReceiveBuf(var Buf; Count: Integer): Integer; ...

Как отобразить два Integer в один Integer используя HashMap? - Java SE
Имею ввиду, как ввести два ключа, по которым получается третий ключ такого же типа? Прошу объяснить на примере Integer.

Написать программу, содержащую функцию getInt(name:string; k:integer):integer - Turbo Pascal
Ребята, помогите пожалуйста с задачей! Написать программу, содержащую функцию getInt(name:string; k:integer):integer; возвращающую k-ый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.