Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: lapack++  (Прочитано 2013 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн barmale-y

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
lapack++
« : 22 Декабря 2008, 00:59:48 »
Вычитал в инете, что существуют замечательные библиотеки под C++ и C clapack и lapack++. К сожалению apt-cache их не нашел и пришлось искать в инете гуглем. Нашел lapack++ (http://netlib.org/) но попытки сборки приводят к следующим ошибкам, из-за слишком новых библиотек c++ (4.2 и 4.3)
error: iostream.h: No such file or directory
ошибка: ISO C++ запрещает декларации ‘inc’ без типа
Я понимаю, что требуется какой-то допотопный компилятор спп, использующий iostream.h и считающий что функция без типа возвращает int.

Вопросы

1. можно ли доставить что-то допотопное и им собрать библиотеки? что доставить? как неповредить компилятор по умолчанию?

или

2. может где-то есть пакеты под Ubuntu lapack++?

Оффлайн Belyaev Nikolay

  • Активист
  • *
  • Сообщений: 734
    • Просмотр профиля
    • моя работа- дробилки, грохота...
Re: lapack++
« Ответ #1 : 22 Декабря 2008, 01:06:50 »
"Сначала они вас игнорируют, потом смеются над вами, потом борются с вами, а потом вы побеждаете"
Махатма Ганди

Оффлайн barmale-y

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: lapack++
« Ответ #2 : 22 Декабря 2008, 01:15:17 »

Оффлайн Belyaev Nikolay

  • Активист
  • *
  • Сообщений: 734
    • Просмотр профиля
    • моя работа- дробилки, грохота...
Re: lapack++
« Ответ #3 : 22 Декабря 2008, 01:17:52 »
"Сначала они вас игнорируют, потом смеются над вами, потом борются с вами, а потом вы побеждаете"
Махатма Ганди

Оффлайн barmale-y

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: lapack++
« Ответ #4 : 22 Декабря 2008, 01:40:37 »
http://www.google.com/linux?q=lapack+deb

просмотрел десяток страниц, и попробовал другие шаблоны поиска :  все под фортран, не под C++  :-[

Оффлайн Kwah

  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: lapack++
« Ответ #5 : 22 Декабря 2008, 02:01:26 »
ЕМНИП, lapaсk++  очень старый и не поддерживаемый проект (это отчасти подтверждается и ошибками, ибо iostream.h считается устаревшим довольно давно, аж года с 98-го).

В своё время я пользовался исключительно clapack (собранная из иходников автоматически сконвертированных из фортрана в С). А вообще, самый простой способ, думаю, будет воспользоваться boost::numeric::ublas, которая поддерживает фортрановский лэйаут массивов в памяти, и пользоваться стандартной фортрановской либой, благо в Linux это довольно просто (компилятор для всего один).

Оффлайн barmale-y

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: lapack++
« Ответ #6 : 22 Декабря 2008, 12:46:33 »
В своё время я пользовался исключительно clapack (собранная из иходников автоматически сконвертированных из фортрана в С). А вообще, самый простой способ, думаю, будет воспользоваться boost::numeric::ublas, которая поддерживает фортрановский лэйаут массивов в памяти, и пользоваться стандартной фортрановской либой, благо в Linux это довольно просто (компилятор для всего один).
#define ub  boost::numeric::ublas
ub::matrix<double> A(n,n);
ub::vector<double> x(n), b(n);
// заполнил A, b

Подскажите, пожалуйста, как вычислить число обусловленности матрицы A (библиот. методом) и решить систему Ax=b, каким-нибуть общим методом из сlapack или вызовом из C++ фортрановского метода или любой другой библиотеки.

Оффлайн Kwah

  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: lapack++
« Ответ #7 : 22 Декабря 2008, 13:11:13 »
В boost обширная документация, uBLAS не является исключением, плюс всё доступно в исходниках. Смотри, например, http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Linear_Algebra_With_UBLAS (туда я попал со страницы http://www.boost.org/doc/libs/1_37_0/libs/numeric/ublas/doc/index.htm ) на предмет binding-ов. Кстати, там же есть несколько строк про состояние Lapack++...

Кстати, старайся пользоваться средствами языка, за имением alias-ов:
namespace ub=boost::numeric::ublas;вот это
#define ub  boost::numeric::ublasесть грязный хак.

Оффлайн barmale-y

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: lapack++
« Ответ #8 : 22 Декабря 2008, 22:31:36 »
Спасибо!

А на русском есть документация?

Оффлайн Kwah

  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: lapack++
« Ответ #9 : 23 Декабря 2008, 02:04:13 »
Спасибо!

А на русском есть документация?
Пожалуйста.

Сомневаюсь.

Оффлайн Danchik

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: lapack++
« Ответ #10 : 23 Декабря 2008, 10:01:26 »
кстати - а почему это грязный хак ?

Оффлайн Kwah

  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: lapack++
« Ответ #11 : 23 Декабря 2008, 11:04:39 »
кстати - а почему это грязный хак ?
Потому что использование препроцессора где попало есть грязный хак по определению. Директивы препроцессора глобальны, могут служить источником труднодиагностируемых ошибок.

Пример. Вася Пупкин использует твою библиотеку:
#include <iostream>
// #include "mylib.h"
// пусть вот это
#define ub  boost::numeric::ublas
// определено в mylib.h

int main(){
  float ub; // upper bound
  std::cout << ub << std::endl;
  return 0;
}
И на таком безошибочно написанном коде получает какой-то кошмар в логе компиляции.

 

Страница сгенерирована за 0.033 секунд. Запросов: 26.