[R-br] [OFF] Biblioteca C para matrizes.

Pedro Rafael pedro.rafael.marinho em gmail.com
Domingo Agosto 12 22:11:41 BRT 2012


Olá Benilton, como vai? O programa que estou testando é bem simples.
Na verdade a matriz é pequena, 5 por 5. Veja:

#include<iostream>
#include"armadillo"

using namespace arma;

int main()
{
mat    A = randu<mat>(5,5);
double x = det(A);
return 0;
}

Compilei como você me indicou e obtive o seguinte erro.

/usr/include/armadillo_bits/compiler_setup.hpp:117:6: warning:
#warning "*** Detected GCC 4.7.0 / 4.7.1, which has a regression
(bug)" [-Wcpp]
/usr/include/armadillo_bits/compiler_setup.hpp:118:6: warning:
#warning "*** See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53549
" [-Wcpp]
/usr/include/armadillo_bits/compiler_setup.hpp:119:6: warning:
#warning "*** A partial workaround for the bug has been activated,
" [-Wcpp]
/usr/include/armadillo_bits/compiler_setup.hpp:120:6: warning:
#warning "*** which reduces some functionality in fixed-size matrices
" [-Wcpp]
/usr/bin/ld: cannot find -lapack
collect2: error: ld returned 1 exit status


[   ],
Pedro Rafael Diniz Marinho.
Em 12 de agosto de 2012 22:06, beniltoncarvalho [via R-br]
<ml-node+s2285057n4655841h48 em n4.nabble.com> escreveu:
> Vc precisa linkar p lapack blas
>
> g++ -O2 -lapack -lblas programa.cpp
>
> Obvio, não testado. Adicionalmente, p matriz grande vc deveria usar log_det.
>
> Sent from a mobile device
>
> On Aug 13, 2012 12:44 AM, "Pedro Rafael" <[hidden email]> wrote:
>>
>> Pessoal estou tendo um problema com  a biblioteca armadillo no linux
>> fedora. Quando vou calcular o determinante de uma matriz muito pequena
>> funciona mas quando a minha matriz é grande ocorre o seguinte erro:
>>
>> error: det(): use of ATLAS or LAPACK needs to be enabled
>>
>> Já instalei as bibliotecas  cmake, blas-devel, lapack-devel,
>> atlas-devel, boost-devel mas o erro permanece. Alguém já teve isso ou
>> poderia dar uma dica de como corrigir esse problema?
>>
>> Obrigado,
>> Pedro Rafael Diniz Marinho.
>>
>>
>> Em 10 de agosto de 2012 23:58, Pedro Rafael
>> <[hidden email]> escreveu:
>>
>> > Não compreendi os exemplos. Vou dar uma lida maior e buscar mais coisas
>> > na net.
>> >
>> > Obrigado,
>> > Pedro Rafael Diniz Marinho.
>> >
>> >
>> > Em 10 de agosto de 2012 23:04, beniltoncarvalho [via R-br]
>> > <[hidden email]> escreveu:
>>
>> >> No básico do basico... Envolva sua função em um extern. Dai use o .Call
>> >>
>> >> Sent from a mobile device
>> >>
>> >> On Aug 11, 2012 2:42 AM, "Pedro Rafael" <[hidden email]> wrote:
>> >>>
>> >>> Interessante. Com o comando RcppArmadillo.package.skeleton é possível
>> >>> criar a estrutura de diretórios de um pacote R. Digamos que eu tenha
>> >>> um código C++ e queria arrumar ele para fazer um pacote para o R. Eu
>> >>> queria entender como se da essa comunicação. Só a filosofia mesmo. Eu
>> >>> entendo como criar um pacote do R utilizando o sistema de orientação à
>> >>> objeto S3 e sei que existe outras como S4 e R5. O que não consigo
>> >>> entender bem é como comunicar o código C/C++ com o R e como se dá a
>> >>> comunicação desses códigos (C/C++) com o R. Vi que posso chamar
>> >>> códigos do R para o C++ mas acho que o mais interessante é o
>> >>> contrário. Como chamar um código otimizado de C++ para R e criar  um
>> >>> pacote caso seja conveniente. Alguém poderia me dar um exemplo com uma
>> >>> função bem simplória só para entender por alto como funciona?
>> >>>
>> >>> Obrigado,
>> >>> Pedro Rafael Diniz Marinho.
>> >>>
>> >>>
>> >>> Em 10 de agosto de 2012 22:23, beniltoncarvalho [via R-br]
>> >>> <[hidden email]> escreveu:
>> >>>
>> >>> > Sim. Mas antes de qualquer coisa, veja o pacote RcppArmadillo e os
>> >>> > documentos de ajuda associados. b
>> >>> >
>> >>> > 2012/8/11 Pedro Rafael <[hidden email]>:
>> >>> >
>> >>> >> Uma última dúvida. É fácil integrar códigos C++ com o R? Utilizei
>> >>> >> as
>> >>> >> funções .C() e .Call() para chamar comandos em C para R. Nunca
>> >>> >> tentei
>> >>> >> utilizando C++. A construção de pacotes R feitos utilizando funções
>> >>> >> escritas em C++ também é tranquila?
>> >>> >>
>> >>> >>
>> >>> >> Obrigado,
>> >>> >> Pedro Rafael Diniz Marinho.
>> >>> >>
>> >>> >>
>> >>> >> Em 10 de agosto de 2012 22:04, Pedro Rafael
>> >>> >> <[hidden email]> escreveu:
>> >>> >>> Que legal Benilton, vou olhar bem esse pacote. Muito obrigado
>> >>> >>> pelas
>> >>> >>> informações. Vou brincar um pouco com esse pacote.  Procurei na
>> >>> >>> web
>> >>> >>> outros pacotes de álgebra linear para C++ mas me parece que esse é
>> >>> >>> o
>> >>> >>> pacote livre mais completo.
>> >>> >>> [   ],
>> >>> >>> Pedro Rafael Diniz Marinho.
>> >>> >>>
>> >>> >>>
>> >>> >>> Em 10 de agosto de 2012 21:31, beniltoncarvalho [via R-br]
>> >>> >>> <[hidden email]> escreveu:
>> >>> >>>> Se vc gostou do Armadillo, divirta-se com o pacote RcppArmadillo.
>> >>> >>>> b
>> >>> >>>>
>> >>> >>>> 2012/8/11 Pedro Rafael <[hidden email]>:
>> >>> >>>>
>> >>> >>>>> Obrigado Prof. Paulo pela informação, me ajudou bastante. Eu
>> >>> >>>>> gostei
>> >>> >>>>> muito Benilton da biblioteca de álgebra linear "armadillo".
>> >>> >>>>> Muito
>> >>> >>>>> mais
>> >>> >>>>> fácil que a GSL. Eu acho desorganizado os códigos C. O problema
>> >>> >>>>> que
>> >>> >>>>> quando escrevo algum código matemático em C++ sempre tem uma
>> >>> >>>>> estrutura
>> >>> >>>>> procedural, deve ser o vício que tenho do C. Acabo usando quase
>> >>> >>>>> nada
>> >>> >>>>> de Classes, Heranças, Polimorfismo, etc. Contudo, acho
>> >>> >>>>> interessante
>> >>> >>>>> a
>> >>> >>>>> facilidade de se trabalhar com vetores, matrizes e alocação
>> >>> >>>>> dinâmica
>> >>> >>>>> utilizando C++.
>> >>> >>>>> [   ],
>> >>> >>>>> Pedro Rafael Diniz Marinho.
>> >>> >>>>>
>> >>> >>>>>
>> >>> >>>>> Em 10 de agosto de 2012 20:28, beniltoncarvalho [via R-br]
>> >>> >>>>> <[hidden email]> escreveu:
>> >>> >>>>>> Pedro,
>> >>> >>>>>>
>> >>> >>>>>> Há muito deixei de procurar 'a linguagem mais <escolha o
>> >>> >>>>>> adjetivo>
>> >>> >>>>>> para <escolha a tarefa>'. Fico contente em usar qualquer
>> >>> >>>>>> linguagem
>> >>> >>>>>> que
>> >>> >>>>>> se mostre util e nao me force a reinventar a roda. Dito isso,
>> >>> >>>>>> nao
>> >>> >>>>>> vejo
>> >>> >>>>>> la essas diferencas entre C ou C++. E' obvio que algum
>> >>> >>>>>> especialista
>> >>> >>>>>> em
>> >>> >>>>>> alguma delas encontrara' inumeros casos que servem de
>> >>> >>>>>> contra-exemplo;
>> >>> >>>>>> mas enqto ele faz isso, eu sigo adiante resolvendo outros
>> >>> >>>>>> problemas.
>> >>> >>>>>>
>> >>> >>>>>> b
>> >>> >>>>>>
>> >>> >>>>>> 2012/8/10 Paulo Justiniano <[hidden email]>:
>> >>> >>>>>>
>> >>> >>>>>>> Pedro
>> >>> >>>>>>>
>> >>> >>>>>>> quando se diz em evitar inverter matrizes é porque muitas
>> >>> >>>>>>> contas
>> >>> >>>>>>> podem
>> >>> >>>>>>> ser
>> >>> >>>>>>> feitas sem a inversao explícita
>> >>> >>>>>>>
>> >>> >>>>>>> Por exemplo, a conta
>> >>> >>>>>>>
>> >>> >>>>>>> X'V^{-1}X
>> >>> >>>>>>>
>> >>> >>>>>>> pode ser feita evitando inversao a partir da cholesky de V
>> >>> >>>>>>> que pode ser aproveitada de calculos anteriores uma vez que já
>> >>> >>>>>>> deve
>> >>> >>>>>>> ter
>> >>> >>>>>>> sido
>> >>> >>>>>>> calculada antes para obter as estimativas
>> >>> >>>>>>>
>> >>> >>>>>>> No exemplo
>> >>> >>>>>>>
>> >>> >>>>>>> cV <- chol(V)
>> >>> >>>>>>> crossprod(backsolve(cV, X, transpose=T))
>> >>> >>>>>>>
>> >>> >>>>>>> isto é ***muito*** mais rapido (compare com system.time())
>> >>> >>>>>>> do que
>> >>> >>>>>>>
>> >>> >>>>>>> t(X) %*% solve(V) %*% X
>> >>> >>>>>>>
>> >>> >>>>>>>
>> >>> >>>>>>>
>> >>> >>>>>>>
>> >>> >>>>>>> On Thu, 9 Aug 2012, Pedro Rafael wrote:
>> >>> >>>>>>>
>> >>> >>>>>>>> Com respeito a evitar de trabalhar com inversas de matrizes é
>> >>> >>>>>>>> fato
>> >>> >>>>>>>> mas
>> >>> >>>>>>>> infelizmente tenho que trabalhar. Para trabalhar com modelos
>> >>> >>>>>>>> de
>> >>> >>>>>>>> regressão heterocedásticos vou precisar de cálculo de
>> >>> >>>>>>>> inversas de
>> >>> >>>>>>>> matrizes para o cálculo da estrutura de covariância de tal
>> >>> >>>>>>>> estimador.
>> >>> >>>>>>>> [   ],
>> >>> >>>>>>>> Pedro Rafael Diniz Marinho.
>> >>> >>>>>>>>
>> >>> >>>>>>>>
>> >>> >>>>>>>> Em 9 de agosto de 2012 17:02, Pedro Rafael
>> >>> >>>>>>>> <[hidden email]> escreveu:
>> >>> >>>>>>>>>
>> >>> >>>>>>>>> Verdade Benilton inverter matrizes requer um custo
>> >>> >>>>>>>>> computacional
>> >>> >>>>>>>>> bastante elevado. Atualmente programo em C e programei muito
>> >>> >>>>>>>>> pouco
>> >>> >>>>>>>>> em
>> >>> >>>>>>>>> C++ por curiosidade. Você acreditar que códigos em C++
>> >>> >>>>>>>>> perdem
>> >>> >>>>>>>>> muito
>> >>> >>>>>>>>> desempenho em comparação à C considerando que a programação
>> >>> >>>>>>>>> em
>> >>> >>>>>>>>> ambas
>> >>> >>>>>>>>> as linguagens sejam eficientes? Você tem boas experiências
>> >>> >>>>>>>>> na
>> >>> >>>>>>>>> utilização de C++ para programação estatística e para uso em
>> >>> >>>>>>>>> simulações?
>> >>> >>>>>>>>>
>> >>> >>>>>>>>> Gostei bastante dessa biblioteca que você me passou, muito
>> >>> >>>>>>>>> interessante. Não conhecia. A única biblioteca para álgebra
>> >>> >>>>>>>>> linear
>> >>> >>>>>>>>> livre que eu conhecia era a GSL.
>> >>> >>>>>>>>>
>> >>> >>>>>>>>> [   ],
>> >>> >>>>>>>>> Pedro Rafael Diniz Marinho.
>> >>> >>>>>>>>>
>> >>> >>>>>>>>>
>> >>> >>>>>>>>> Em 9 de agosto de 2012 15:58, beniltoncarvalho [via R-br]
>> >>> >>>>>>>>> <[hidden email]> escreveu:
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> Eu ainda sou do time "se vc esta' invertendo matriz, entao
>> >>> >>>>>>>>>> vc
>> >>> >>>>>>>>>> esta'
>> >>> >>>>>>>>>> fazendo algo errado"...
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> Em C++, vc vai querer olhar o que Armadillo tem a oferecer.
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> b
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> 2012/8/9 Pedro Rafael <[hidden email]>:
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>> Pessoal gostaria de saber qual uma boa biblioteca livre de
>> >>> >>>>>>>>>>> C
>> >>> >>>>>>>>>>> para
>> >>> >>>>>>>>>>> trabalhar com operações matriciais como inversas e
>> >>> >>>>>>>>>>> produtos de
>> >>> >>>>>>>>>>> matrizes. Qualquer dica será interessante.
>> >>> >>>>>>>>>>>
>> >>> >>>>>>>>>>> [ ] Pedro Rafael Diniz Marinho.
>> >>> >>>>>>>>>>> _______________________________________________
>> >>> >>>>>>>>>>> R-br mailing list
>> >>> >>>>>>>>>>> [hidden email]
>> >>> >>>>>>>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>>>>>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia)
>> >>> >>>>>>>>>>> e
>> >>> >>>>>>>>>>> forneça
>> >>> >>>>>>>>>>> código mínimo reproduzível.
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> _______________________________________________
>> >>> >>>>>>>>>> R-br mailing list
>> >>> >>>>>>>>>> [hidden email]
>> >>> >>>>>>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>>>>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia)
>> >>> >>>>>>>>>> e
>> >>> >>>>>>>>>> forneça
>> >>> >>>>>>>>>> código
>> >>> >>>>>>>>>> mínimo reproduzível.
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> ________________________________
>> >>> >>>>>>>>>> If you reply to this email, your message will be added to
>> >>> >>>>>>>>>> the
>> >>> >>>>>>>>>> discussion
>> >>> >>>>>>>>>> below:
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>>
>> >>> >>>>>>>>>> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655810.html
>> >>> >>>>>>>>>> To unsubscribe from R-br, click here.
>> >>> >>>>>>>>>> NAML
>> >>> >>>>>>>>
>> >>> >>>>>>>> _______________________________________________
>> >>> >>>>>>>> R-br mailing list
>> >>> >>>>>>>> [hidden email]
>> >>> >>>>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>> >>> >>>>>>>> forneça
>> >>> >>>>>>>> código mínimo reproduzível.
>> >>> >>>>>>>
>> >>> >>>>>>>
>> >>> >>>>>>> _______________________________________________
>> >>> >>>>>>> R-br mailing list
>> >>> >>>>>>> [hidden email]
>> >>> >>>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>> >>> >>>>>>> forneça
>> >>> >>>>>>> código
>> >>> >>>>>>> mínimo reproduzível.
>> >>> >>>>>> _______________________________________________
>> >>> >>>>>> R-br mailing list
>> >>> >>>>>> [hidden email]
>> >>> >>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>> >>> >>>>>> forneça
>> >>> >>>>>> código
>> >>> >>>>>> mínimo reproduzível.
>> >>> >>>>>>
>> >>> >>>>>>
>> >>> >>>>>> ________________________________
>> >>> >>>>>> If you reply to this email, your message will be added to the
>> >>> >>>>>> discussion
>> >>> >>>>>> below:
>> >>> >>>>>>
>> >>> >>>>>>
>> >>> >>>>>>
>> >>> >>>>>>
>> >>> >>>>>> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655826.html
>> >>> >>>>>> To unsubscribe from R-br, click here.
>> >>> >>>>>> NAML
>> >>> >>>>> _______________________________________________
>> >>> >>>>> R-br mailing list
>> >>> >>>>> [hidden email]
>> >>> >>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>> >>> >>>>> forneça
>> >>> >>>>> código mínimo reproduzível.
>> >>> >>>> _______________________________________________
>> >>> >>>> R-br mailing list
>> >>> >>>> [hidden email]
>> >>> >>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>> >>> >>>> forneça
>> >>> >>>> código
>> >>> >>>> mínimo reproduzível.
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> ________________________________
>> >>> >>>> If you reply to this email, your message will be added to the
>> >>> >>>> discussion
>> >>> >>>> below:
>> >>> >>>>
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655830.html
>> >>> >>>> To unsubscribe from R-br, click here.
>> >>> >>>> NAML
>> >>> >> _______________________________________________
>> >>> >> R-br mailing list
>> >>> >> [hidden email]
>> >>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>> >>> >> forneça
>> >>> >> código mínimo reproduzível.
>> >>> > _______________________________________________
>> >>> > R-br mailing list
>> >>> > [hidden email]
>> >>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> >>> > código
>> >>> > mínimo reproduzível.
>> >>> >
>> >>> >
>> >>> > ________________________________
>> >>> > If you reply to this email, your message will be added to the
>> >>> > discussion
>> >>> > below:
>> >>> >
>> >>> >
>> >>> > http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655833.html
>> >>> > To unsubscribe from R-br, click here.
>> >>> > NAML
>> >>> _______________________________________________
>> >>> R-br mailing list
>> >>> [hidden email]
>> >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> >>> código mínimo reproduzível.
>> >>
>> >>
>> >> _______________________________________________
>> >> R-br mailing list
>> >> [hidden email]
>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> >> código
>> >> mínimo reproduzível.
>> >>
>> >> ________________________________
>> >> If you reply to this email, your message will be added to the
>> >> discussion
>> >> below:
>> >>
>> >> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655836.html
>> >> To unsubscribe from R-br, click here.
>> >> NAML
>> _______________________________________________
>> R-br mailing list
>> [hidden email]
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>
>
> _______________________________________________
> R-br mailing list
> [hidden email]
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código
> mínimo reproduzível.
>
> ________________________________
> If you reply to this email, your message will be added to the discussion
> below:
> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655841.html
> To unsubscribe from R-br, click here.
> NAML


Mais detalhes sobre a lista de discussão R-br