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

Benilton Carvalho beniltoncarvalho em gmail.com
Domingo Agosto 12 22:29:23 BRT 2012


auto correct fail

-llapack -lblas

Sent from a mobile device
On Aug 13, 2012 2:11 AM, "Pedro Rafael" <pedro.rafael.marinho em gmail.com>
wrote:

> 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
>> >> >>> >>>>>>> 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
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120813/083ab243/attachment.html>


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