{"action":"created","issue":{"url":"https://api.github.com/repos/dealii/dealii/issues/2551","repository_url":"https://api.github.com/repos/dealii/dealii","labels_url":"https://api.github.com/repos/dealii/dealii/issues/2551/labels{/name}","comments_url":"https://api.github.com/repos/dealii/dealii/issues/2551/comments","events_url":"https://api.github.com/repos/dealii/dealii/issues/2551/events","html_url":"https://github.com/dealii/dealii/issues/2551","id":150689960,"number":2551,"title":"Problems with Intel compiler and complex long double","user":{"login":"kronbichler","id":8276200,"avatar_url":"https://avatars.githubusercontent.com/u/8276200?v=3","gravatar_id":"","url":"https://api.github.com/users/kronbichler","html_url":"https://github.com/kronbichler","followers_url":"https://api.github.com/users/kronbichler/followers","following_url":"https://api.github.com/users/kronbichler/following{/other_user}","gists_url":"https://api.github.com/users/kronbichler/gists{/gist_id}","starred_url":"https://api.github.com/users/kronbichler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kronbichler/subscriptions","organizations_url":"https://api.github.com/users/kronbichler/orgs","repos_url":"https://api.github.com/users/kronbichler/repos","events_url":"https://api.github.com/users/kronbichler/events{/privacy}","received_events_url":"https://api.github.com/users/kronbichler/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-04-24T18:46:13Z","updated_at":"2016-04-25T08:33:40Z","closed_at":null,"body":"When trying to compile the library with the Intel compiler, version 16, I get the (many) of the following erros:\r\n```\r\n/home/kronbichler/sw/deal.II/include/deal.II/lac/constraint_matrix.templates.h(1604): error: no operator \"*\" matches these operands\r\n            operand types are: const std::complex<long double> * double\r\n            col_val += (local_matrix(loc_row, global_cols.local_row(j,p)) *\r\n                                                                          ^\r\n[...]\r\n            instantiation of \"void dealii::ConstraintMatrix::distribute_local_to_global(const dealii::FullMatrix<MatrixType::value_type> &, const dealii::Vector<VectorType::value_type> &,\r\n            const std::vector<unsigned int, std::allocator<unsigned int>> &, MatrixType &, VectorType &, bool, dealii::internal::bool2type<false>) const\r\n            [with MatrixType=dealii::SparseMatrix<std::complex<long double>>, VectorType=dealii::Vector<std::complex<long double>>]\" at line 1305 of\r\n                      \"/home/kronbichler/sw/deal.II/source/lac/constraint_matrix.cc\"\r\n```\r\nThe problem is that the Intel compiler does not seem to understand multiplication between `std::complex<long double>` and `double`. Has anyone else seen this? My solution would be to get rid of `std::complex<long double>` instantiations, both in special files and as a complex scalar. I am not really sure in which context they might be of use anyway. The trend seems to go away from long double (if there ever was) because the 80 bit long double is getting more of a niche as it is the only format left on the old x87 format.\r\n\r\nIn case my system is weird, here are my compiler details:\r\n```\r\nicpc version 16.0.1 (gcc version 4.8.5 compatibility)\r\n```\r\n(I tried to attach gcc 5 to the Intel compiler but I get many C++11-related errors, it looks like Intel is not ready for that yet.)"},"comment":{"url":"https://api.github.com/repos/dealii/dealii/issues/comments/214206624","html_url":"https://github.com/dealii/dealii/issues/2551#issuecomment-214206624","issue_url":"https://api.github.com/repos/dealii/dealii/issues/2551","id":214206624,"user":{"login":"davydden","id":8023934,"avatar_url":"https://avatars.githubusercontent.com/u/8023934?v=3","gravatar_id":"","url":"https://api.github.com/users/davydden","html_url":"https://github.com/davydden","followers_url":"https://api.github.com/users/davydden/followers","following_url":"https://api.github.com/users/davydden/following{/other_user}","gists_url":"https://api.github.com/users/davydden/gists{/gist_id}","starred_url":"https://api.github.com/users/davydden/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davydden/subscriptions","organizations_url":"https://api.github.com/users/davydden/orgs","repos_url":"https://api.github.com/users/davydden/repos","events_url":"https://api.github.com/users/davydden/events{/privacy}","received_events_url":"https://api.github.com/users/davydden/received_events","type":"User","site_admin":false},"created_at":"2016-04-25T08:33:40Z","updated_at":"2016-04-25T08:33:40Z","body":"I think (1) is probably the best way. \r\n\r\nIt is certainly an option to remove real long double from the instantiations as well."}}