summaryrefslogtreecommitdiff
path: root/Libraries/LibM
AgeCommit message (Collapse)Author
2020-08-12LibM: Mark compilation-unit-only functions as staticBen Wiederhake
This enables a nice warning in case a function becomes dead code.
2020-08-12Meta: Replace remaining LibM/math.h includes with math.hLinus Groh
2020-08-04Revert "LibM: Always include <math.h> instead of <LibM/math.h>"Andreas Kling
This reverts commit dc12cbca41b8b667ae7ced1066647d47186d1557. Sadly this broke the build due to some confusion about <new>. Reverting until this can be solved fully.
2020-08-04LibM: Always include <math.h> instead of <LibM/math.h>Andreas Kling
This makes Lagom pick up the host math.h, which is what we want.
2020-07-26LibM: Fix Lagom buildMatthew Olsson
isnormal really messes up the build. Just remove it for now; it can be addressed in a seperate commit. Additionally, conditionally add `noexcept` to the math functions if we are in a C++ context.
2020-07-26LibM: Evaluate math macros, add M_DEG2RAD and M_RAD2DEGMatthew Olsson
2020-07-12LibM: Add 'isnormal'AnotherTest
2020-06-22LibM: Add some more math functionsstelar7
2020-06-04LibM: Add exp2() and exp2f()Linus Groh
2020-06-04LibM: Add INFINITY macroLinus Groh
2020-06-04LibM: Add NAN macroLinus Groh
2020-05-24LibM: Add M_SQRT2 and M_SQRT1_2Sergey Bugaev
2020-05-20Revert "Build: Include headers from LibC, LibM, and LibPthread with -isystem"Andreas Kling
This reverts commit c1eb744ff0a82cf6c8e3470ac10e2f417c7d9de2.
2020-05-20Build: Include headers from LibC, LibM, and LibPthread with -isystemAndrew Kaster
Make sure that userspace is always referencing "system" headers in a way that would build on target :). This means removing the explicit include_directories of Libraries/LibC in favor of having it export its headers as SYSTEM. Also remove a redundant include_directories of Libraries in the 'serenity build' part of the build script. It's already set at the top. This causes issues for the Kernel, and for crt0.o. These special cases are handled individually.
2020-05-15LibM: Fix floor() and floorf() for negative numbersAndreas Kling
And add a LibJS test to exercise the code. :^)
2020-05-15LibM: Add floorf() for @rexim :^)Andreas Kling
2020-05-14Build: Switch to CMake :^)Sergey Bugaev
Closes https://github.com/SerenityOS/serenity/issues/2080
2020-05-02LibM: Implement fmodf()Valtteri Koskivuori
2020-04-15LibM: Add (not very good) round() implementationAndreas Kling
2020-04-06LibM: Improve pow() and powf()Linus Groh
2020-04-06LibM: Fix ceil() and ceilf() for negative numbersLinus Groh
These functions are using a naive approach: casting double/float to int and returning the result + 1. That increment by one must only happen for positive input values though.
2020-02-25LibM: Implement floating point variants of various math functionsValtteri Koskivuori
2020-02-06LibM: Install immediately after buildingAndreas Kling
2020-01-18Meta: Add license header to source filesAndreas Kling
As suggested by Joshua, this commit adds the 2-clause BSD license as a comment block to the top of every source file. For the first pass, I've just added myself for simplicity. I encourage everyone to add themselves as copyright holders of any file they've added or modified in some significant way. If I've added myself in error somewhere, feel free to replace it with the appropriate copyright holder instead. Going forward, all new source files should include a license header.
2020-01-13LibM: Implement some naive functionality to make VVVVVV runAndreas Kling
2019-12-20Build: clean up build system, use one shared Makefilejoshua stein
Allow everything to be built from the top level directory with just 'make', cleaned with 'make clean', and installed with 'make install'. Also support these in any particular subdirectory. Specifying 'make VERBOSE=1' will print each ld/g++/etc. command as it runs. Kernel and early host tools (IPCCompiler, etc.) are built as object.host.o so that they don't conflict with other things built with the cross-compiler.
2019-12-10LibM: Implement pow()Valtteri Koskivuori
2019-11-11LibC, LibM: Add functions needed to compile python3Emanuel Sprung
2019-11-03LibM: Add back ampsin() since it was still used by tan()Andreas Kling
2019-11-03LibM: Fixed sin() precision (#726)Jesse
The old implementation of sin() had a very unacceptable amount of error that was causing a lot of texture perspective issues in Quake. This has been remedied through the use of the hardware `fsin` x87 instruction. As has been noted in #246, this instruction is both very slow, and can become wildly inaccurate for more precise values, however the current implementation made an incorrect assumption about applications "will end up writing their own implemtnation anyways", which is not the case for Quake in Software mode, which relies heavily on a correct `sin()` and `cos()` function for `R_ScanEdges()`. Realistically, we should be using something like the CORDIC algorithm (https://en.wikipedia.org/wiki/CORDIC) or `Taylor Expansion`, however for now these provides a somewhat accurate result that allows Quake to run without any texture or geometry issues.
2019-11-03POSIX compliance: (most) shell scripts converted to generic shellGeorge Pickering
Ports/.port_include.sh, Toolchain/BuildIt.sh, Toolchain/UseIt.sh have been left largely untouched due to use of Bash-exclusive functions and variables such as $BASH_SOURCE, pushd and popd.
2019-10-20LibM: Make roundf() and ceilf() slightly less terribleAndreas Kling
These implementations still don't handle all of the corner cases that are possible, but at least they are somewhat usable now.
2019-10-20LibM: Add dummy implementations of roundf() and ceilf()Andreas Kling
I though I could just use __builtin_roundf() and __builtin_ceilf() but it seems like I can't, as they just become calls to roundf and ceilf.
2019-10-17LibM: Implement various functions.Andreas Kling
Path from Anonymous.
2019-09-29LibM: Fix Toolchain buildAndreas Kling
We can't rely on libstdc++ inside LibC or LibM, since these libraries are part of the Toolchain bringup build.
2019-09-29LibM: Implement various trig functionsAndreas Kling
Patch from Anonymous.
2019-08-10LibM: Implement sqrt()Sergey Bugaev
Use the x87 fsqrt instruction for that. We cannot use __builtin_sqrt(), since GCC expands it into a sqrt() call, so we just loop endlessly.
2019-07-21Libraries: Fix wrong paths to "Root" in the various install.sh scripts.Andreas Kling
We were installing libraries into /Libraries/Root, rather than in /Root. This made the ports system behave rather unpredictable, since I had old versions of things in /Root and new versions of things in /Libraries/Root.
2019-07-21Libraries: Remove unused "install" targets.Andreas Kling
We've been using a per-directory "install.sh" for some time, so let's get rid of the old way of doing things.
2019-07-04Libraries: Unbreak "make install" with new directory locations.Andreas Kling
2019-07-04Libraries: Create top level directory for libraries.Andreas Kling
Things were getting a little crowded in the project root, so this patch moves the Lib*/ directories into Libraries/.