Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для radiofan
3 / 2 / 1
Регистрация: 18.04.2018
Сообщений: 51

Портирование программы использующую std::complex и boost::multiprecision::number на Emscripten

20.06.2024, 09:09. Показов 8525. Ответов 0

Студворк — интернет-сервис помощи студентам
Здравствуйте, столкнулся с проблемой. Реализация Emscripten <complex> отличается от GNU <complex>. Emscripten <complex> содержит множество проверок в реализациях математических операций (https://github.com/emscripten-... #L624-L658). Эти функции вызывают свои std аналоги (https://github.com/emscripten-... #L595-L598). boost::multiprecision имеет свои реализации этих функций, но их реализация не добавляется в std.

Существует ли возможность добавить эти функции в std так, чтобы <cmath> их видел?

Программа (с попыткой добавить функции в std):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdlib.h>
#include <iostream>
 
#include <boost/multiprecision/cpp_dec_float.hpp>
 
using Number = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16U, std::int16_t>>;
 
namespace std{
    constexpr bool isnan(const Number& __x){
        return boost::multiprecision::isnan(__x);
    }
    constexpr bool isinf(const Number& __x){
        return boost::multiprecision::isinf(__x);
    }
}
 
#include <complex>
using ComplexType = std::complex<Number>;
 
 
int main(int, char*[]){
    Number a{ "1.2" };
    Number b{ "5.56" };
    Number c{ 1.25 };
    Number d{ -5 };
 
    ComplexType c_a{5};
    ComplexType c_b{5, -6};
    ComplexType c_c{-2.5, c};
 
    std::cout   << "c_a + c_c = " << (c_a + c_c) << std::endl
                 << "c_b - c_c = " << (c_b - c_c) << std::endl
                 << "c_b * c_c = " << (c_b * c_c) << std::endl
                 << "c_c / c_b = " << (c_c / c_b) << std::endl
                 << "abs(c_c) = " << std::abs(c_c) << std::endl
                 << "exp(c_b) = " << std::exp(c_b) << std::endl;
//;
    return 0;
}
Добавлено через 2 минуты
Ошибка компиляции:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
[1/2] Building CXX object CMakeFiles/multiprecision.dir/main.cpp.obj
FAILED: CMakeFiles/multiprecision.dir/main.cpp.obj 
/home/user/emsdk/upstream/emscripten/em++ -DBOARD_WEB -I/home/user/examples/multiprecision/build/Debug -I/home/user/examples/multiprecision/math-precision/include -I/home/user/examples/multiprecision/zerobasic/include -isystem /home/user/.conan2/p/boost0e71b73da677f/p/include -stdlib=libc++ -g -std=c++23 -v -sUSE_SDL=2 -sUSE_BOOST_HEADERS=1 -fsanitize=address -MD -MT CMakeFiles/multiprecision.dir/main.cpp.obj -MF CMakeFiles/multiprecision.dir/main.cpp.obj.d -o CMakeFiles/multiprecision.dir/main.cpp.obj -c /home/user/examples/multiprecision/main.cpp
 "/home/user/emsdk/upstream/bin/clang++" -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/home/user/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -isystem /home/user/emsdk/upstream/emscripten/cache/sysroot/include/SDL2 -DBOOST_ALL_NO_LIB -Xclang -iwithsysroot/include/compat -DBOARD_WEB -I/home/user/examples/multiprecision/build/Debug -I/home/user/examples/multiprecision/math-precision/include -I/home/user/examples/multiprecision/zerobasic/include -isystem /home/user/.conan2/p/boost0e71b73da677f/p/include -stdlib=libc++ -g3 -std=c++23 -v -fsanitize=address -MD -MT CMakeFiles/multiprecision.dir/main.cpp.obj -MF CMakeFiles/multiprecision.dir/main.cpp.obj.d -c /home/user/examples/multiprecision/main.cpp -o CMakeFiles/multiprecision.dir/main.cpp.obj
clang version 19.0.0git (https:/github.com/llvm/llvm-project bc9823cf60bf91cc8b45248c4205cd2c67b2a3d5)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/user/emsdk/upstream/bin
 (in-process)
 "/home/user/emsdk/upstream/bin/clang-19" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -fvisibility=hidden -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/home/user/examples/multiprecision/build/Debug -v -fcoverage-compilation-dir=/home/user/examples/multiprecision/build/Debug -resource-dir /home/user/emsdk/upstream/lib/clang/19 -dependency-file CMakeFiles/multiprecision.dir/main.cpp.obj.d -MT CMakeFiles/multiprecision.dir/main.cpp.obj -sys-header-deps -isystem /home/user/emsdk/upstream/emscripten/cache/sysroot/include/SDL2 -isystem /home/user/.conan2/p/boost0e71b73da677f/p/include -D EMSCRIPTEN -D BOOST_ALL_NO_LIB -D BOARD_WEB -I /home/user/examples/multiprecision/build/Debug -I /home/user/examples/multiprecision/math-precision/include -I /home/user/examples/multiprecision/zerobasic/include -isysroot /home/user/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /home/user/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /home/user/emsdk/upstream/lib/clang/19/include -internal-isystem /home/user/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /home/user/emsdk/upstream/emscripten/cache/sysroot/include -std=c++23 -fdeprecated-macro -ferror-limit 19 -fsanitize=address -fno-sanitize-memory-param-retval -fsanitize-address-use-after-scope -fsanitize-address-globals-dead-stripping -fno-assume-sane-operator-new -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o CMakeFiles/multiprecision.dir/main.cpp.obj -x c++ /home/user/examples/multiprecision/main.cpp
clang -cc1 version 19.0.0git based upon LLVM 19.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/user/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/home/user/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/user/examples/multiprecision/build/Debug
 /home/user/examples/multiprecision/math-precision/include
 /home/user/examples/multiprecision/zerobasic/include
 /home/user/emsdk/upstream/emscripten/cache/sysroot/include/SDL2
 /home/user/.conan2/p/boost0e71b73da677f/p/include
 /home/user/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /home/user/emsdk/upstream/lib/clang/19/include
 /home/user/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
In file included from /home/user/examples/multiprecision/main.cpp:2:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream:43:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios:223:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale:16:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h:21:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple:272:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare:145:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h:13:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h:14:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h:14:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h:20:
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:597:10: error: no matching function for call to 'isinf'
  597 |   return std::isinf(__lcpp_x);
      |          ^~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/complex:636:26: note: in instantiation of function template specialization 'std::__constexpr_isinf<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>, 0>' requested here
  636 |     bool __z_inf  = std::__constexpr_isinf(__a) || std::__constexpr_isinf(__b);
      |                          ^
/home/user/examples/multiprecision/main.cpp:35:32: note: in instantiation of function template specialization 'std::operator*<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>>' requested here
   35 |                                  << "c_b * c_c = " << (c_b * c_c) << std::endl
      |                                                            ^
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:71:87: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'float' for 1st argument
   71 | _LIBCPP_NODISCARD_EXT inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(float __x) _NOEXCEPT {
      |                                                                                       ^     ~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:76:1: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'double' for 1st argument
   76 | isinf(double __x) _NOEXCEPT {
      | ^     ~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:80:87: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'long double' for 1st argument
   80 | _LIBCPP_NODISCARD_EXT inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(long double __x) _NOEXCEPT {
      |                                                                                       ^     ~~~~~~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:61:80: note: candidate template ignored: requirement 'is_arithmetic<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short, void>, boost::multiprecision::et_on>>::value' was not satisfied [with _A1 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>]
   61 | _LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(_A1 __x) _NOEXCEPT {
      |                                                                                ^
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:66:80: note: candidate template ignored: requirement 'is_arithmetic<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short, void>, boost::multiprecision::et_on>>::value' was not satisfied [with _A1 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>]
   66 | _LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(_A1) _NOEXCEPT {
      |                                                                                ^
In file included from /home/user/examples/multiprecision/main.cpp:2:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream:43:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios:223:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale:16:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h:21:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple:272:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare:145:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h:13:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h:14:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h:14:
In file included from /home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h:20:
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:583:10: error: no matching function for call to 'isnan'
  583 |   return std::isnan(__lcpp_x);
      |          ^~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/complex:639:28: note: in instantiation of function template specialization 'std::__constexpr_isnan<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>, 0>' requested here
  639 |         !__z_inf && ((std::__constexpr_isnan(__a) && std::__constexpr_isnan(__b)) ||
      |                            ^
/home/user/examples/multiprecision/main.cpp:35:32: note: in instantiation of function template specialization 'std::operator*<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>>' requested here
   35 |                                  << "c_b * c_c = " << (c_b * c_c) << std::endl
      |                                                            ^
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:98:87: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'float' for 1st argument
   98 | _LIBCPP_NODISCARD_EXT inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(float __x) _NOEXCEPT {
      |                                                                                       ^     ~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:103:1: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'double' for 1st argument
  103 | isnan(double __x) _NOEXCEPT {
      | ^     ~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:107:87: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'long double' for 1st argument
  107 | _LIBCPP_NODISCARD_EXT inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(long double __x) _NOEXCEPT {
      |                                                                                       ^     ~~~~~~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:88:80: note: candidate template ignored: requirement 'is_floating_point<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short, void>, boost::multiprecision::et_on>>::value' was not satisfied [with _A1 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>]
   88 | _LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(_A1 __x) _NOEXCEPT {
      |                                                                                ^
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h:93:80: note: candidate template ignored: requirement 'is_integral<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short, void>, boost::multiprecision::et_on>>::value' was not satisfied [with _A1 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>]
   93 | _LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(_A1) _NOEXCEPT {
      |                                                                                ^
In file included from /home/user/examples/multiprecision/main.cpp:5:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/cpp_dec_float.hpp:33:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/number.hpp:12:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/generic_interconvert.hpp:12:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/default_ops.hpp:15:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/fpclassify.hpp:16:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/math/special_functions/fpclassify.hpp:18:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/math/special_functions/math_fwd.hpp:27:
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/complex:669:13: error: no matching function for call to '__constexpr_copysign'
  669 |       __a = std::__constexpr_copysign(std::__constexpr_isinf(__a) ? _Tp(1) : _Tp(0), __a);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/examples/multiprecision/main.cpp:35:32: note: in instantiation of function template specialization 'std::operator*<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>>' requested here
   35 |                                  << "c_b * c_c = " << (c_b * c_c) << std::endl
      |                                                            ^
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:614:54: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'float' for 1st argument
  614 | _LIBCPP_CONSTEXPR inline _LIBCPP_HIDE_FROM_ABI float __constexpr_copysign(float __x, float __y) _NOEXCEPT {
      |                                                      ^                    ~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:618:55: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'double' for 1st argument
  618 | _LIBCPP_CONSTEXPR inline _LIBCPP_HIDE_FROM_ABI double __constexpr_copysign(double __x, double __y) _NOEXCEPT {
      |                                                       ^                    ~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:623:1: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'long double' for 1st argument
  623 | __constexpr_copysign(long double __x, long double __y) _NOEXCEPT {
      | ^                    ~~~~~~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:631:1: note: candidate template ignored: requirement 'std::is_arithmetic<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short, void>, boost::multiprecision::et_on>>::value' was not satisfied [with _A1 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>, _A2 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>]
  631 | __constexpr_copysign(_A1 __x, _A2 __y) _NOEXCEPT {
      | ^
In file included from /home/user/examples/multiprecision/main.cpp:5:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/cpp_dec_float.hpp:33:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/number.hpp:12:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/generic_interconvert.hpp:12:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/default_ops.hpp:15:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/fpclassify.hpp:16:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/math/special_functions/fpclassify.hpp:18:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/math/special_functions/math_fwd.hpp:27:
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/complex:670:13: error: no matching function for call to '__constexpr_copysign'
  670 |       __b = std::__constexpr_copysign(std::__constexpr_isinf(__b) ? _Tp(1) : _Tp(0), __b);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:614:54: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'float' for 1st argument
  614 | _LIBCPP_CONSTEXPR inline _LIBCPP_HIDE_FROM_ABI float __constexpr_copysign(float __x, float __y) _NOEXCEPT {
      |                                                      ^                    ~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:618:55: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'double' for 1st argument
  618 | _LIBCPP_CONSTEXPR inline _LIBCPP_HIDE_FROM_ABI double __constexpr_copysign(double __x, double __y) _NOEXCEPT {
      |                                                       ^                    ~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:623:1: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'long double' for 1st argument
  623 | __constexpr_copysign(long double __x, long double __y) _NOEXCEPT {
      | ^                    ~~~~~~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:631:1: note: candidate template ignored: requirement 'std::is_arithmetic<boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short, void>, boost::multiprecision::et_on>>::value' was not satisfied [with _A1 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>, _A2 = boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>]
  631 | __constexpr_copysign(_A1 __x, _A2 __y) _NOEXCEPT {
      | ^
In file included from /home/user/examples/multiprecision/main.cpp:5:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/cpp_dec_float.hpp:33:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/number.hpp:12:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/generic_interconvert.hpp:12:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/default_ops.hpp:15:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/multiprecision/detail/fpclassify.hpp:16:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/math/special_functions/fpclassify.hpp:18:
In file included from /home/user/.conan2/p/boost0e71b73da677f/p/include/boost/math/special_functions/math_fwd.hpp:27:
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/complex:672:15: error: no matching function for call to '__constexpr_copysign'
  672 |         __c = std::__constexpr_copysign(_Tp(0), __c);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath:614:54: note: candidate function not viable: no known conversion from 'boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<16, short>>' to 'float' for 1st argument
  614 | _LIBCPP_CONSTEXPR inline _LIBCPP_HIDE_FROM_ABI float __constexpr_copysign(float __x, float __y) _NOEXCEPT {
      |                                                      ^                    ~~~~~~~~~
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2024, 09:09
Ответы с готовыми решениями:

boost\multiprecision\cpp_int.h pp, вывод большого числа
Подключил boost\multiprecision\cpp_int.hpp для того, чтобы сохранить в переменную огромное число и вывести в консоли. При int выводился 0,...

Как слинковать boost/multiprecision/cpp_int.hpp?
Всем привет. Сразу скажу, с boost`ом никогда не работал, а тут понадобился тип данных, который мог бы хранить 128-ый числа. Вот и...

Динамический массив std::complex
Я решаю задачу с использованием комплексных чисел (FFT итп) Я хотел воспользоваться шаблонами std::complex для них есть множество...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2024, 09:09
Помогаю со студенческими работами здесь

Int number = 2; Console.WriteLine(++number - number-- * ++number); Выводит -6; Как ?
Знающие, объясните, пожалуйста. Каким чудом тут получается -6 ? O_o int number = 2; Console.WriteLine(++number - number-- *...

Ошибка undefined reference to `operator<<(std::ostream&, Complex const
Добрый вечер. Помогите, пожалуйста. Выдает ошибку, не понимаю что нужно сделать. Для main.cpp #include&quot;Pair.h&quot; ...

Как заполнить массив комплексными числами, не используя стандартный класс std::complex<double>?
Короче, дана структура. Как заполнить массив комплексными числами, не используя стандартный класс std::complex&lt;double&gt;. struct...

Boost::any and std::function
#include &lt;iostream&gt; #include &lt;typeinfo&gt; #include &lt;functional&gt; #include &lt;boost/any.hpp&gt; struct Foo { void bar() { ...

Конфликты boost и std
Доброго времени суток. Пишу проект с использованием сторонних либ boost и mysql-connector-c. При сборке возникает гора ошибок, например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru