2016-04-13 16 views
0

Takviye kullanarak std::complex<long double> dizisi için azaltma yapmak hakkında herhangi bir fikri var mı? tipleri,güçlendirmek mpi azaltmak için std :: karmaşık

#include <boost/mpi.hpp> 
#include<complex> 
namespace mpi = boost::mpi; 

int main() { 
mpi::environment env; 
mpi::communicator world; 
const int N = 4; 

std::complex<long double> a[N]={}; 


if (world.rank() == 0) { 
    std::complex<long double> sum[N] = {}; 
    mpi::reduce(world, a,sum, std::plus<>(), 0); 

    for(int i=0;i<N;i++) std::cout<<a[i]<<std::endl; 
} 

} 

ben mpic++ main.cpp -o main -lboost_mpi -lboost_serialization -lboost_system

cevap

0

isteğe SC++ L olanlar gibi yabancı türlerini kullanabilirsiniz kütüphanelerde yaygın bir tasarım kullanarak bunu derlenmiş:

Aşağıdaki kodu için hata ‘struct std::complex<long double>’ has no member named ‘serialize’ alıyorum sahip olmadığınız modern bir standarttan veya başka kaynaklardan türler, açıkça bir başlık içermedikçe, işlevselliği sağlamaz.

Bu, Fusion ve Serialization için bunu yapar, çeviri biriminizde istemeyebileceğiniz veya varolmayan bile olsa, ağır SC++ L başlıklarını çekmek istemez.

Bulmak ve dahil etmeniz gerekebilecek boost/serialization/complex.hpp gibi bir üstbilginin var olması büyük olasılıktır.