-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
There are no definitions of functions for working with std::complex and boost::multiprecision::number #22113
Comments
I noticed that Emscripten library implementation differs from GNU . emscripten/system/lib/libcxx/include/complex Lines 624 to 658 in 77bc7c1
Emscripten implementation has additional checks, which execute math functions. emscripten/system/lib/libcxx/include/cmath Lines 595 to 598 in 77bc7c1
boost::multiprecision has implementations of isnan(), isinf() and etc for boost::multiprecision::number, but these functions not in std namespace. How can I add boost implementations to the global scope of std? |
Hello. I have encountered a problem with porting my program. I use std::complex with boost::multiprecision::number. In a simplified version, my program looks like this:
This program is successfully compiled by Clang version 14.0.0 (used default GNU complex) and executed.
Clang link verbose command
[1/2] Building CXX object CMakeFiles/multiprecision.dir/main.cpp.o Ubuntu clang version 14.0.0-1ubuntu1.1 Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11 Candidate multilib: .;@m64 Selected multilib: .;@m64 (in-process) "/usr/lib/llvm-14/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=5 -debugger-tuning=gdb -v -fcoverage-compilation-dir=/home/user/examples/multiprecision/build/Debug -resource-dir /usr/lib/llvm-14/lib/clang/14.0.0 -dependency-file CMakeFiles/multiprecision.dir/main.cpp.o.d -MT CMakeFiles/multiprecision.dir/main.cpp.o -sys-header-deps -isystem /home/user/.conan2/p/boost0e71b73da677f/p/include -isystem /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/include -isystem /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/include/SDL2 -D BOARD_HOST -I /home/user/examples/multiprecision/build/Debug -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward -internal-isystem /usr/lib/llvm-14/lib/clang/14.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++2b -fdeprecated-macro -fdebug-compilation-dir=/home/user/examples/multiprecision/build/Debug -ferror-limit 19 -fsanitize=address -fsanitize-system-ignorelist=/usr/lib/llvm-14/lib/clang/14.0.0/share/asan_ignorelist.txt -fsanitize-address-use-after-scope -fno-assume-sane-operator-new -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/multiprecision.dir/main.cpp.o -x c++ /home/user/examples/multiprecision/main.cpp clang -cc1 version 14.0.0 based upon LLVM 14.0.0 default target x86_64-pc-linux-gnu ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /home/user/examples/multiprecision/build/Debug /home/user/.conan2/p/boost0e71b73da677f/p/include /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/include /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/include/SDL2 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward /usr/lib/llvm-14/lib/clang/14.0.0/include /usr/local/include /usr/include/x86_64-linux-gnu /usr/include End of search list. [2/2] Linking CXX executable multiprecision Ubuntu clang version 14.0.0-1ubuntu1.1 Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11 Candidate multilib: .;@m64 Selected multilib: .;@m64 "/usr/bin/ld" -pie -z relro --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o multiprecision /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/home/user/.conan2/p/b/sdl1ea2f57577c3b/p/lib -L/usr/bin/../lib/gcc/x86_64-linux-gnu/11 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/usr/lib/llvm-14/bin/../lib -L/lib -L/usr/lib --whole-archive /usr/lib/llvm-14/lib/clang/14.0.0/lib/linux/libclang_rt.asan_static-x86_64.a --no-whole-archive --whole-archive /usr/lib/llvm-14/lib/clang/14.0.0/lib/linux/libclang_rt.asan-x86_64.a --no-whole-archive --dynamic-list=/usr/lib/llvm-14/lib/clang/14.0.0/lib/linux/libclang_rt.asan-x86_64.a.syms --whole-archive /usr/lib/llvm-14/lib/clang/14.0.0/lib/linux/libclang_rt.asan_cxx-x86_64.a --no-whole-archive --dynamic-list=/usr/lib/llvm-14/lib/clang/14.0.0/lib/linux/libclang_rt.asan_cxx-x86_64.a.syms CMakeFiles/multiprecision.dir/main.cpp.o -rpath /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/lib: /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/lib/libSDL2maind.a /home/user/.conan2/p/b/sdl1ea2f57577c3b/p/lib/libSDL2d.a -ldl -lrt -lpthread -lGL -lstdc++ -lm --no-as-needed -lpthread -lrt -lm -ldl -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/x86_64-linux-gnu/11/crtendS.o /lib/x86_64-linux-gnu/crtn.o
But the same program is not compiled by emcc with emsdk std::complex. Some standard functions do not have a definition for working with boost::multiprecision::numbers. These functions used in math operator overloading.
Version of emscripten/emsdk:
Full link command and output with
-v
appended:The text was updated successfully, but these errors were encountered: